diff options
533 files changed, 61441 insertions, 3 deletions
diff --git a/DESCRIPTION b/DESCRIPTION index dcaf8f48..8a32ac14 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: mkin Type: Package Title: Kinetic Evaluation of Chemical Degradation Data -Version: 1.2.9 -Date: 2025-02-13 +Version: 1.2.10 +Date: 2025-02-14 Authors@R: c( person("Johannes", "Ranke", role = c("aut", "cre", "cph"), email = "johannes.ranke@jrwb.de", @@ -1,4 +1,8 @@ -# mkin 1.2.9 +# mkin 1.2.9.9000 (unreleased) + + + +# mkin 1.2.9 (2024-02-13) - 'R/plot.mixed.R': Support more than 25 datasets diff --git a/docs/dev/articles/FOCUS_D.html b/docs/dev/articles/FOCUS_D.html new file mode 100644 index 00000000..a21ed6d4 --- /dev/null +++ b/docs/dev/articles/FOCUS_D.html @@ -0,0 +1,338 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Example evaluation of FOCUS Example Dataset D • mkin</title> +<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Example evaluation of FOCUS Example Dataset D"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Example evaluation of FOCUS Example Dataset D</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 31 January 2019 +(rebuilt 2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/FOCUS_D.rmd" class="external-link"><code>vignettes/FOCUS_D.rmd</code></a></small> + <div class="d-none name"><code>FOCUS_D.rmd</code></div> + </div> + + + +<p>This is just a very simple vignette showing how to fit a degradation +model for a parent compound with one transformation product using +<code>mkin</code>. After loading the library we look at the data. We +have observed concentrations in the column named <code>value</code> at +the times specified in column <code>time</code> for the two observed +variables named <code>parent</code> and <code>m1</code>.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span>, quietly <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## name time value</span></span> +<span><span class="co">## 1 parent 0 99.46</span></span> +<span><span class="co">## 2 parent 0 102.04</span></span> +<span><span class="co">## 3 parent 1 93.50</span></span> +<span><span class="co">## 4 parent 1 92.50</span></span> +<span><span class="co">## 5 parent 3 63.23</span></span> +<span><span class="co">## 6 parent 3 68.99</span></span> +<span><span class="co">## 7 parent 7 52.32</span></span> +<span><span class="co">## 8 parent 7 55.13</span></span> +<span><span class="co">## 9 parent 14 27.27</span></span> +<span><span class="co">## 10 parent 14 26.64</span></span> +<span><span class="co">## 11 parent 21 11.50</span></span> +<span><span class="co">## 12 parent 21 11.64</span></span> +<span><span class="co">## 13 parent 35 2.85</span></span> +<span><span class="co">## 14 parent 35 2.91</span></span> +<span><span class="co">## 15 parent 50 0.69</span></span> +<span><span class="co">## 16 parent 50 0.63</span></span> +<span><span class="co">## 17 parent 75 0.05</span></span> +<span><span class="co">## 18 parent 75 0.06</span></span> +<span><span class="co">## 19 parent 100 NA</span></span> +<span><span class="co">## 20 parent 100 NA</span></span> +<span><span class="co">## 21 parent 120 NA</span></span> +<span><span class="co">## 22 parent 120 NA</span></span> +<span><span class="co">## 23 m1 0 0.00</span></span> +<span><span class="co">## 24 m1 0 0.00</span></span> +<span><span class="co">## 25 m1 1 4.84</span></span> +<span><span class="co">## 26 m1 1 5.64</span></span> +<span><span class="co">## 27 m1 3 12.91</span></span> +<span><span class="co">## 28 m1 3 12.96</span></span> +<span><span class="co">## 29 m1 7 22.97</span></span> +<span><span class="co">## 30 m1 7 24.47</span></span> +<span><span class="co">## 31 m1 14 41.69</span></span> +<span><span class="co">## 32 m1 14 33.21</span></span> +<span><span class="co">## 33 m1 21 44.37</span></span> +<span><span class="co">## 34 m1 21 46.44</span></span> +<span><span class="co">## 35 m1 35 41.22</span></span> +<span><span class="co">## 36 m1 35 37.95</span></span> +<span><span class="co">## 37 m1 50 41.19</span></span> +<span><span class="co">## 38 m1 50 40.01</span></span> +<span><span class="co">## 39 m1 75 40.09</span></span> +<span><span class="co">## 40 m1 75 33.85</span></span> +<span><span class="co">## 41 m1 100 31.04</span></span> +<span><span class="co">## 42 m1 100 33.13</span></span> +<span><span class="co">## 43 m1 120 25.15</span></span> +<span><span class="co">## 44 m1 120 33.31</span></span></code></pre> +<p>Next we specify the degradation model: The parent compound degrades +with simple first-order kinetics (SFO) to one metabolite named m1, which +also degrades with SFO kinetics.</p> +<p>The call to mkinmod returns a degradation model. The differential +equations represented in R code can be found in the character vector +<code>$diffs</code> of the <code>mkinmod</code> object. If a C compiler +(gcc) is installed and functional, the differential equation model will +be compiled from auto-generated C code.</p> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>, m1 <span class="op">=</span> <span class="fu"><a href="../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">SFO_SFO</span><span class="op">$</span><span class="va">diffs</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## parent </span></span> +<span><span class="co">## "d_parent = - k_parent * parent" </span></span> +<span><span class="co">## m1 </span></span> +<span><span class="co">## "d_m1 = + f_parent_to_m1 * k_parent * parent - k_m1 * m1"</span></span></code></pre> +<p>We do the fitting without progress report +(<code>quiet = TRUE</code>).</p> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(SFO_SFO, FOCUS_2006_D, quiet = TRUE): Observations with</span></span> +<span><span class="co">## value of zero were removed from the data</span></span></code></pre> +<p>A plot of the fit including a residual plot for both observed +variables is obtained using the <code>plot_sep</code> method for +<code>mkinfit</code> objects, which shows separate graphs for all +compounds and their residuals.</p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">fit</span>, lpos <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"topright"</span>, <span class="st">"bottomright"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_D_files/figure-html/plot-1.png" width="768"></p> +<p>Confidence intervals for the parameter estimates are obtained using +the <code>mkinparplot</code> function.</p> +<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../reference/mkinparplot.html">mkinparplot</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_D_files/figure-html/plot_2-1.png" width="768"></p> +<p>A comprehensive report of the results is obtained using the +<code>summary</code> method for <code>mkinfit</code> objects.</p> +<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## mkin version used for fitting: 1.2.10 </span></span> +<span><span class="co">## R version used for fitting: 4.4.2 </span></span> +<span><span class="co">## Date of fit: Fri Feb 14 08:59:09 2025 </span></span> +<span><span class="co">## Date of summary: Fri Feb 14 08:59:09 2025 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Equations:</span></span> +<span><span class="co">## d_parent/dt = - k_parent * parent</span></span> +<span><span class="co">## d_m1/dt = + f_parent_to_m1 * k_parent * parent - k_m1 * m1</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Model predictions using solution type analytical </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fitted using 401 model solutions performed in 0.053 s</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model: Constant variance </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model algorithm: OLS </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for parameters to be optimised:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## parent_0 100.7500 state</span></span> +<span><span class="co">## k_parent 0.1000 deparm</span></span> +<span><span class="co">## k_m1 0.1001 deparm</span></span> +<span><span class="co">## f_parent_to_m1 0.5000 deparm</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for the transformed parameters actually optimised:</span></span> +<span><span class="co">## value lower upper</span></span> +<span><span class="co">## parent_0 100.750000 -Inf Inf</span></span> +<span><span class="co">## log_k_parent -2.302585 -Inf Inf</span></span> +<span><span class="co">## log_k_m1 -2.301586 -Inf Inf</span></span> +<span><span class="co">## f_parent_qlogis 0.000000 -Inf Inf</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fixed parameter values:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## m1_0 0 state</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Warning(s): </span></span> +<span><span class="co">## Observations with value of zero were removed from the data</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Results:</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## AIC BIC logLik</span></span> +<span><span class="co">## 204.4486 212.6365 -97.22429</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Optimised, transformed parameters with symmetric confidence intervals:</span></span> +<span><span class="co">## Estimate Std. Error Lower Upper</span></span> +<span><span class="co">## parent_0 99.60000 1.57000 96.4000 102.8000</span></span> +<span><span class="co">## log_k_parent -2.31600 0.04087 -2.3990 -2.2330</span></span> +<span><span class="co">## log_k_m1 -5.24700 0.13320 -5.5180 -4.9770</span></span> +<span><span class="co">## f_parent_qlogis 0.05792 0.08926 -0.1237 0.2395</span></span> +<span><span class="co">## sigma 3.12600 0.35850 2.3960 3.8550</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameter correlation:</span></span> +<span><span class="co">## parent_0 log_k_parent log_k_m1 f_parent_qlogis sigma</span></span> +<span><span class="co">## parent_0 1.000e+00 5.174e-01 -1.688e-01 -5.471e-01 -1.172e-06</span></span> +<span><span class="co">## log_k_parent 5.174e-01 1.000e+00 -3.263e-01 -5.426e-01 -8.479e-07</span></span> +<span><span class="co">## log_k_m1 -1.688e-01 -3.263e-01 1.000e+00 7.478e-01 8.211e-07</span></span> +<span><span class="co">## f_parent_qlogis -5.471e-01 -5.426e-01 7.478e-01 1.000e+00 1.305e-06</span></span> +<span><span class="co">## sigma -1.172e-06 -8.479e-07 8.211e-07 1.305e-06 1.000e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Backtransformed parameters:</span></span> +<span><span class="co">## Confidence intervals for internally transformed parameters are asymmetric.</span></span> +<span><span class="co">## t-test (unrealistically) based on the assumption of normal distribution</span></span> +<span><span class="co">## for estimators of untransformed parameters.</span></span> +<span><span class="co">## Estimate t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 99.600000 63.430 2.298e-36 96.400000 1.028e+02</span></span> +<span><span class="co">## k_parent 0.098700 24.470 4.955e-23 0.090820 1.073e-01</span></span> +<span><span class="co">## k_m1 0.005261 7.510 6.165e-09 0.004012 6.898e-03</span></span> +<span><span class="co">## f_parent_to_m1 0.514500 23.070 3.104e-22 0.469100 5.596e-01</span></span> +<span><span class="co">## sigma 3.126000 8.718 2.235e-10 2.396000 3.855e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## FOCUS Chi2 error levels in percent:</span></span> +<span><span class="co">## err.min n.optim df</span></span> +<span><span class="co">## All data 6.398 4 15</span></span> +<span><span class="co">## parent 6.459 2 7</span></span> +<span><span class="co">## m1 4.690 2 8</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Resulting formation fractions:</span></span> +<span><span class="co">## ff</span></span> +<span><span class="co">## parent_m1 0.5145</span></span> +<span><span class="co">## parent_sink 0.4855</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Estimated disappearance times:</span></span> +<span><span class="co">## DT50 DT90</span></span> +<span><span class="co">## parent 7.023 23.33</span></span> +<span><span class="co">## m1 131.761 437.70</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Data:</span></span> +<span><span class="co">## time variable observed predicted residual</span></span> +<span><span class="co">## 0 parent 99.46 99.59848 -1.385e-01</span></span> +<span><span class="co">## 0 parent 102.04 99.59848 2.442e+00</span></span> +<span><span class="co">## 1 parent 93.50 90.23787 3.262e+00</span></span> +<span><span class="co">## 1 parent 92.50 90.23787 2.262e+00</span></span> +<span><span class="co">## 3 parent 63.23 74.07319 -1.084e+01</span></span> +<span><span class="co">## 3 parent 68.99 74.07319 -5.083e+00</span></span> +<span><span class="co">## 7 parent 52.32 49.91207 2.408e+00</span></span> +<span><span class="co">## 7 parent 55.13 49.91207 5.218e+00</span></span> +<span><span class="co">## 14 parent 27.27 25.01258 2.257e+00</span></span> +<span><span class="co">## 14 parent 26.64 25.01258 1.627e+00</span></span> +<span><span class="co">## 21 parent 11.50 12.53462 -1.035e+00</span></span> +<span><span class="co">## 21 parent 11.64 12.53462 -8.946e-01</span></span> +<span><span class="co">## 35 parent 2.85 3.14787 -2.979e-01</span></span> +<span><span class="co">## 35 parent 2.91 3.14787 -2.379e-01</span></span> +<span><span class="co">## 50 parent 0.69 0.71624 -2.624e-02</span></span> +<span><span class="co">## 50 parent 0.63 0.71624 -8.624e-02</span></span> +<span><span class="co">## 75 parent 0.05 0.06074 -1.074e-02</span></span> +<span><span class="co">## 75 parent 0.06 0.06074 -7.382e-04</span></span> +<span><span class="co">## 1 m1 4.84 4.80296 3.704e-02</span></span> +<span><span class="co">## 1 m1 5.64 4.80296 8.370e-01</span></span> +<span><span class="co">## 3 m1 12.91 13.02400 -1.140e-01</span></span> +<span><span class="co">## 3 m1 12.96 13.02400 -6.400e-02</span></span> +<span><span class="co">## 7 m1 22.97 25.04476 -2.075e+00</span></span> +<span><span class="co">## 7 m1 24.47 25.04476 -5.748e-01</span></span> +<span><span class="co">## 14 m1 41.69 36.69003 5.000e+00</span></span> +<span><span class="co">## 14 m1 33.21 36.69003 -3.480e+00</span></span> +<span><span class="co">## 21 m1 44.37 41.65310 2.717e+00</span></span> +<span><span class="co">## 21 m1 46.44 41.65310 4.787e+00</span></span> +<span><span class="co">## 35 m1 41.22 43.31313 -2.093e+00</span></span> +<span><span class="co">## 35 m1 37.95 43.31313 -5.363e+00</span></span> +<span><span class="co">## 50 m1 41.19 41.21832 -2.832e-02</span></span> +<span><span class="co">## 50 m1 40.01 41.21832 -1.208e+00</span></span> +<span><span class="co">## 75 m1 40.09 36.44704 3.643e+00</span></span> +<span><span class="co">## 75 m1 33.85 36.44704 -2.597e+00</span></span> +<span><span class="co">## 100 m1 31.04 31.98162 -9.416e-01</span></span> +<span><span class="co">## 100 m1 33.13 31.98162 1.148e+00</span></span> +<span><span class="co">## 120 m1 25.15 28.78984 -3.640e+00</span></span> +<span><span class="co">## 120 m1 33.31 28.78984 4.520e+00</span></span></code></pre> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/FOCUS_D_files/figure-html/plot-1.png b/docs/dev/articles/FOCUS_D_files/figure-html/plot-1.png Binary files differnew file mode 100644 index 00000000..c0832a1a --- /dev/null +++ b/docs/dev/articles/FOCUS_D_files/figure-html/plot-1.png diff --git a/docs/dev/articles/FOCUS_D_files/figure-html/plot_2-1.png b/docs/dev/articles/FOCUS_D_files/figure-html/plot_2-1.png Binary files differnew file mode 100644 index 00000000..02cfcfb4 --- /dev/null +++ b/docs/dev/articles/FOCUS_D_files/figure-html/plot_2-1.png diff --git a/docs/dev/articles/FOCUS_L.html b/docs/dev/articles/FOCUS_L.html new file mode 100644 index 00000000..badf4822 --- /dev/null +++ b/docs/dev/articles/FOCUS_L.html @@ -0,0 +1,894 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Example evaluation of FOCUS Laboratory Data L1 to L3 • mkin</title> +<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Example evaluation of FOCUS Laboratory Data L1 to L3"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Example evaluation of FOCUS Laboratory Data L1 to L3</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 18 May 2023 +(rebuilt 2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/FOCUS_L.rmd" class="external-link"><code>vignettes/FOCUS_L.rmd</code></a></small> + <div class="d-none name"><code>FOCUS_L.rmd</code></div> + </div> + + + +<div class="section level2"> +<h2 id="laboratory-data-l1">Laboratory Data L1<a class="anchor" aria-label="anchor" href="#laboratory-data-l1"></a> +</h2> +<p>The following code defines example dataset L1 from the FOCUS kinetics +report, p. 284:</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="st"><a href="https://pkgdown.jrwb.de/mkin/">"mkin"</a></span>, quietly <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="va">FOCUS_2006_L1</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span> +<span> t <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">2</span>, <span class="fl">3</span>, <span class="fl">5</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">21</span>, <span class="fl">30</span><span class="op">)</span>, each <span class="op">=</span> <span class="fl">2</span><span class="op">)</span>,</span> +<span> parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">88.3</span>, <span class="fl">91.4</span>, <span class="fl">85.6</span>, <span class="fl">84.5</span>, <span class="fl">78.9</span>, <span class="fl">77.6</span>,</span> +<span> <span class="fl">72.0</span>, <span class="fl">71.9</span>, <span class="fl">50.3</span>, <span class="fl">59.4</span>, <span class="fl">47.0</span>, <span class="fl">45.1</span>,</span> +<span> <span class="fl">27.7</span>, <span class="fl">27.3</span>, <span class="fl">10.0</span>, <span class="fl">10.4</span>, <span class="fl">2.9</span>, <span class="fl">4.0</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="va">FOCUS_2006_L1_mkin</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">FOCUS_2006_L1</span><span class="op">)</span></span></code></pre></div> +<p>Here we use the assumptions of simple first order (SFO), the case of +declining rate constant over time (FOMC) and the case of two different +phases of the kinetics (DFOP). For a more detailed discussion of the +models, please see the FOCUS kinetics report.</p> +<p>Since mkin version 0.9-32 (July 2014), we can use shorthand notation +like <code>"SFO"</code> for parent only degradation models. The +following two lines fit the model and produce the summary report of the +model fit. This covers the numerical analysis given in the FOCUS +report.</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.L1.SFO</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">FOCUS_2006_L1_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.L1.SFO</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## mkin version used for fitting: 1.2.10 </span></span> +<span><span class="co">## R version used for fitting: 4.4.2 </span></span> +<span><span class="co">## Date of fit: Fri Feb 14 08:59:11 2025 </span></span> +<span><span class="co">## Date of summary: Fri Feb 14 08:59:11 2025 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Equations:</span></span> +<span><span class="co">## d_parent/dt = - k_parent * parent</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Model predictions using solution type analytical </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fitted using 133 model solutions performed in 0.01 s</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model: Constant variance </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model algorithm: OLS </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for parameters to be optimised:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## parent_0 89.85 state</span></span> +<span><span class="co">## k_parent 0.10 deparm</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for the transformed parameters actually optimised:</span></span> +<span><span class="co">## value lower upper</span></span> +<span><span class="co">## parent_0 89.850000 -Inf Inf</span></span> +<span><span class="co">## log_k_parent -2.302585 -Inf Inf</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fixed parameter values:</span></span> +<span><span class="co">## None</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Results:</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## AIC BIC logLik</span></span> +<span><span class="co">## 93.88778 96.5589 -43.94389</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Optimised, transformed parameters with symmetric confidence intervals:</span></span> +<span><span class="co">## Estimate Std. Error Lower Upper</span></span> +<span><span class="co">## parent_0 92.470 1.28200 89.740 95.200</span></span> +<span><span class="co">## log_k_parent -2.347 0.03763 -2.428 -2.267</span></span> +<span><span class="co">## sigma 2.780 0.46330 1.792 3.767</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameter correlation:</span></span> +<span><span class="co">## parent_0 log_k_parent sigma</span></span> +<span><span class="co">## parent_0 1.000e+00 6.186e-01 -1.516e-09</span></span> +<span><span class="co">## log_k_parent 6.186e-01 1.000e+00 -3.124e-09</span></span> +<span><span class="co">## sigma -1.516e-09 -3.124e-09 1.000e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Backtransformed parameters:</span></span> +<span><span class="co">## Confidence intervals for internally transformed parameters are asymmetric.</span></span> +<span><span class="co">## t-test (unrealistically) based on the assumption of normal distribution</span></span> +<span><span class="co">## for estimators of untransformed parameters.</span></span> +<span><span class="co">## Estimate t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 92.47000 72.13 8.824e-21 89.74000 95.2000</span></span> +<span><span class="co">## k_parent 0.09561 26.57 2.487e-14 0.08824 0.1036</span></span> +<span><span class="co">## sigma 2.78000 6.00 1.216e-05 1.79200 3.7670</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## FOCUS Chi2 error levels in percent:</span></span> +<span><span class="co">## err.min n.optim df</span></span> +<span><span class="co">## All data 3.424 2 7</span></span> +<span><span class="co">## parent 3.424 2 7</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Estimated disappearance times:</span></span> +<span><span class="co">## DT50 DT90</span></span> +<span><span class="co">## parent 7.249 24.08</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Data:</span></span> +<span><span class="co">## time variable observed predicted residual</span></span> +<span><span class="co">## 0 parent 88.3 92.471 -4.1710</span></span> +<span><span class="co">## 0 parent 91.4 92.471 -1.0710</span></span> +<span><span class="co">## 1 parent 85.6 84.039 1.5610</span></span> +<span><span class="co">## 1 parent 84.5 84.039 0.4610</span></span> +<span><span class="co">## 2 parent 78.9 76.376 2.5241</span></span> +<span><span class="co">## 2 parent 77.6 76.376 1.2241</span></span> +<span><span class="co">## 3 parent 72.0 69.412 2.5884</span></span> +<span><span class="co">## 3 parent 71.9 69.412 2.4884</span></span> +<span><span class="co">## 5 parent 50.3 57.330 -7.0301</span></span> +<span><span class="co">## 5 parent 59.4 57.330 2.0699</span></span> +<span><span class="co">## 7 parent 47.0 47.352 -0.3515</span></span> +<span><span class="co">## 7 parent 45.1 47.352 -2.2515</span></span> +<span><span class="co">## 14 parent 27.7 24.247 3.4528</span></span> +<span><span class="co">## 14 parent 27.3 24.247 3.0528</span></span> +<span><span class="co">## 21 parent 10.0 12.416 -2.4163</span></span> +<span><span class="co">## 21 parent 10.4 12.416 -2.0163</span></span> +<span><span class="co">## 30 parent 2.9 5.251 -2.3513</span></span> +<span><span class="co">## 30 parent 4.0 5.251 -1.2513</span></span></code></pre> +<p>A plot of the fit is obtained with the plot function for mkinfit +objects.</p> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">m.L1.SFO</span>, show_errmin <span class="op">=</span> <span class="cn">TRUE</span>, main <span class="op">=</span> <span class="st">"FOCUS L1 - SFO"</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-4-1.png" width="576"></p> +<p>The residual plot can be easily obtained by</p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../reference/mkinresplot.html">mkinresplot</a></span><span class="op">(</span><span class="va">m.L1.SFO</span>, ylab <span class="op">=</span> <span class="st">"Observed"</span>, xlab <span class="op">=</span> <span class="st">"Time"</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-5-1.png" width="576"></p> +<p>For comparison, the FOMC model is fitted as well, and the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level is checked.</p> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.L1.FOMC</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">FOCUS_2006_L1_mkin</span>, quiet<span class="op">=</span><span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit("FOMC", FOCUS_2006_L1_mkin, quiet = TRUE): Optimisation did not converge:</span></span> +<span><span class="co">## false convergence (8)</span></span></code></pre> +<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">m.L1.FOMC</span>, show_errmin <span class="op">=</span> <span class="cn">TRUE</span>, main <span class="op">=</span> <span class="st">"FOCUS L1 - FOMC"</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-6-1.png" width="576"></p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.L1.FOMC</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in sqrt(diag(covar)): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## Warning in cov2cor(ans$covar): diag(V) had non-positive or NA entries; the</span></span> +<span><span class="co">## non-finite result may be dubious</span></span></code></pre> +<pre><code><span><span class="co">## mkin version used for fitting: 1.2.10 </span></span> +<span><span class="co">## R version used for fitting: 4.4.2 </span></span> +<span><span class="co">## Date of fit: Fri Feb 14 08:59:11 2025 </span></span> +<span><span class="co">## Date of summary: Fri Feb 14 08:59:11 2025 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Equations:</span></span> +<span><span class="co">## d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Model predictions using solution type analytical </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fitted using 342 model solutions performed in 0.023 s</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model: Constant variance </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model algorithm: OLS </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for parameters to be optimised:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## parent_0 89.85 state</span></span> +<span><span class="co">## alpha 1.00 deparm</span></span> +<span><span class="co">## beta 10.00 deparm</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for the transformed parameters actually optimised:</span></span> +<span><span class="co">## value lower upper</span></span> +<span><span class="co">## parent_0 89.850000 -Inf Inf</span></span> +<span><span class="co">## log_alpha 0.000000 -Inf Inf</span></span> +<span><span class="co">## log_beta 2.302585 -Inf Inf</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fixed parameter values:</span></span> +<span><span class="co">## None</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Warning(s): </span></span> +<span><span class="co">## Optimisation did not converge:</span></span> +<span><span class="co">## false convergence (8)</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Results:</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## AIC BIC logLik</span></span> +<span><span class="co">## 95.88782 99.44931 -43.94391</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Optimised, transformed parameters with symmetric confidence intervals:</span></span> +<span><span class="co">## Estimate Std. Error Lower Upper</span></span> +<span><span class="co">## parent_0 92.47 1.2820 89.720 95.220</span></span> +<span><span class="co">## log_alpha 13.20 NaN NaN NaN</span></span> +<span><span class="co">## log_beta 15.54 NaN NaN NaN</span></span> +<span><span class="co">## sigma 2.78 0.4607 1.792 3.768</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameter correlation:</span></span> +<span><span class="co">## parent_0 log_alpha log_beta sigma</span></span> +<span><span class="co">## parent_0 1.000000 NaN NaN 0.000603</span></span> +<span><span class="co">## log_alpha NaN 1 NaN NaN</span></span> +<span><span class="co">## log_beta NaN NaN 1 NaN</span></span> +<span><span class="co">## sigma 0.000603 NaN NaN 1.000000</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Backtransformed parameters:</span></span> +<span><span class="co">## Confidence intervals for internally transformed parameters are asymmetric.</span></span> +<span><span class="co">## t-test (unrealistically) based on the assumption of normal distribution</span></span> +<span><span class="co">## for estimators of untransformed parameters.</span></span> +<span><span class="co">## Estimate t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.247e+01 NA NA 89.720 95.220</span></span> +<span><span class="co">## alpha 5.386e+05 NA NA NA NA</span></span> +<span><span class="co">## beta 5.633e+06 NA NA NA NA</span></span> +<span><span class="co">## sigma 2.780e+00 NA NA 1.792 3.768</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## FOCUS Chi2 error levels in percent:</span></span> +<span><span class="co">## err.min n.optim df</span></span> +<span><span class="co">## All data 3.619 3 6</span></span> +<span><span class="co">## parent 3.619 3 6</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Estimated disappearance times:</span></span> +<span><span class="co">## DT50 DT90 DT50back</span></span> +<span><span class="co">## parent 7.249 24.08 7.249</span></span></code></pre> +<p>We get a warning that the default optimisation algorithm +<code>Port</code> did not converge, which is an indication that the +model is overparameterised, <em>i.e.</em> contains too many parameters +that are ill-defined as a consequence.</p> +<p>And in fact, due to the higher number of parameters, and the lower +number of degrees of freedom of the fit, the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level is actually higher for the FOMC model (3.6%) than for the +SFO model (3.4%). Additionally, the parameters <code>log_alpha</code> +and <code>log_beta</code> internally fitted in the model have excessive +confidence intervals, that span more than 25 orders of magnitude (!) +when backtransformed to the scale of <code>alpha</code> and +<code>beta</code>. Also, the t-test for significant difference from zero +does not indicate such a significant difference, with p-values greater +than 0.1, and finally, the parameter correlation of +<code>log_alpha</code> and <code>log_beta</code> is 1.000, clearly +indicating that the model is overparameterised.</p> +<p>The +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error levels reported in Appendix 3 and Appendix 7 to the FOCUS kinetics +report are rounded to integer percentages and partly deviate by one +percentage point from the results calculated by mkin. The reason for +this is not known. However, mkin gives the same +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error levels as the kinfit package and the calculation routines of the +kinfit package have been extensively compared to the results obtained by +the KinGUI software, as documented in the kinfit package vignette. +KinGUI was the first widely used standard package in this field. Also, +the calculation of +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error levels was compared with KinGUII, CAKE and DegKin manager in a +project sponsored by the German Umweltbundesamt <span class="citation">(Ranke 2014)</span>.</p> +</div> +<div class="section level2"> +<h2 id="laboratory-data-l2">Laboratory Data L2<a class="anchor" aria-label="anchor" href="#laboratory-data-l2"></a> +</h2> +<p>The following code defines example dataset L2 from the FOCUS kinetics +report, p. 287:</p> +<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">FOCUS_2006_L2</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span> +<span> t <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span><span class="op">)</span>, each <span class="op">=</span> <span class="fl">2</span><span class="op">)</span>,</span> +<span> parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">96.1</span>, <span class="fl">91.8</span>, <span class="fl">41.4</span>, <span class="fl">38.7</span>,</span> +<span> <span class="fl">19.3</span>, <span class="fl">22.3</span>, <span class="fl">4.6</span>, <span class="fl">4.6</span>,</span> +<span> <span class="fl">2.6</span>, <span class="fl">1.2</span>, <span class="fl">0.3</span>, <span class="fl">0.6</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="va">FOCUS_2006_L2_mkin</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">FOCUS_2006_L2</span><span class="op">)</span></span></code></pre></div> +<div class="section level3"> +<h3 id="sfo-fit-for-l2">SFO fit for L2<a class="anchor" aria-label="anchor" href="#sfo-fit-for-l2"></a> +</h3> +<p>Again, the SFO model is fitted and the result is plotted. The +residual plot can be obtained simply by adding the argument +<code>show_residuals</code> to the plot command.</p> +<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.L2.SFO</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">FOCUS_2006_L2_mkin</span>, quiet<span class="op">=</span><span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">m.L2.SFO</span>, show_residuals <span class="op">=</span> <span class="cn">TRUE</span>, show_errmin <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> main <span class="op">=</span> <span class="st">"FOCUS L2 - SFO"</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-8-1.png" width="672"></p> +<p>The +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level of 14% suggests that the model does not fit very well. This +is also obvious from the plots of the fit, in which we have included the +residual plot.</p> +<p>In the FOCUS kinetics report, it is stated that there is no apparent +systematic error observed from the residual plot up to the measured DT90 +(approximately at day 5), and there is an underestimation beyond that +point.</p> +<p>We may add that it is difficult to judge the random nature of the +residuals just from the three samplings at days 0, 1 and 3. Also, it is +not clear <em>a priori</em> why a consistent underestimation after the +approximate DT90 should be irrelevant. However, this can be rationalised +by the fact that the FOCUS fate models generally only implement SFO +kinetics.</p> +</div> +<div class="section level3"> +<h3 id="fomc-fit-for-l2">FOMC fit for L2<a class="anchor" aria-label="anchor" href="#fomc-fit-for-l2"></a> +</h3> +<p>For comparison, the FOMC model is fitted as well, and the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level is checked.</p> +<div class="sourceCode" id="cb15"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.L2.FOMC</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">FOCUS_2006_L2_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">m.L2.FOMC</span>, show_residuals <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> main <span class="op">=</span> <span class="st">"FOCUS L2 - FOMC"</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-9-1.png" width="672"></p> +<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.L2.FOMC</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## mkin version used for fitting: 1.2.10 </span></span> +<span><span class="co">## R version used for fitting: 4.4.2 </span></span> +<span><span class="co">## Date of fit: Fri Feb 14 08:59:12 2025 </span></span> +<span><span class="co">## Date of summary: Fri Feb 14 08:59:12 2025 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Equations:</span></span> +<span><span class="co">## d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Model predictions using solution type analytical </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fitted using 239 model solutions performed in 0.015 s</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model: Constant variance </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model algorithm: OLS </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for parameters to be optimised:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## parent_0 93.95 state</span></span> +<span><span class="co">## alpha 1.00 deparm</span></span> +<span><span class="co">## beta 10.00 deparm</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for the transformed parameters actually optimised:</span></span> +<span><span class="co">## value lower upper</span></span> +<span><span class="co">## parent_0 93.950000 -Inf Inf</span></span> +<span><span class="co">## log_alpha 0.000000 -Inf Inf</span></span> +<span><span class="co">## log_beta 2.302585 -Inf Inf</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fixed parameter values:</span></span> +<span><span class="co">## None</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Results:</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## AIC BIC logLik</span></span> +<span><span class="co">## 61.78966 63.72928 -26.89483</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Optimised, transformed parameters with symmetric confidence intervals:</span></span> +<span><span class="co">## Estimate Std. Error Lower Upper</span></span> +<span><span class="co">## parent_0 93.7700 1.6130 90.05000 97.4900</span></span> +<span><span class="co">## log_alpha 0.3180 0.1559 -0.04149 0.6776</span></span> +<span><span class="co">## log_beta 0.2102 0.2493 -0.36460 0.7850</span></span> +<span><span class="co">## sigma 2.2760 0.4645 1.20500 3.3470</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameter correlation:</span></span> +<span><span class="co">## parent_0 log_alpha log_beta sigma</span></span> +<span><span class="co">## parent_0 1.000e+00 -1.151e-01 -2.085e-01 -7.436e-09</span></span> +<span><span class="co">## log_alpha -1.151e-01 1.000e+00 9.741e-01 -1.617e-07</span></span> +<span><span class="co">## log_beta -2.085e-01 9.741e-01 1.000e+00 -1.386e-07</span></span> +<span><span class="co">## sigma -7.436e-09 -1.617e-07 -1.386e-07 1.000e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Backtransformed parameters:</span></span> +<span><span class="co">## Confidence intervals for internally transformed parameters are asymmetric.</span></span> +<span><span class="co">## t-test (unrealistically) based on the assumption of normal distribution</span></span> +<span><span class="co">## for estimators of untransformed parameters.</span></span> +<span><span class="co">## Estimate t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 93.770 58.120 4.267e-12 90.0500 97.490</span></span> +<span><span class="co">## alpha 1.374 6.414 1.030e-04 0.9594 1.969</span></span> +<span><span class="co">## beta 1.234 4.012 1.942e-03 0.6945 2.192</span></span> +<span><span class="co">## sigma 2.276 4.899 5.977e-04 1.2050 3.347</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## FOCUS Chi2 error levels in percent:</span></span> +<span><span class="co">## err.min n.optim df</span></span> +<span><span class="co">## All data 6.205 3 3</span></span> +<span><span class="co">## parent 6.205 3 3</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Estimated disappearance times:</span></span> +<span><span class="co">## DT50 DT90 DT50back</span></span> +<span><span class="co">## parent 0.8092 5.356 1.612</span></span></code></pre> +<p>The error level at which the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +test passes is much lower in this case. Therefore, the FOMC model +provides a better description of the data, as less experimental error +has to be assumed in order to explain the data.</p> +</div> +<div class="section level3"> +<h3 id="dfop-fit-for-l2">DFOP fit for L2<a class="anchor" aria-label="anchor" href="#dfop-fit-for-l2"></a> +</h3> +<p>Fitting the four parameter DFOP model further reduces the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level.</p> +<div class="sourceCode" id="cb18"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.L2.DFOP</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="va">FOCUS_2006_L2_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">m.L2.DFOP</span>, show_residuals <span class="op">=</span> <span class="cn">TRUE</span>, show_errmin <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> main <span class="op">=</span> <span class="st">"FOCUS L2 - DFOP"</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-10-1.png" width="672"></p> +<div class="sourceCode" id="cb19"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.L2.DFOP</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## mkin version used for fitting: 1.2.10 </span></span> +<span><span class="co">## R version used for fitting: 4.4.2 </span></span> +<span><span class="co">## Date of fit: Fri Feb 14 08:59:12 2025 </span></span> +<span><span class="co">## Date of summary: Fri Feb 14 08:59:12 2025 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Equations:</span></span> +<span><span class="co">## d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span></span> +<span><span class="co">## time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span></span> +<span><span class="co">## * parent</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Model predictions using solution type analytical </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fitted using 581 model solutions performed in 0.042 s</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model: Constant variance </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model algorithm: OLS </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for parameters to be optimised:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## parent_0 93.95 state</span></span> +<span><span class="co">## k1 0.10 deparm</span></span> +<span><span class="co">## k2 0.01 deparm</span></span> +<span><span class="co">## g 0.50 deparm</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for the transformed parameters actually optimised:</span></span> +<span><span class="co">## value lower upper</span></span> +<span><span class="co">## parent_0 93.950000 -Inf Inf</span></span> +<span><span class="co">## log_k1 -2.302585 -Inf Inf</span></span> +<span><span class="co">## log_k2 -4.605170 -Inf Inf</span></span> +<span><span class="co">## g_qlogis 0.000000 -Inf Inf</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fixed parameter values:</span></span> +<span><span class="co">## None</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Results:</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## AIC BIC logLik</span></span> +<span><span class="co">## 52.36695 54.79148 -21.18347</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Optimised, transformed parameters with symmetric confidence intervals:</span></span> +<span><span class="co">## Estimate Std. Error Lower Upper</span></span> +<span><span class="co">## parent_0 93.950 9.998e-01 91.5900 96.3100</span></span> +<span><span class="co">## log_k1 3.113 1.849e+03 -4369.0000 4375.0000</span></span> +<span><span class="co">## log_k2 -1.088 6.285e-02 -1.2370 -0.9394</span></span> +<span><span class="co">## g_qlogis -0.399 9.946e-02 -0.6342 -0.1638</span></span> +<span><span class="co">## sigma 1.414 2.886e-01 0.7314 2.0960</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameter correlation:</span></span> +<span><span class="co">## parent_0 log_k1 log_k2 g_qlogis sigma</span></span> +<span><span class="co">## parent_0 1.000e+00 6.763e-07 -8.944e-10 2.665e-01 -1.083e-09</span></span> +<span><span class="co">## log_k1 6.763e-07 1.000e+00 1.112e-04 -2.187e-04 -1.027e-05</span></span> +<span><span class="co">## log_k2 -8.944e-10 1.112e-04 1.000e+00 -7.903e-01 9.464e-09</span></span> +<span><span class="co">## g_qlogis 2.665e-01 -2.187e-04 -7.903e-01 1.000e+00 -1.532e-08</span></span> +<span><span class="co">## sigma -1.083e-09 -1.027e-05 9.464e-09 -1.532e-08 1.000e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Backtransformed parameters:</span></span> +<span><span class="co">## Confidence intervals for internally transformed parameters are asymmetric.</span></span> +<span><span class="co">## t-test (unrealistically) based on the assumption of normal distribution</span></span> +<span><span class="co">## for estimators of untransformed parameters.</span></span> +<span><span class="co">## Estimate t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 93.9500 9.397e+01 2.036e-12 91.5900 96.3100</span></span> +<span><span class="co">## k1 22.4900 5.533e-04 4.998e-01 0.0000 Inf</span></span> +<span><span class="co">## k2 0.3369 1.591e+01 4.697e-07 0.2904 0.3909</span></span> +<span><span class="co">## g 0.4016 1.680e+01 3.238e-07 0.3466 0.4591</span></span> +<span><span class="co">## sigma 1.4140 4.899e+00 8.776e-04 0.7314 2.0960</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## FOCUS Chi2 error levels in percent:</span></span> +<span><span class="co">## err.min n.optim df</span></span> +<span><span class="co">## All data 2.53 4 2</span></span> +<span><span class="co">## parent 2.53 4 2</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Estimated disappearance times:</span></span> +<span><span class="co">## DT50 DT90 DT50back DT50_k1 DT50_k2</span></span> +<span><span class="co">## parent 0.5335 5.311 1.599 0.03083 2.058</span></span></code></pre> +<p>Here, the DFOP model is clearly the best-fit model for dataset L2 +based on the chi^2 error level criterion.</p> +</div> +</div> +<div class="section level2"> +<h2 id="laboratory-data-l3">Laboratory Data L3<a class="anchor" aria-label="anchor" href="#laboratory-data-l3"></a> +</h2> +<p>The following code defines example dataset L3 from the FOCUS kinetics +report, p. 290.</p> +<div class="sourceCode" id="cb21"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">FOCUS_2006_L3</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span> +<span> t <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">30</span>, <span class="fl">60</span>, <span class="fl">91</span>, <span class="fl">120</span><span class="op">)</span>,</span> +<span> parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">97.8</span>, <span class="fl">60</span>, <span class="fl">51</span>, <span class="fl">43</span>, <span class="fl">35</span>, <span class="fl">22</span>, <span class="fl">15</span>, <span class="fl">12</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="va">FOCUS_2006_L3_mkin</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">FOCUS_2006_L3</span><span class="op">)</span></span></code></pre></div> +<div class="section level3"> +<h3 id="fit-multiple-models">Fit multiple models<a class="anchor" aria-label="anchor" href="#fit-multiple-models"></a> +</h3> +<p>As of mkin version 0.9-39 (June 2015), we can fit several models to +one or more datasets in one call to the function <code>mmkin</code>. The +datasets have to be passed in a list, in this case a named list holding +only the L3 dataset prepared above.</p> +<div class="sourceCode" id="cb22"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="co"># Only use one core here, not to offend the CRAN checks</span></span> +<span><span class="va">mm.L3</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span><span class="op">)</span>, cores <span class="op">=</span> <span class="fl">1</span>,</span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"FOCUS L3"</span> <span class="op">=</span> <span class="va">FOCUS_2006_L3_mkin</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">mm.L3</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-12-1.png" width="700"></p> +<p>The +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level of 21% as well as the plot suggest that the SFO model does +not fit very well. The FOMC model performs better, with an error level +at which the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +test passes of 7%. Fitting the four parameter DFOP model further reduces +the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level considerably.</p> +</div> +<div class="section level3"> +<h3 id="accessing-mmkin-objects">Accessing mmkin objects<a class="anchor" aria-label="anchor" href="#accessing-mmkin-objects"></a> +</h3> +<p>The objects returned by mmkin are arranged like a matrix, with models +as a row index and datasets as a column index.</p> +<p>We can extract the summary and plot for <em>e.g.</em> the DFOP fit, +using square brackets for indexing which will result in the use of the +summary and plot functions working on mkinfit objects.</p> +<div class="sourceCode" id="cb23"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">mm.L3</span><span class="op">[[</span><span class="st">"DFOP"</span>, <span class="fl">1</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## mkin version used for fitting: 1.2.10 </span></span> +<span><span class="co">## R version used for fitting: 4.4.2 </span></span> +<span><span class="co">## Date of fit: Fri Feb 14 08:59:12 2025 </span></span> +<span><span class="co">## Date of summary: Fri Feb 14 08:59:12 2025 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Equations:</span></span> +<span><span class="co">## d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span></span> +<span><span class="co">## time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span></span> +<span><span class="co">## * parent</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Model predictions using solution type analytical </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fitted using 376 model solutions performed in 0.024 s</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model: Constant variance </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model algorithm: OLS </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for parameters to be optimised:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## parent_0 97.80 state</span></span> +<span><span class="co">## k1 0.10 deparm</span></span> +<span><span class="co">## k2 0.01 deparm</span></span> +<span><span class="co">## g 0.50 deparm</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for the transformed parameters actually optimised:</span></span> +<span><span class="co">## value lower upper</span></span> +<span><span class="co">## parent_0 97.800000 -Inf Inf</span></span> +<span><span class="co">## log_k1 -2.302585 -Inf Inf</span></span> +<span><span class="co">## log_k2 -4.605170 -Inf Inf</span></span> +<span><span class="co">## g_qlogis 0.000000 -Inf Inf</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fixed parameter values:</span></span> +<span><span class="co">## None</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Results:</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## AIC BIC logLik</span></span> +<span><span class="co">## 32.97732 33.37453 -11.48866</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Optimised, transformed parameters with symmetric confidence intervals:</span></span> +<span><span class="co">## Estimate Std. Error Lower Upper</span></span> +<span><span class="co">## parent_0 97.7500 1.01900 94.5000 101.000000</span></span> +<span><span class="co">## log_k1 -0.6612 0.10050 -0.9812 -0.341300</span></span> +<span><span class="co">## log_k2 -4.2860 0.04322 -4.4230 -4.148000</span></span> +<span><span class="co">## g_qlogis -0.1739 0.05270 -0.3416 -0.006142</span></span> +<span><span class="co">## sigma 1.0170 0.25430 0.2079 1.827000</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameter correlation:</span></span> +<span><span class="co">## parent_0 log_k1 log_k2 g_qlogis sigma</span></span> +<span><span class="co">## parent_0 1.000e+00 1.732e-01 2.282e-02 4.009e-01 -9.696e-08</span></span> +<span><span class="co">## log_k1 1.732e-01 1.000e+00 4.945e-01 -5.809e-01 7.148e-07</span></span> +<span><span class="co">## log_k2 2.282e-02 4.945e-01 1.000e+00 -6.812e-01 1.022e-06</span></span> +<span><span class="co">## g_qlogis 4.009e-01 -5.809e-01 -6.812e-01 1.000e+00 -7.930e-07</span></span> +<span><span class="co">## sigma -9.696e-08 7.148e-07 1.022e-06 -7.930e-07 1.000e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Backtransformed parameters:</span></span> +<span><span class="co">## Confidence intervals for internally transformed parameters are asymmetric.</span></span> +<span><span class="co">## t-test (unrealistically) based on the assumption of normal distribution</span></span> +<span><span class="co">## for estimators of untransformed parameters.</span></span> +<span><span class="co">## Estimate t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 97.75000 95.960 1.248e-06 94.50000 101.00000</span></span> +<span><span class="co">## k1 0.51620 9.947 1.081e-03 0.37490 0.71090</span></span> +<span><span class="co">## k2 0.01376 23.140 8.840e-05 0.01199 0.01579</span></span> +<span><span class="co">## g 0.45660 34.920 2.581e-05 0.41540 0.49850</span></span> +<span><span class="co">## sigma 1.01700 4.000 1.400e-02 0.20790 1.82700</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## FOCUS Chi2 error levels in percent:</span></span> +<span><span class="co">## err.min n.optim df</span></span> +<span><span class="co">## All data 2.225 4 4</span></span> +<span><span class="co">## parent 2.225 4 4</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Estimated disappearance times:</span></span> +<span><span class="co">## DT50 DT90 DT50back DT50_k1 DT50_k2</span></span> +<span><span class="co">## parent 7.464 123 37.03 1.343 50.37</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Data:</span></span> +<span><span class="co">## time variable observed predicted residual</span></span> +<span><span class="co">## 0 parent 97.8 97.75 0.05396</span></span> +<span><span class="co">## 3 parent 60.0 60.45 -0.44933</span></span> +<span><span class="co">## 7 parent 51.0 49.44 1.56338</span></span> +<span><span class="co">## 14 parent 43.0 43.84 -0.83632</span></span> +<span><span class="co">## 30 parent 35.0 35.15 -0.14707</span></span> +<span><span class="co">## 60 parent 22.0 23.26 -1.25919</span></span> +<span><span class="co">## 91 parent 15.0 15.18 -0.18181</span></span> +<span><span class="co">## 120 parent 12.0 10.19 1.81395</span></span></code></pre> +<div class="sourceCode" id="cb25"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">mm.L3</span><span class="op">[[</span><span class="st">"DFOP"</span>, <span class="fl">1</span><span class="op">]</span><span class="op">]</span>, show_errmin <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-13-1.png" width="700"></p> +<p>Here, a look to the model plot, the confidence intervals of the +parameters and the correlation matrix suggest that the parameter +estimates are reliable, and the DFOP model can be used as the best-fit +model based on the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level criterion for laboratory data L3.</p> +<p>This is also an example where the standard t-test for the parameter +<code>g_ilr</code> is misleading, as it tests for a significant +difference from zero. In this case, zero appears to be the correct value +for this parameter, and the confidence interval for the backtransformed +parameter <code>g</code> is quite narrow.</p> +</div> +</div> +<div class="section level2"> +<h2 id="laboratory-data-l4">Laboratory Data L4<a class="anchor" aria-label="anchor" href="#laboratory-data-l4"></a> +</h2> +<p>The following code defines example dataset L4 from the FOCUS kinetics +report, p. 293:</p> +<div class="sourceCode" id="cb26"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">FOCUS_2006_L4</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span> +<span> t <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">30</span>, <span class="fl">60</span>, <span class="fl">91</span>, <span class="fl">120</span><span class="op">)</span>,</span> +<span> parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">96.6</span>, <span class="fl">96.3</span>, <span class="fl">94.3</span>, <span class="fl">88.8</span>, <span class="fl">74.9</span>, <span class="fl">59.9</span>, <span class="fl">53.5</span>, <span class="fl">49.0</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="va">FOCUS_2006_L4_mkin</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">FOCUS_2006_L4</span><span class="op">)</span></span></code></pre></div> +<p>Fits of the SFO and FOMC models, plots and summaries are produced +below:</p> +<div class="sourceCode" id="cb27"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="co"># Only use one core here, not to offend the CRAN checks</span></span> +<span><span class="va">mm.L4</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span><span class="op">)</span>, cores <span class="op">=</span> <span class="fl">1</span>,</span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"FOCUS L4"</span> <span class="op">=</span> <span class="va">FOCUS_2006_L4_mkin</span><span class="op">)</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">mm.L4</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_L_files/figure-html/unnamed-chunk-15-1.png" width="700"></p> +<p>The +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level of 3.3% as well as the plot suggest that the SFO model fits +very well. The error level at which the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +test passes is slightly lower for the FOMC model. However, the +difference appears negligible.</p> +<div class="sourceCode" id="cb28"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">mm.L4</span><span class="op">[[</span><span class="st">"SFO"</span>, <span class="fl">1</span><span class="op">]</span><span class="op">]</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## mkin version used for fitting: 1.2.10 </span></span> +<span><span class="co">## R version used for fitting: 4.4.2 </span></span> +<span><span class="co">## Date of fit: Fri Feb 14 08:59:13 2025 </span></span> +<span><span class="co">## Date of summary: Fri Feb 14 08:59:13 2025 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Equations:</span></span> +<span><span class="co">## d_parent/dt = - k_parent * parent</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Model predictions using solution type analytical </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fitted using 142 model solutions performed in 0.01 s</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model: Constant variance </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model algorithm: OLS </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for parameters to be optimised:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## parent_0 96.6 state</span></span> +<span><span class="co">## k_parent 0.1 deparm</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for the transformed parameters actually optimised:</span></span> +<span><span class="co">## value lower upper</span></span> +<span><span class="co">## parent_0 96.600000 -Inf Inf</span></span> +<span><span class="co">## log_k_parent -2.302585 -Inf Inf</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fixed parameter values:</span></span> +<span><span class="co">## None</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Results:</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## AIC BIC logLik</span></span> +<span><span class="co">## 47.12133 47.35966 -20.56067</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Optimised, transformed parameters with symmetric confidence intervals:</span></span> +<span><span class="co">## Estimate Std. Error Lower Upper</span></span> +<span><span class="co">## parent_0 96.440 1.69900 92.070 100.800</span></span> +<span><span class="co">## log_k_parent -5.030 0.07059 -5.211 -4.848</span></span> +<span><span class="co">## sigma 3.162 0.79050 1.130 5.194</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameter correlation:</span></span> +<span><span class="co">## parent_0 log_k_parent sigma</span></span> +<span><span class="co">## parent_0 1.000e+00 5.938e-01 3.430e-07</span></span> +<span><span class="co">## log_k_parent 5.938e-01 1.000e+00 5.885e-07</span></span> +<span><span class="co">## sigma 3.430e-07 5.885e-07 1.000e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Backtransformed parameters:</span></span> +<span><span class="co">## Confidence intervals for internally transformed parameters are asymmetric.</span></span> +<span><span class="co">## t-test (unrealistically) based on the assumption of normal distribution</span></span> +<span><span class="co">## for estimators of untransformed parameters.</span></span> +<span><span class="co">## Estimate t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 96.440000 56.77 1.604e-08 92.070000 1.008e+02</span></span> +<span><span class="co">## k_parent 0.006541 14.17 1.578e-05 0.005455 7.842e-03</span></span> +<span><span class="co">## sigma 3.162000 4.00 5.162e-03 1.130000 5.194e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## FOCUS Chi2 error levels in percent:</span></span> +<span><span class="co">## err.min n.optim df</span></span> +<span><span class="co">## All data 3.287 2 6</span></span> +<span><span class="co">## parent 3.287 2 6</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Estimated disappearance times:</span></span> +<span><span class="co">## DT50 DT90</span></span> +<span><span class="co">## parent 106 352</span></span></code></pre> +<div class="sourceCode" id="cb30"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">mm.L4</span><span class="op">[[</span><span class="st">"FOMC"</span>, <span class="fl">1</span><span class="op">]</span><span class="op">]</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## mkin version used for fitting: 1.2.10 </span></span> +<span><span class="co">## R version used for fitting: 4.4.2 </span></span> +<span><span class="co">## Date of fit: Fri Feb 14 08:59:13 2025 </span></span> +<span><span class="co">## Date of summary: Fri Feb 14 08:59:13 2025 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Equations:</span></span> +<span><span class="co">## d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Model predictions using solution type analytical </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fitted using 224 model solutions performed in 0.013 s</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model: Constant variance </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Error model algorithm: OLS </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for parameters to be optimised:</span></span> +<span><span class="co">## value type</span></span> +<span><span class="co">## parent_0 96.6 state</span></span> +<span><span class="co">## alpha 1.0 deparm</span></span> +<span><span class="co">## beta 10.0 deparm</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Starting values for the transformed parameters actually optimised:</span></span> +<span><span class="co">## value lower upper</span></span> +<span><span class="co">## parent_0 96.600000 -Inf Inf</span></span> +<span><span class="co">## log_alpha 0.000000 -Inf Inf</span></span> +<span><span class="co">## log_beta 2.302585 -Inf Inf</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Fixed parameter values:</span></span> +<span><span class="co">## None</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Results:</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## AIC BIC logLik</span></span> +<span><span class="co">## 40.37255 40.69032 -16.18628</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Optimised, transformed parameters with symmetric confidence intervals:</span></span> +<span><span class="co">## Estimate Std. Error Lower Upper</span></span> +<span><span class="co">## parent_0 99.1400 1.2670 95.6300 102.7000</span></span> +<span><span class="co">## log_alpha -0.3506 0.2616 -1.0770 0.3756</span></span> +<span><span class="co">## log_beta 4.1740 0.3938 3.0810 5.2670</span></span> +<span><span class="co">## sigma 1.8300 0.4575 0.5598 3.1000</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameter correlation:</span></span> +<span><span class="co">## parent_0 log_alpha log_beta sigma</span></span> +<span><span class="co">## parent_0 1.000e+00 -4.696e-01 -5.543e-01 -2.447e-07</span></span> +<span><span class="co">## log_alpha -4.696e-01 1.000e+00 9.889e-01 2.198e-08</span></span> +<span><span class="co">## log_beta -5.543e-01 9.889e-01 1.000e+00 4.923e-08</span></span> +<span><span class="co">## sigma -2.447e-07 2.198e-08 4.923e-08 1.000e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Backtransformed parameters:</span></span> +<span><span class="co">## Confidence intervals for internally transformed parameters are asymmetric.</span></span> +<span><span class="co">## t-test (unrealistically) based on the assumption of normal distribution</span></span> +<span><span class="co">## for estimators of untransformed parameters.</span></span> +<span><span class="co">## Estimate t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 99.1400 78.250 7.993e-08 95.6300 102.700</span></span> +<span><span class="co">## alpha 0.7042 3.823 9.365e-03 0.3407 1.456</span></span> +<span><span class="co">## beta 64.9800 2.540 3.201e-02 21.7800 193.900</span></span> +<span><span class="co">## sigma 1.8300 4.000 8.065e-03 0.5598 3.100</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## FOCUS Chi2 error levels in percent:</span></span> +<span><span class="co">## err.min n.optim df</span></span> +<span><span class="co">## All data 2.029 3 5</span></span> +<span><span class="co">## parent 2.029 3 5</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Estimated disappearance times:</span></span> +<span><span class="co">## DT50 DT90 DT50back</span></span> +<span><span class="co">## parent 108.9 1644 494.9</span></span></code></pre> +</div> +<div class="section level2"> +<h2 class="unnumbered" id="references">References<a class="anchor" aria-label="anchor" href="#references"></a> +</h2> +<div id="refs" class="references csl-bib-body hanging-indent"> +<div id="ref-ranke2014" class="csl-entry"> +Ranke, Johannes. 2014. <span>“<span class="nocase">Prüfung und +Validierung von Modellierungssoftware als Alternative zu ModelMaker +4.0</span>.”</span> Umweltbundesamt Projektnummer 27452. +</div> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-10-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-10-1.png Binary files differnew file mode 100644 index 00000000..c732be75 --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-10-1.png diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-12-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-12-1.png Binary files differnew file mode 100644 index 00000000..daa488a3 --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-12-1.png diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-13-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-13-1.png Binary files differnew file mode 100644 index 00000000..5caea744 --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-13-1.png diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-15-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-15-1.png Binary files differnew file mode 100644 index 00000000..0dc9d57d --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-15-1.png diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-4-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-4-1.png Binary files differnew file mode 100644 index 00000000..13344b25 --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-4-1.png diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-5-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-5-1.png Binary files differnew file mode 100644 index 00000000..ec234b6e --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-5-1.png diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-6-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-6-1.png Binary files differnew file mode 100644 index 00000000..dfeb7907 --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-6-1.png diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-8-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-8-1.png Binary files differnew file mode 100644 index 00000000..d3551b47 --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-8-1.png diff --git a/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-9-1.png b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-9-1.png Binary files differnew file mode 100644 index 00000000..5f8afc00 --- /dev/null +++ b/docs/dev/articles/FOCUS_L_files/figure-html/unnamed-chunk-9-1.png diff --git a/docs/dev/articles/index.html b/docs/dev/articles/index.html new file mode 100644 index 00000000..be336fcb --- /dev/null +++ b/docs/dev/articles/index.html @@ -0,0 +1,114 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Articles • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Articles"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-article-index"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Articles</h1> + </div> + + <div class="section "> + <h3>All vignettes</h3> + <div class="section-desc"></div> + + <dl><dt><a href="prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></dt> + <dd> + </dd><dt><a href="prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></dt> + <dd> + </dd><dt><a href="prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></dt> + <dd> + </dd><dt><a href="prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></dt> + <dd> + </dd><dt><a href="web_only/benchmarks.html">Benchmark timings for mkin</a></dt> + <dd> + </dd><dt><a href="web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></dt> + <dd> + </dd><dt><a href="web_only/dimethenamid_2018.html">Example evaluations of the dimethenamid data from 2018</a></dt> + <dd> + </dd><dt><a href="FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></dt> + <dd> + </dd><dt><a href="FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></dt> + <dd> + </dd><dt><a href="web_only/FOCUS_Z.html">Example evaluation of FOCUS dataset Z</a></dt> + <dd> + </dd><dt><a href="mkin.html">Short introduction to mkin</a></dt> + <dd> + </dd><dt><a href="web_only/multistart.html">Short demo of the multistart method</a></dt> + <dd> + </dd><dt><a href="web_only/NAFTA_examples.html">Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance</a></dt> + <dd> + </dd><dt><a href="web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></dt> + <dd> + </dd><dt><a href="twa.html">Calculation of time weighted average concentrations with mkin</a></dt> + <dd> + </dd></dl></div> + </main></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/articles/mkin.html b/docs/dev/articles/mkin.html new file mode 100644 index 00000000..30b2182f --- /dev/null +++ b/docs/dev/articles/mkin.html @@ -0,0 +1,414 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Short introduction to mkin • mkin</title> +<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Short introduction to mkin"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Short introduction to mkin</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 18 May 2023 +(rebuilt 2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/mkin.rmd" class="external-link"><code>vignettes/mkin.rmd</code></a></small> + <div class="d-none name"><code>mkin.rmd</code></div> + </div> + + + +<p><a href="https://www.jrwb.de" class="external-link">Wissenschaftlicher Berater, Kronacher +Str. 12, 79639 Grenzach-Wyhlen, Germany</a><br> Privatdozent at the +University of Freiburg</p> +<div class="section level2"> +<h2 id="abstract">Abstract<a class="anchor" aria-label="anchor" href="#abstract"></a> +</h2> +<p>In the regulatory evaluation of chemical substances like plant +protection products (pesticides), biocides and other chemicals, +degradation data play an important role. For the evaluation of pesticide +degradation experiments, detailed guidance has been developed, based on +nonlinear optimisation. The <code>R</code> add-on package +<code>mkin</code> implements fitting some of the models recommended in +this guidance from within R and calculates some statistical measures for +data series within one or more compartments, for parent and +metabolites.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="st"><a href="https://pkgdown.jrwb.de/mkin/">"mkin"</a></span>, quietly <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="co"># Define the kinetic model</span></span> +<span><span class="va">m_SFO_SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M1"</span><span class="op">)</span>,</span> +<span> M1 <span class="op">=</span> <span class="fu"><a href="../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M2"</span><span class="op">)</span>,</span> +<span> M2 <span class="op">=</span> <span class="fu"><a href="../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> use_of_ff <span class="op">=</span> <span class="st">"max"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span></span> +<span><span class="co"># Produce model predictions using some arbitrary parameters</span></span> +<span><span class="va">sampling_times</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span> +<span><span class="va">d_SFO_SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_SFO_SFO_SFO</span>,</span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.03</span>,</span> +<span> f_parent_to_M1 <span class="op">=</span> <span class="fl">0.5</span>, k_M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">2</span><span class="op">)</span><span class="op">/</span><span class="fl">100</span>,</span> +<span> f_M1_to_M2 <span class="op">=</span> <span class="fl">0.9</span>, k_M2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">2</span><span class="op">)</span><span class="op">/</span><span class="fl">50</span><span class="op">)</span>,</span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, M1 <span class="op">=</span> <span class="fl">0</span>, M2 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span> +<span> <span class="va">sampling_times</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># Generate a dataset by adding normally distributed errors with</span></span> +<span><span class="co"># standard deviation 3, for two replicates at each sampling time</span></span> +<span><span class="va">d_SFO_SFO_SFO_err</span> <span class="op"><-</span> <span class="fu"><a href="../reference/add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_SFO_SFO_SFO</span>, reps <span class="op">=</span> <span class="fl">2</span>,</span> +<span> sdfunc <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fl">3</span>,</span> +<span> n <span class="op">=</span> <span class="fl">1</span>, seed <span class="op">=</span> <span class="fl">123456789</span> <span class="op">)</span></span> +<span></span> +<span><span class="co"># Fit the model to the dataset</span></span> +<span><span class="va">f_SFO_SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_SFO_SFO_SFO</span>, <span class="va">d_SFO_SFO_SFO_err</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># Plot the results separately for parent and metabolites</span></span> +<span><span class="fu"><a href="../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">f_SFO_SFO_SFO</span>, lpos <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"topright"</span>, <span class="st">"bottomright"</span>, <span class="st">"bottomright"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<p><img src="mkin_files/figure-html/unnamed-chunk-2-1.png" width="768"></p> +</div> +<div class="section level2"> +<h2 id="background">Background<a class="anchor" aria-label="anchor" href="#background"></a> +</h2> +<p>The <code>mkin</code> package <span class="citation">(J. Ranke +2021)</span> implements the approach to degradation kinetics recommended +in the kinetics report provided by the FOrum for Co-ordination of +pesticide fate models and their USe <span class="citation">(FOCUS Work +Group on Degradation Kinetics 2006, 2014)</span>. It covers data series +describing the decline of one compound, data series with transformation +products (commonly termed metabolites) and data series for more than one +compartment. It is possible to include back reactions. Therefore, +equilibrium reactions and equilibrium partitioning can be specified, +although this often leads to an overparameterisation of the model.</p> +<p>When the first <code>mkin</code> code was published in 2010, the most +commonly used tools for fitting more complex kinetic degradation models +to experimental data were KinGUI <span class="citation">(Schäfer et al. +2007)</span>, a MATLAB based tool with a graphical user interface that +was specifically tailored to the task and included some output as +proposed by the FOCUS Kinetics Workgroup, and ModelMaker, a general +purpose compartment based tool providing infrastructure for fitting +dynamic simulation models based on differential equations to data.</p> +<p>The ‘mkin’ code was first uploaded to the BerliOS development +platform. When this was taken down, the version control history was +imported into the R-Forge site (see <em>e.g.</em> <a href="https://cgit.jrwb.de/mkin/commit/?id=30cbb4092f6d2d3beff5800603374a0d009ad770" class="external-link">the +initial commit on 11 May 2010</a>), where the code is still being +updated.</p> +<p>At that time, the R package <code>FME</code> (Flexible Modelling +Environment) <span class="citation">(Soetaert and Petzoldt 2010)</span> +was already available, and provided a good basis for developing a +package specifically tailored to the task. The remaining challenge was +to make it as easy as possible for the users (including the author of +this vignette) to specify the system of differential equations and to +include the output requested by the FOCUS guidance, such as the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level as defined in this guidance.</p> +<p>Also, <code>mkin</code> introduced using analytical solutions for +parent only kinetics for improved optimization speed. Later, Eigenvalue +based solutions were introduced to <code>mkin</code> for the case of +linear differential equations (<em>i.e.</em> where the FOMC or DFOP +models were not used for the parent compound), greatly improving the +optimization speed for these cases. This, has become somehow obsolete, +as the use of compiled code described below gives even faster execution +times.</p> +<p>The possibility to specify back-reactions and a biphasic model +(SFORB) for metabolites were present in <code>mkin</code> from the very +beginning.</p> +<div class="section level3"> +<h3 id="derived-software-tools">Derived software tools<a class="anchor" aria-label="anchor" href="#derived-software-tools"></a> +</h3> +<p>Soon after the publication of <code>mkin</code>, two derived tools +were published, namely KinGUII (developed at Bayer Crop Science) and +CAKE (commissioned to Tessella by Syngenta), which added a graphical +user interface (GUI), and added fitting by iteratively reweighted least +squares (IRLS) and characterisation of likely parameter distributions by +Markov Chain Monte Carlo (MCMC) sampling.</p> +<p>CAKE focuses on a smooth use experience, sacrificing some flexibility +in the model definition, originally allowing only two primary +metabolites in parallel. The current version 3.4 of CAKE released in May +2020 uses a scheme for up to six metabolites in a flexible arrangement +and supports biphasic modelling of metabolites, but does not support +back-reactions (non-instantaneous equilibria).</p> +<p>KinGUI offers an even more flexible widget for specifying complex +kinetic models. Back-reactions (non-instantaneous equilibria) were +supported early on, but until 2014, only simple first-order models could +be specified for transformation products. Starting with KinGUII version +2.1, biphasic modelling of metabolites was also available in +KinGUII.</p> +<p>A further graphical user interface (GUI) that has recently been +brought to a decent degree of maturity is the browser based GUI named +<code>gmkin</code>. Please see its <a href="https://pkgdown.jrwb.de/gmkin/" class="external-link">documentation page</a> and <a href="https://pkgdown.jrwb.de/gmkin/articles/gmkin_manual.html" class="external-link">manual</a> +for further information.</p> +<p>A comparison of scope, usability and numerical results obtained with +these tools has been recently been published by <span class="citation">Johannes Ranke, Wöltjen, and Meinecke +(2018)</span>.</p> +</div> +</div> +<div class="section level2"> +<h2 id="unique-features">Unique features<a class="anchor" aria-label="anchor" href="#unique-features"></a> +</h2> +<p>Currently, the main unique features available in <code>mkin</code> +are</p> +<ul> +<li>the <a href="https://pkgdown.jrwb.de/mkin/articles/web_only/compiled_models.html">speed +increase</a> by using compiled code when a compiler is present,</li> +<li>parallel model fitting on multicore machines using the <a href="https://pkgdown.jrwb.de/mkin/reference/mmkin.html"><code>mmkin</code> +function</a>,</li> +<li>the estimation of parameter confidence intervals based on +transformed parameters (see below) and</li> +<li>the possibility to use the <a href="https://pkgdown.jrwb.de/mkin/reference/sigma_twocomp.html">two-component +error model</a> +</li> +</ul> +<p>The iteratively reweighted least squares fitting of different +variances for each variable as introduced by <span class="citation">Gao +et al. (2011)</span> has been available in mkin since <a href="https://pkgdown.jrwb.de/mkin/news/index.html#mkin-0-9-22-2013-10-26">version +0.9-22</a>. With <a href="https://pkgdown.jrwb.de/mkin/news/index.html#mkin-0-9-49-5-2019-07-04">release +0.9.49.5</a>, the IRLS algorithm has been complemented by direct or +step-wise maximisation of the likelihood function, which makes it +possible not only to fit the variance by variable error model but also a +<a href="https://pkgdown.jrwb.de/mkin/reference/sigma_twocomp.html">two-component +error model</a> inspired by error models developed in analytical +chemistry <span class="citation">(Johannes Ranke and Meinecke +2019)</span>.</p> +</div> +<div class="section level2"> +<h2 id="internal-parameter-transformations">Internal parameter transformations<a class="anchor" aria-label="anchor" href="#internal-parameter-transformations"></a> +</h2> +<p>For rate constants, the log transformation is used, as proposed by +Bates and Watts <span class="citation">(1988, 77, 149)</span>. +Approximate intervals are constructed for the transformed rate constants +<span class="citation">(compare Bates and Watts 1988, 135)</span>, +<em>i.e.</em> for their logarithms. Confidence intervals for the rate +constants are then obtained using the appropriate backtransformation +using the exponential function.</p> +<p>In the first version of <code>mkin</code> allowing for specifying +models using formation fractions, a home-made reparameterisation was +used in order to ensure that the sum of formation fractions would not +exceed unity.</p> +<p>This method is still used in the current version of KinGUII (v2.1 +from April 2014), with a modification that allows for fixing the pathway +to sink to zero. CAKE uses penalties in the objective function in order +to enforce this constraint.</p> +<p>In 2012, an alternative reparameterisation of the formation fractions +was proposed together with René Lehmann <span class="citation">(J. Ranke +and Lehmann 2012)</span>, based on isometric logratio transformation +(ILR). The aim was to improve the validity of the linear approximation +of the objective function during the parameter estimation procedure as +well as in the subsequent calculation of parameter confidence intervals. +In the current version of mkin, a logit transformation is used for +parameters that are bound between 0 and 1, such as the g parameter of +the DFOP model.</p> +<div class="section level3"> +<h3 id="confidence-intervals-based-on-transformed-parameters">Confidence intervals based on transformed parameters<a class="anchor" aria-label="anchor" href="#confidence-intervals-based-on-transformed-parameters"></a> +</h3> +<p>In the first attempt at providing improved parameter confidence +intervals introduced to <code>mkin</code> in 2013, confidence intervals +obtained from FME on the transformed parameters were simply all +backtransformed one by one to yield asymmetric confidence intervals for +the backtransformed parameters.</p> +<p>However, while there is a 1:1 relation between the rate constants in +the model and the transformed parameters fitted in the model, the +parameters obtained by the isometric logratio transformation are +calculated from the set of formation fractions that quantify the paths +to each of the compounds formed from a specific parent compound, and no +such 1:1 relation exists.</p> +<p>Therefore, parameter confidence intervals for formation fractions +obtained with this method only appear valid for the case of a single +transformation product, where currently the logit transformation is used +for the formation fraction.</p> +<p>The confidence intervals obtained by backtransformation for the cases +where a 1:1 relation between transformed and original parameter exist +are considered by the author of this vignette to be more accurate than +those obtained using a re-estimation of the Hessian matrix after +backtransformation, as implemented in the FME package.</p> +</div> +<div class="section level3"> +<h3 id="parameter-t-test-based-on-untransformed-parameters">Parameter t-test based on untransformed parameters<a class="anchor" aria-label="anchor" href="#parameter-t-test-based-on-untransformed-parameters"></a> +</h3> +<p>The standard output of many nonlinear regression software packages +includes the results from a test for significant difference from zero +for all parameters. Such a test is also recommended to check the +validity of rate constants in the FOCUS guidance <span class="citation">(FOCUS Work Group on Degradation Kinetics 2014, +96ff)</span>.</p> +<p>It has been argued that the precondition for this test, <em>i.e.</em> +normal distribution of the estimator for the parameters, is not +fulfilled in the case of nonlinear regression <span class="citation">(J. +Ranke and Lehmann 2015)</span>. However, this test is commonly used by +industry, consultants and national authorities in order to decide on the +reliability of parameter estimates, based on the FOCUS guidance +mentioned above. Therefore, the results of this one-sided t-test are +included in the summary output from <code>mkin</code>.</p> +<p>As it is not reasonable to test for significant difference of the +transformed parameters (<em>e.g.</em> +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>l</mi><mi>o</mi><mi>g</mi><mrow><mo stretchy="true" form="prefix">(</mo><mi>k</mi><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">log(k)</annotation></semantics></math>) +from zero, the t-test is calculated based on the model definition before +parameter transformation, <em>i.e.</em> in a similar way as in packages +that do not apply such an internal parameter transformation. A note is +included in the <code>mkin</code> output, pointing to the fact that the +t-test is based on the unjustified assumption of normal distribution of +the parameter estimators.</p> +</div> +</div> +<div class="section level2"> +<h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a> +</h2> +<!-- vim: set foldmethod=syntax: --> +<div id="refs" class="references csl-bib-body hanging-indent"> +<div id="ref-bates1988" class="csl-entry"> +Bates, D., and D. Watts. 1988. <em>Nonlinear Regression and Its +Applications</em>. Wiley-Interscience. +</div> +<div id="ref-FOCUS2006" class="csl-entry"> +FOCUS Work Group on Degradation Kinetics. 2006. <em>Guidance Document on +Estimating Persistence and Degradation Kinetics from Environmental Fate +Studies on Pesticides in EU Registration. Report of the FOCUS Work Group +on Degradation Kinetics</em>. <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a>. +</div> +<div id="ref-FOCUSkinetics2014" class="csl-entry"> +———. 2014. <em>Generic Guidance for Estimating Persistence and +Degradation Kinetics from Environmental Fate Studies on Pesticides in EU +Registration</em>. 1.1 ed. <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a>. +</div> +<div id="ref-gao11" class="csl-entry"> +Gao, Z., J. W. Green, J. Vanderborght, and W. Schmitt. 2011. +<span>“Improving Uncertainty Analysis in Kinetic Evaluations Using +Iteratively Reweighted Least Squares.”</span> Journal. <em>Environmental +Science and Technology</em> 45: 4429–37. +</div> +<div id="ref-pkg:mkin" class="csl-entry"> +Ranke, J. 2021. <em>‘<span class="nocase">mkin</span>‘: +<span>K</span>inetic Evaluation of Chemical Degradation Data</em>. <a href="https://CRAN.R-project.org/package=mkin" class="external-link">https://CRAN.R-project.org/package=mkin</a>. +</div> +<div id="ref-ranke2012" class="csl-entry"> +Ranke, J., and R. Lehmann. 2012. <span>“Parameter Reliability in Kinetic +Evaluation of Environmental Metabolism Data - Assessment and the +Influence of Model Specification.”</span> In <em>SETAC World 20-24 +May</em>. Berlin. <a href="https://jrwb.de/posters/Poster_SETAC_2012_Kinetic_parameter_uncertainty_model_parameterization_Lehmann_Ranke.pdf" class="external-link">https://jrwb.de/posters/Poster_SETAC_2012_Kinetic_parameter_uncertainty_model_parameterization_Lehmann_Ranke.pdf</a>. +</div> +<div id="ref-ranke2015" class="csl-entry"> +———. 2015. <span>“To t-Test or Not to t-Test, That Is the +Question.”</span> In <em>XV Symposium on Pesticide Chemistry 2-4 +September 2015</em>. Piacenza. <a href="https://jrwb.de/posters/piacenza_2015.pdf" class="external-link">https://jrwb.de/posters/piacenza_2015.pdf</a>. +</div> +<div id="ref-ranke2019" class="csl-entry"> +Ranke, Johannes, and Stefan Meinecke. 2019. <span>“Error Models for the +Kinetic Evaluation of Chemical Degradation Data.”</span> +<em>Environments</em> 6 (12). <a href="https://doi.org/10.3390/environments6120124" class="external-link">https://doi.org/10.3390/environments6120124</a>. +</div> +<div id="ref-ranke2018" class="csl-entry"> +Ranke, Johannes, Janina Wöltjen, and Stefan Meinecke. 2018. +<span>“Comparison of Software Tools for Kinetic Evaluation of Chemical +Degradation Data.”</span> <em>Environmental Sciences Europe</em> 30 (1): +17. <a href="https://doi.org/10.1186/s12302-018-0145-1" class="external-link">https://doi.org/10.1186/s12302-018-0145-1</a>. +</div> +<div id="ref-schaefer2007" class="csl-entry"> +Schäfer, D., B. Mikolasch, P. Rainbird, and B. Harvey. 2007. +<span>“<span>KinGUI</span>: A New Kinetic Software Tool for Evaluations +According to <span>FOCUS</span> Degradation Kinetics.”</span> In +<em>Proceedings of the XIII Symposium Pesticide Chemistry</em>, edited +by Del Re A. A. M., Capri E., Fragoulis G., and Trevisan M., 916–23. +Piacenza. +</div> +<div id="ref-soetaert2010" class="csl-entry"> +Soetaert, Karline, and Thomas Petzoldt. 2010. <span>“Inverse Modelling, +Sensitivity and Monte Carlo Analysis in <span>R</span> Using Package +<span>FME</span>.”</span> <em>Journal of Statistical Software</em> 33 +(3): 1–28. <a href="https://doi.org/10.18637/jss.v033.i03" class="external-link">https://doi.org/10.18637/jss.v033.i03</a>. +</div> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/mkin_files/figure-html/unnamed-chunk-2-1.png b/docs/dev/articles/mkin_files/figure-html/unnamed-chunk-2-1.png Binary files differnew file mode 100644 index 00000000..65c1a613 --- /dev/null +++ b/docs/dev/articles/mkin_files/figure-html/unnamed-chunk-2-1.png diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway.html b/docs/dev/articles/prebuilt/2022_cyan_pathway.html new file mode 100644 index 00000000..b93e5e7e --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway.html @@ -0,0 +1,5397 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Testing hierarchical pathway kinetics with residue data on cyantraniliprole • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Testing hierarchical pathway kinetics with residue data on cyantraniliprole"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Testing hierarchical pathway kinetics with residue data on cyantraniliprole</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change on 13 February +2023, last compiled on 14 Februar 2025</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/prebuilt/2022_cyan_pathway.rmd" class="external-link"><code>vignettes/prebuilt/2022_cyan_pathway.rmd</code></a></small> + <div class="d-none name"><code>2022_cyan_pathway.rmd</code></div> + </div> + + + +<div class="section level2"> +<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a> +</h2> +<p>The purpose of this document is to test demonstrate how nonlinear +hierarchical models (NLHM) based on the parent degradation models SFO, +FOMC, DFOP and HS, with serial formation of two or more metabolites can +be fitted with the mkin package.</p> +<p>It was assembled in the course of work package 1.2 of Project Number +173340 (Application of nonlinear hierarchical models to the kinetic +evaluation of chemical degradation data) of the German Environment +Agency carried out in 2022 and 2023.</p> +<p>The mkin package is used in version 1.2.10 which is currently under +development. The newly introduced functionality that is used here is a +simplification of excluding random effects for a set of fits based on a +related set of fits with a reduced model, and the documentation of the +starting parameters of the fit, so that all starting parameters of +<code>saem</code> fits are now listed in the summary. The +<code>saemix</code> package is used as a backend for fitting the NLHM, +but is also loaded to make the convergence plot function available.</p> +<p>This document is processed with the <code>knitr</code> package, which +also provides the <code>kable</code> function that is used to improve +the display of tabular data in R markdown documents. For parallel +processing, the <code>parallel</code> package is used.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://yihui.org/knitr/" class="external-link">knitr</a></span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">saemix</span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">parallel</span><span class="op">)</span></span> +<span><span class="va">n_cores</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># We need to start a new cluster after defining a compiled model that is</span></span> +<span><span class="co"># saved as a DLL to the user directory, therefore we define a function</span></span> +<span><span class="co"># This is used again after defining the pathway model</span></span> +<span><span class="va">start_cluster</span> <span class="op"><-</span> <span class="kw">function</span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.info.html" class="external-link">Sys.info</a></span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="st">"sysname"</span><span class="op">]</span> <span class="op">==</span> <span class="st">"Windows"</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">ret</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makePSOCKcluster</a></span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span> <span class="op">}</span> <span class="kw">else</span> <span class="op">{</span></span> +<span> <span class="va">ret</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makeForkCluster</a></span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span> <span class="op">}</span></span> +<span> <span class="kw"><a href="https://rdrr.io/r/base/function.html" class="external-link">return</a></span><span class="op">(</span><span class="va">ret</span><span class="op">)</span></span> +<span><span class="op">}</span></span> +<span><span class="va">cl</span> <span class="op"><-</span> <span class="fu">start_cluster</span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span></code></pre></div> +<div class="section level3"> +<h3 id="test-data">Test data<a class="anchor" aria-label="anchor" href="#test-data"></a> +</h3> +<p>The example data are taken from the final addendum to the DAR from +2014 and are distributed with the mkin package. Residue data and time +step normalisation factors are read in using the function +<code>read_spreadsheet</code> from the mkin package. This function also +performs the time step normalisation.</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">data_file</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.file.html" class="external-link">system.file</a></span><span class="op">(</span></span> +<span> <span class="st">"testdata"</span>, <span class="st">"cyantraniliprole_soil_efsa_2014.xlsx"</span>,</span> +<span> package <span class="op">=</span> <span class="st">"mkin"</span><span class="op">)</span></span> +<span><span class="va">cyan_ds</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/read_spreadsheet.html">read_spreadsheet</a></span><span class="op">(</span><span class="va">data_file</span>, parent_only <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div> +<p>The following tables show the covariate data and the 5 datasets that +were read in from the spreadsheet file.</p> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">pH</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/attr.html" class="external-link">attr</a></span><span class="op">(</span><span class="va">cyan_ds</span>, <span class="st">"covariates"</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="va">pH</span>, caption <span class="op">=</span> <span class="st">"Covariate data"</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<caption>Covariate data</caption> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">pH</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Nambsheim</td> +<td align="right">7.90</td> +</tr> +<tr class="even"> +<td align="left">Tama</td> +<td align="right">6.20</td> +</tr> +<tr class="odd"> +<td align="left">Gross-Umstadt</td> +<td align="right">7.04</td> +</tr> +<tr class="even"> +<td align="left">Sassafras</td> +<td align="right">4.62</td> +</tr> +<tr class="odd"> +<td align="left">Lleida</td> +<td align="right">8.05</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">for</span> <span class="op">(</span><span class="va">ds_name</span> <span class="kw">in</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">cyan_ds</span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span></span> +<span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="fu"><a href="../../reference/mkin_long_to_wide.html">mkin_long_to_wide</a></span><span class="op">(</span><span class="va">cyan_ds</span><span class="op">[[</span><span class="va">ds_name</span><span class="op">]</span><span class="op">]</span><span class="op">)</span>,</span> +<span> caption <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Dataset"</span>, <span class="va">ds_name</span><span class="op">)</span>,</span> +<span> booktabs <span class="op">=</span> <span class="cn">TRUE</span>, row.names <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">)</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/cat.html" class="external-link">cat</a></span><span class="op">(</span><span class="st">"\n\\clearpage\n"</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +<table class="table"> +<caption>Dataset Nambsheim</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">cyan</th> +<th align="right">JCZ38</th> +<th align="right">J9C38</th> +<th align="right">JSE76</th> +<th align="right">J9Z38</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">105.79</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">3.210424</td> +<td align="right">77.26</td> +<td align="right">7.92</td> +<td align="right">11.94</td> +<td align="right">5.58</td> +<td align="right">9.12</td> +</tr> +<tr class="odd"> +<td align="right">7.490988</td> +<td align="right">57.13</td> +<td align="right">15.46</td> +<td align="right">16.58</td> +<td align="right">12.59</td> +<td align="right">11.74</td> +</tr> +<tr class="even"> +<td align="right">17.122259</td> +<td align="right">37.74</td> +<td align="right">15.98</td> +<td align="right">13.36</td> +<td align="right">26.05</td> +<td align="right">10.77</td> +</tr> +<tr class="odd"> +<td align="right">23.543105</td> +<td align="right">31.47</td> +<td align="right">6.05</td> +<td align="right">14.49</td> +<td align="right">34.71</td> +<td align="right">4.96</td> +</tr> +<tr class="even"> +<td align="right">43.875788</td> +<td align="right">16.74</td> +<td align="right">6.07</td> +<td align="right">7.57</td> +<td align="right">40.38</td> +<td align="right">6.52</td> +</tr> +<tr class="odd"> +<td align="right">67.418893</td> +<td align="right">8.85</td> +<td align="right">10.34</td> +<td align="right">6.39</td> +<td align="right">30.71</td> +<td align="right">8.90</td> +</tr> +<tr class="even"> +<td align="right">107.014116</td> +<td align="right">5.19</td> +<td align="right">9.61</td> +<td align="right">1.95</td> +<td align="right">20.41</td> +<td align="right">12.93</td> +</tr> +<tr class="odd"> +<td align="right">129.487080</td> +<td align="right">3.45</td> +<td align="right">6.18</td> +<td align="right">1.36</td> +<td align="right">21.78</td> +<td align="right">6.99</td> +</tr> +<tr class="even"> +<td align="right">195.835832</td> +<td align="right">2.15</td> +<td align="right">9.13</td> +<td align="right">0.95</td> +<td align="right">16.29</td> +<td align="right">7.69</td> +</tr> +<tr class="odd"> +<td align="right">254.693596</td> +<td align="right">1.92</td> +<td align="right">6.92</td> +<td align="right">0.20</td> +<td align="right">13.57</td> +<td align="right">7.16</td> +</tr> +<tr class="even"> +<td align="right">321.042348</td> +<td align="right">2.26</td> +<td align="right">7.02</td> +<td align="right">NA</td> +<td align="right">11.12</td> +<td align="right">8.66</td> +</tr> +<tr class="odd"> +<td align="right">383.110535</td> +<td align="right">NA</td> +<td align="right">5.05</td> +<td align="right">NA</td> +<td align="right">10.64</td> +<td align="right">5.56</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">105.57</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">3.210424</td> +<td align="right">78.88</td> +<td align="right">12.77</td> +<td align="right">11.94</td> +<td align="right">5.47</td> +<td align="right">9.12</td> +</tr> +<tr class="even"> +<td align="right">7.490988</td> +<td align="right">59.94</td> +<td align="right">15.27</td> +<td align="right">16.58</td> +<td align="right">13.60</td> +<td align="right">11.74</td> +</tr> +<tr class="odd"> +<td align="right">17.122259</td> +<td align="right">39.67</td> +<td align="right">14.26</td> +<td align="right">13.36</td> +<td align="right">29.44</td> +<td align="right">10.77</td> +</tr> +<tr class="even"> +<td align="right">23.543105</td> +<td align="right">30.21</td> +<td align="right">16.07</td> +<td align="right">14.49</td> +<td align="right">35.90</td> +<td align="right">4.96</td> +</tr> +<tr class="odd"> +<td align="right">43.875788</td> +<td align="right">18.06</td> +<td align="right">9.44</td> +<td align="right">7.57</td> +<td align="right">42.30</td> +<td align="right">6.52</td> +</tr> +<tr class="even"> +<td align="right">67.418893</td> +<td align="right">8.54</td> +<td align="right">5.78</td> +<td align="right">6.39</td> +<td align="right">34.70</td> +<td align="right">8.90</td> +</tr> +<tr class="odd"> +<td align="right">107.014116</td> +<td align="right">7.26</td> +<td align="right">4.54</td> +<td align="right">1.95</td> +<td align="right">23.33</td> +<td align="right">12.93</td> +</tr> +<tr class="even"> +<td align="right">129.487080</td> +<td align="right">3.60</td> +<td align="right">4.22</td> +<td align="right">1.36</td> +<td align="right">23.56</td> +<td align="right">6.99</td> +</tr> +<tr class="odd"> +<td align="right">195.835832</td> +<td align="right">2.84</td> +<td align="right">3.05</td> +<td align="right">0.95</td> +<td align="right">16.21</td> +<td align="right">7.69</td> +</tr> +<tr class="even"> +<td align="right">254.693596</td> +<td align="right">2.00</td> +<td align="right">2.90</td> +<td align="right">0.20</td> +<td align="right">15.53</td> +<td align="right">7.16</td> +</tr> +<tr class="odd"> +<td align="right">321.042348</td> +<td align="right">1.79</td> +<td align="right">0.94</td> +<td align="right">NA</td> +<td align="right">9.80</td> +<td align="right">8.66</td> +</tr> +<tr class="even"> +<td align="right">383.110535</td> +<td align="right">NA</td> +<td align="right">1.82</td> +<td align="right">NA</td> +<td align="right">9.49</td> +<td align="right">5.56</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Tama</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">cyan</th> +<th align="right">JCZ38</th> +<th align="right">J9Z38</th> +<th align="right">JSE76</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">106.14</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">2.400833</td> +<td align="right">93.47</td> +<td align="right">6.46</td> +<td align="right">2.85</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">5.601943</td> +<td align="right">88.39</td> +<td align="right">10.86</td> +<td align="right">4.65</td> +<td align="right">3.85</td> +</tr> +<tr class="even"> +<td align="right">12.804442</td> +<td align="right">72.29</td> +<td align="right">11.97</td> +<td align="right">4.91</td> +<td align="right">11.24</td> +</tr> +<tr class="odd"> +<td align="right">17.606108</td> +<td align="right">65.79</td> +<td align="right">13.11</td> +<td align="right">6.63</td> +<td align="right">13.79</td> +</tr> +<tr class="even"> +<td align="right">32.811382</td> +<td align="right">53.16</td> +<td align="right">11.24</td> +<td align="right">8.90</td> +<td align="right">23.40</td> +</tr> +<tr class="odd"> +<td align="right">50.417490</td> +<td align="right">44.01</td> +<td align="right">11.34</td> +<td align="right">9.98</td> +<td align="right">29.56</td> +</tr> +<tr class="even"> +<td align="right">80.027761</td> +<td align="right">33.23</td> +<td align="right">8.82</td> +<td align="right">11.31</td> +<td align="right">35.63</td> +</tr> +<tr class="odd"> +<td align="right">96.833591</td> +<td align="right">40.68</td> +<td align="right">5.94</td> +<td align="right">8.32</td> +<td align="right">29.09</td> +</tr> +<tr class="even"> +<td align="right">146.450803</td> +<td align="right">20.65</td> +<td align="right">4.49</td> +<td align="right">8.72</td> +<td align="right">36.88</td> +</tr> +<tr class="odd"> +<td align="right">190.466072</td> +<td align="right">17.71</td> +<td align="right">4.66</td> +<td align="right">11.10</td> +<td align="right">40.97</td> +</tr> +<tr class="even"> +<td align="right">240.083284</td> +<td align="right">14.86</td> +<td align="right">2.27</td> +<td align="right">11.62</td> +<td align="right">40.11</td> +</tr> +<tr class="odd"> +<td align="right">286.499386</td> +<td align="right">12.02</td> +<td align="right">NA</td> +<td align="right">10.73</td> +<td align="right">42.58</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">109.11</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">2.400833</td> +<td align="right">96.84</td> +<td align="right">5.52</td> +<td align="right">2.04</td> +<td align="right">2.02</td> +</tr> +<tr class="even"> +<td align="right">5.601943</td> +<td align="right">85.29</td> +<td align="right">9.65</td> +<td align="right">2.99</td> +<td align="right">4.39</td> +</tr> +<tr class="odd"> +<td align="right">12.804442</td> +<td align="right">73.68</td> +<td align="right">12.48</td> +<td align="right">5.05</td> +<td align="right">11.47</td> +</tr> +<tr class="even"> +<td align="right">17.606108</td> +<td align="right">64.89</td> +<td align="right">12.44</td> +<td align="right">6.29</td> +<td align="right">15.00</td> +</tr> +<tr class="odd"> +<td align="right">32.811382</td> +<td align="right">52.27</td> +<td align="right">10.86</td> +<td align="right">7.65</td> +<td align="right">23.30</td> +</tr> +<tr class="even"> +<td align="right">50.417490</td> +<td align="right">42.61</td> +<td align="right">10.54</td> +<td align="right">9.37</td> +<td align="right">31.06</td> +</tr> +<tr class="odd"> +<td align="right">80.027761</td> +<td align="right">34.29</td> +<td align="right">10.02</td> +<td align="right">9.04</td> +<td align="right">37.87</td> +</tr> +<tr class="even"> +<td align="right">96.833591</td> +<td align="right">30.50</td> +<td align="right">6.34</td> +<td align="right">8.14</td> +<td align="right">33.97</td> +</tr> +<tr class="odd"> +<td align="right">146.450803</td> +<td align="right">19.21</td> +<td align="right">6.29</td> +<td align="right">8.52</td> +<td align="right">26.15</td> +</tr> +<tr class="even"> +<td align="right">190.466072</td> +<td align="right">17.55</td> +<td align="right">5.81</td> +<td align="right">9.89</td> +<td align="right">32.08</td> +</tr> +<tr class="odd"> +<td align="right">240.083284</td> +<td align="right">13.22</td> +<td align="right">5.99</td> +<td align="right">10.79</td> +<td align="right">40.66</td> +</tr> +<tr class="even"> +<td align="right">286.499386</td> +<td align="right">11.09</td> +<td align="right">6.05</td> +<td align="right">8.82</td> +<td align="right">42.90</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Gross-Umstadt</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">cyan</th> +<th align="right">JCZ38</th> +<th align="right">J9Z38</th> +<th align="right">JSE76</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">103.03</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">2.1014681</td> +<td align="right">87.85</td> +<td align="right">4.79</td> +<td align="right">3.26</td> +<td align="right">0.62</td> +</tr> +<tr class="odd"> +<td align="right">4.9034255</td> +<td align="right">77.35</td> +<td align="right">8.05</td> +<td align="right">9.89</td> +<td align="right">1.32</td> +</tr> +<tr class="even"> +<td align="right">10.5073404</td> +<td align="right">69.33</td> +<td align="right">9.74</td> +<td align="right">12.32</td> +<td align="right">4.74</td> +</tr> +<tr class="odd"> +<td align="right">21.0146807</td> +<td align="right">55.65</td> +<td align="right">14.57</td> +<td align="right">13.59</td> +<td align="right">9.84</td> +</tr> +<tr class="even"> +<td align="right">31.5220211</td> +<td align="right">49.03</td> +<td align="right">14.66</td> +<td align="right">16.71</td> +<td align="right">12.32</td> +</tr> +<tr class="odd"> +<td align="right">42.0293615</td> +<td align="right">41.86</td> +<td align="right">15.97</td> +<td align="right">13.64</td> +<td align="right">15.53</td> +</tr> +<tr class="even"> +<td align="right">63.0440422</td> +<td align="right">34.88</td> +<td align="right">18.20</td> +<td align="right">14.12</td> +<td align="right">22.02</td> +</tr> +<tr class="odd"> +<td align="right">84.0587230</td> +<td align="right">28.26</td> +<td align="right">15.64</td> +<td align="right">14.06</td> +<td align="right">25.60</td> +</tr> +<tr class="even"> +<td align="right">0.0000000</td> +<td align="right">104.05</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">2.1014681</td> +<td align="right">85.25</td> +<td align="right">2.68</td> +<td align="right">7.32</td> +<td align="right">0.69</td> +</tr> +<tr class="even"> +<td align="right">4.9034255</td> +<td align="right">77.22</td> +<td align="right">7.28</td> +<td align="right">8.37</td> +<td align="right">1.45</td> +</tr> +<tr class="odd"> +<td align="right">10.5073404</td> +<td align="right">65.23</td> +<td align="right">10.73</td> +<td align="right">10.93</td> +<td align="right">4.74</td> +</tr> +<tr class="even"> +<td align="right">21.0146807</td> +<td align="right">57.78</td> +<td align="right">12.29</td> +<td align="right">14.80</td> +<td align="right">9.05</td> +</tr> +<tr class="odd"> +<td align="right">31.5220211</td> +<td align="right">54.83</td> +<td align="right">14.05</td> +<td align="right">12.01</td> +<td align="right">11.05</td> +</tr> +<tr class="even"> +<td align="right">42.0293615</td> +<td align="right">45.17</td> +<td align="right">12.12</td> +<td align="right">17.89</td> +<td align="right">15.71</td> +</tr> +<tr class="odd"> +<td align="right">63.0440422</td> +<td align="right">34.83</td> +<td align="right">12.90</td> +<td align="right">15.86</td> +<td align="right">22.52</td> +</tr> +<tr class="even"> +<td align="right">84.0587230</td> +<td align="right">26.59</td> +<td align="right">14.28</td> +<td align="right">14.91</td> +<td align="right">28.48</td> +</tr> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">104.62</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0.8145225</td> +<td align="right">97.21</td> +<td align="right">NA</td> +<td align="right">4.00</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">1.9005525</td> +<td align="right">89.64</td> +<td align="right">3.59</td> +<td align="right">5.24</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">4.0726125</td> +<td align="right">87.90</td> +<td align="right">4.10</td> +<td align="right">9.58</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">8.1452251</td> +<td align="right">86.90</td> +<td align="right">5.96</td> +<td align="right">9.45</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">12.2178376</td> +<td align="right">74.74</td> +<td align="right">7.83</td> +<td align="right">15.03</td> +<td align="right">5.33</td> +</tr> +<tr class="odd"> +<td align="right">16.2904502</td> +<td align="right">74.13</td> +<td align="right">8.84</td> +<td align="right">14.41</td> +<td align="right">5.10</td> +</tr> +<tr class="even"> +<td align="right">24.4356753</td> +<td align="right">65.26</td> +<td align="right">11.84</td> +<td align="right">18.33</td> +<td align="right">6.71</td> +</tr> +<tr class="odd"> +<td align="right">32.5809004</td> +<td align="right">57.70</td> +<td align="right">12.74</td> +<td align="right">19.93</td> +<td align="right">9.74</td> +</tr> +<tr class="even"> +<td align="right">0.0000000</td> +<td align="right">101.94</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">0.8145225</td> +<td align="right">99.94</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">1.9005525</td> +<td align="right">94.87</td> +<td align="right">NA</td> +<td align="right">4.56</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">4.0726125</td> +<td align="right">86.96</td> +<td align="right">6.75</td> +<td align="right">6.90</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">8.1452251</td> +<td align="right">80.51</td> +<td align="right">10.68</td> +<td align="right">7.43</td> +<td align="right">2.58</td> +</tr> +<tr class="odd"> +<td align="right">12.2178376</td> +<td align="right">78.38</td> +<td align="right">10.35</td> +<td align="right">9.46</td> +<td align="right">3.69</td> +</tr> +<tr class="even"> +<td align="right">16.2904502</td> +<td align="right">70.05</td> +<td align="right">13.73</td> +<td align="right">9.27</td> +<td align="right">7.18</td> +</tr> +<tr class="odd"> +<td align="right">24.4356753</td> +<td align="right">61.28</td> +<td align="right">12.57</td> +<td align="right">13.28</td> +<td align="right">13.19</td> +</tr> +<tr class="even"> +<td align="right">32.5809004</td> +<td align="right">52.85</td> +<td align="right">12.67</td> +<td align="right">12.95</td> +<td align="right">13.69</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Sassafras</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">cyan</th> +<th align="right">JCZ38</th> +<th align="right">J9Z38</th> +<th align="right">JSE76</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">102.17</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">2.216719</td> +<td align="right">95.49</td> +<td align="right">1.11</td> +<td align="right">0.10</td> +<td align="right">0.83</td> +</tr> +<tr class="odd"> +<td align="right">5.172343</td> +<td align="right">83.35</td> +<td align="right">6.43</td> +<td align="right">2.89</td> +<td align="right">3.30</td> +</tr> +<tr class="even"> +<td align="right">11.083593</td> +<td align="right">78.18</td> +<td align="right">10.00</td> +<td align="right">5.59</td> +<td align="right">0.81</td> +</tr> +<tr class="odd"> +<td align="right">22.167186</td> +<td align="right">70.44</td> +<td align="right">17.21</td> +<td align="right">4.23</td> +<td align="right">1.09</td> +</tr> +<tr class="even"> +<td align="right">33.250779</td> +<td align="right">68.00</td> +<td align="right">20.45</td> +<td align="right">5.86</td> +<td align="right">1.17</td> +</tr> +<tr class="odd"> +<td align="right">44.334371</td> +<td align="right">59.64</td> +<td align="right">24.64</td> +<td align="right">3.17</td> +<td align="right">2.72</td> +</tr> +<tr class="even"> +<td align="right">66.501557</td> +<td align="right">50.73</td> +<td align="right">27.50</td> +<td align="right">6.19</td> +<td align="right">1.27</td> +</tr> +<tr class="odd"> +<td align="right">88.668742</td> +<td align="right">45.65</td> +<td align="right">32.77</td> +<td align="right">5.69</td> +<td align="right">4.54</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">100.43</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">2.216719</td> +<td align="right">95.34</td> +<td align="right">3.21</td> +<td align="right">0.14</td> +<td align="right">0.46</td> +</tr> +<tr class="even"> +<td align="right">5.172343</td> +<td align="right">84.38</td> +<td align="right">5.73</td> +<td align="right">4.75</td> +<td align="right">0.62</td> +</tr> +<tr class="odd"> +<td align="right">11.083593</td> +<td align="right">78.50</td> +<td align="right">11.89</td> +<td align="right">3.99</td> +<td align="right">0.73</td> +</tr> +<tr class="even"> +<td align="right">22.167186</td> +<td align="right">71.17</td> +<td align="right">17.28</td> +<td align="right">4.39</td> +<td align="right">0.66</td> +</tr> +<tr class="odd"> +<td align="right">33.250779</td> +<td align="right">59.41</td> +<td align="right">18.73</td> +<td align="right">11.85</td> +<td align="right">2.65</td> +</tr> +<tr class="even"> +<td align="right">44.334371</td> +<td align="right">64.57</td> +<td align="right">22.93</td> +<td align="right">5.13</td> +<td align="right">2.01</td> +</tr> +<tr class="odd"> +<td align="right">66.501557</td> +<td align="right">49.08</td> +<td align="right">33.39</td> +<td align="right">5.67</td> +<td align="right">3.63</td> +</tr> +<tr class="even"> +<td align="right">88.668742</td> +<td align="right">40.41</td> +<td align="right">39.60</td> +<td align="right">5.93</td> +<td align="right">6.17</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Lleida</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">cyan</th> +<th align="right">JCZ38</th> +<th align="right">J9Z38</th> +<th align="right">JSE76</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">102.71</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">2.821051</td> +<td align="right">79.11</td> +<td align="right">5.70</td> +<td align="right">8.07</td> +<td align="right">0.97</td> +</tr> +<tr class="odd"> +<td align="right">6.582451</td> +<td align="right">70.03</td> +<td align="right">7.17</td> +<td align="right">11.31</td> +<td align="right">4.72</td> +</tr> +<tr class="even"> +<td align="right">14.105253</td> +<td align="right">50.93</td> +<td align="right">10.25</td> +<td align="right">14.84</td> +<td align="right">9.95</td> +</tr> +<tr class="odd"> +<td align="right">28.210505</td> +<td align="right">33.43</td> +<td align="right">10.40</td> +<td align="right">14.82</td> +<td align="right">24.06</td> +</tr> +<tr class="even"> +<td align="right">42.315758</td> +<td align="right">24.69</td> +<td align="right">9.75</td> +<td align="right">16.38</td> +<td align="right">29.38</td> +</tr> +<tr class="odd"> +<td align="right">56.421010</td> +<td align="right">22.99</td> +<td align="right">10.06</td> +<td align="right">15.51</td> +<td align="right">29.25</td> +</tr> +<tr class="even"> +<td align="right">84.631516</td> +<td align="right">14.63</td> +<td align="right">5.63</td> +<td align="right">14.74</td> +<td align="right">31.04</td> +</tr> +<tr class="odd"> +<td align="right">112.842021</td> +<td align="right">12.43</td> +<td align="right">4.17</td> +<td align="right">13.53</td> +<td align="right">33.28</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">99.31</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">2.821051</td> +<td align="right">82.07</td> +<td align="right">6.55</td> +<td align="right">5.60</td> +<td align="right">1.12</td> +</tr> +<tr class="even"> +<td align="right">6.582451</td> +<td align="right">70.65</td> +<td align="right">7.61</td> +<td align="right">8.01</td> +<td align="right">3.21</td> +</tr> +<tr class="odd"> +<td align="right">14.105253</td> +<td align="right">53.52</td> +<td align="right">11.48</td> +<td align="right">10.82</td> +<td align="right">12.24</td> +</tr> +<tr class="even"> +<td align="right">28.210505</td> +<td align="right">35.60</td> +<td align="right">11.19</td> +<td align="right">15.43</td> +<td align="right">23.53</td> +</tr> +<tr class="odd"> +<td align="right">42.315758</td> +<td align="right">34.26</td> +<td align="right">11.09</td> +<td align="right">13.26</td> +<td align="right">27.42</td> +</tr> +<tr class="even"> +<td align="right">56.421010</td> +<td align="right">21.79</td> +<td align="right">4.80</td> +<td align="right">18.30</td> +<td align="right">30.20</td> +</tr> +<tr class="odd"> +<td align="right">84.631516</td> +<td align="right">14.06</td> +<td align="right">6.30</td> +<td align="right">16.35</td> +<td align="right">32.32</td> +</tr> +<tr class="even"> +<td align="right">112.842021</td> +<td align="right">11.51</td> +<td align="right">5.57</td> +<td align="right">12.64</td> +<td align="right">32.51</td> +</tr> +</tbody> +</table> +</div> +</div> +<div class="section level2"> +<h2 id="parent-only-evaluations">Parent only evaluations<a class="anchor" aria-label="anchor" href="#parent-only-evaluations"></a> +</h2> +<p>As the pathway fits have very long run times, evaluations of the +parent data are performed first, in order to determine for each +hierarchical parent degradation model which random effects on the +degradation model parameters are ill-defined.</p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">cyan_sep_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span>, <span class="st">"SFORB"</span>, <span class="st">"HS"</span><span class="op">)</span>,</span> +<span> <span class="va">cyan_ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, cores <span class="op">=</span> <span class="va">n_cores</span><span class="op">)</span></span> +<span><span class="va">cyan_sep_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">cyan_sep_const</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span> +<span><span class="va">cyan_saem_full</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mhmkin.html">mhmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">cyan_sep_const</span>, <span class="va">cyan_sep_tc</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">cyan_saem_full</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>All fits converged successfully.</p> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">cyan_saem_full</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">sd(cyan_0)</td> +<td align="left">sd(cyan_0)</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">sd(log_beta)</td> +<td align="left">sd(cyan_0)</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">sd(cyan_0)</td> +<td align="left">sd(cyan_0), sd(log_k1)</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">sd(cyan_free_0)</td> +<td align="left">sd(cyan_free_0), sd(log_k_cyan_free_bound)</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">sd(cyan_0)</td> +<td align="left">sd(cyan_0)</td> +</tr> +</tbody> +</table> +<p>In almost all models, the random effect for the initial concentration +of the parent compound is ill-defined. For the biexponential models DFOP +and SFORB, the random effect of one additional parameter is ill-defined +when the two-component error model is used.</p> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">cyan_saem_full</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO const</td> +<td align="right">5</td> +<td align="right">833.9</td> +<td align="right">832.0</td> +<td align="right">-412.0</td> +</tr> +<tr class="even"> +<td align="left">SFO tc</td> +<td align="right">6</td> +<td align="right">831.6</td> +<td align="right">829.3</td> +<td align="right">-409.8</td> +</tr> +<tr class="odd"> +<td align="left">FOMC const</td> +<td align="right">7</td> +<td align="right">709.1</td> +<td align="right">706.4</td> +<td align="right">-347.6</td> +</tr> +<tr class="even"> +<td align="left">FOMC tc</td> +<td align="right">8</td> +<td align="right">689.2</td> +<td align="right">686.1</td> +<td align="right">-336.6</td> +</tr> +<tr class="odd"> +<td align="left">DFOP const</td> +<td align="right">9</td> +<td align="right">703.0</td> +<td align="right">699.5</td> +<td align="right">-342.5</td> +</tr> +<tr class="even"> +<td align="left">SFORB const</td> +<td align="right">9</td> +<td align="right">701.3</td> +<td align="right">697.8</td> +<td align="right">-341.7</td> +</tr> +<tr class="odd"> +<td align="left">HS const</td> +<td align="right">9</td> +<td align="right">718.6</td> +<td align="right">715.1</td> +<td align="right">-350.3</td> +</tr> +<tr class="even"> +<td align="left">DFOP tc</td> +<td align="right">10</td> +<td align="right">703.1</td> +<td align="right">699.2</td> +<td align="right">-341.6</td> +</tr> +<tr class="odd"> +<td align="left">SFORB tc</td> +<td align="right">10</td> +<td align="right">700.0</td> +<td align="right">696.1</td> +<td align="right">-340.0</td> +</tr> +<tr class="even"> +<td align="left">HS tc</td> +<td align="right">10</td> +<td align="right">716.7</td> +<td align="right">712.8</td> +<td align="right">-348.3</td> +</tr> +</tbody> +</table> +<p>Model comparison based on AIC and BIC indicates that the +two-component error model is preferable for all parent models with the +exception of DFOP. The lowest AIC and BIC values are are obtained with +the FOMC model, followed by SFORB and DFOP.</p> +<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">stopCluster</a></span><span class="op">(</span><span class="va">cl</span><span class="op">)</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="pathway-fits">Pathway fits<a class="anchor" aria-label="anchor" href="#pathway-fits"></a> +</h2> +<div class="section level3"> +<h3 id="evaluations-with-pathway-established-previously">Evaluations with pathway established previously<a class="anchor" aria-label="anchor" href="#evaluations-with-pathway-established-previously"></a> +</h3> +<p>To test the technical feasibility of coupling the relevant parent +degradation models with different transformation pathway models, a list +of <code>mkinmod</code> models is set up below. As in the EU evaluation, +parallel formation of metabolites JCZ38 and J9Z38 and secondary +formation of metabolite JSE76 from JCZ38 is used.</p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">if</span> <span class="op">(</span><span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/files2.html" class="external-link">dir.exists</a></span><span class="op">(</span><span class="st">"cyan_dlls"</span><span class="op">)</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/files2.html" class="external-link">dir.create</a></span><span class="op">(</span><span class="st">"cyan_dlls"</span><span class="op">)</span></span> +<span><span class="va">cyan_path_1</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span></span> +<span> sfo_path_1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> cyan <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"JCZ38"</span>, <span class="st">"J9Z38"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> JCZ38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JSE76"</span><span class="op">)</span>,</span> +<span> J9Z38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> JSE76 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> name <span class="op">=</span> <span class="st">"sfo_path_1"</span>, dll_dir <span class="op">=</span> <span class="st">"cyan_dlls"</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> fomc_path_1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> cyan <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"JCZ38"</span>, <span class="st">"J9Z38"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> JCZ38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JSE76"</span><span class="op">)</span>,</span> +<span> J9Z38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> JSE76 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> name <span class="op">=</span> <span class="st">"fomc_path_1"</span>, dll_dir <span class="op">=</span> <span class="st">"cyan_dlls"</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> dfop_path_1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> cyan <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"JCZ38"</span>, <span class="st">"J9Z38"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> JCZ38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JSE76"</span><span class="op">)</span>,</span> +<span> J9Z38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> JSE76 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> name <span class="op">=</span> <span class="st">"dfop_path_1"</span>, dll_dir <span class="op">=</span> <span class="st">"cyan_dlls"</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> sforb_path_1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> cyan <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"JCZ38"</span>, <span class="st">"J9Z38"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> JCZ38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JSE76"</span><span class="op">)</span>,</span> +<span> J9Z38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> JSE76 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> name <span class="op">=</span> <span class="st">"sforb_path_1"</span>, dll_dir <span class="op">=</span> <span class="st">"cyan_dlls"</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> hs_path_1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> cyan <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"HS"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"JCZ38"</span>, <span class="st">"J9Z38"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> JCZ38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JSE76"</span><span class="op">)</span>,</span> +<span> J9Z38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> JSE76 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> name <span class="op">=</span> <span class="st">"hs_path_1"</span>, dll_dir <span class="op">=</span> <span class="st">"cyan_dlls"</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="op">)</span></span> +<span><span class="va">cl_path_1</span> <span class="op"><-</span> <span class="fu">start_cluster</span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span></code></pre></div> +<p>To obtain suitable starting values for the NLHM fits, separate +pathway fits are performed for all datasets.</p> +<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_sep_1_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span></span> +<span> <span class="va">cyan_path_1</span>,</span> +<span> <span class="va">cyan_ds</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"const"</span>,</span> +<span> cluster <span class="op">=</span> <span class="va">cl_path_1</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_1_const</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Nambsheim</th> +<th align="left">Tama</th> +<th align="left">Gross-Umstadt</th> +<th align="left">Sassafras</th> +<th align="left">Lleida</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">C</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_sep_1_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_sep_1_const</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_1_tc</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Nambsheim</th> +<th align="left">Tama</th> +<th align="left">Gross-Umstadt</th> +<th align="left">Sassafras</th> +<th align="left">Lleida</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +</tr> +</tbody> +</table> +<p>Most separate fits converged successfully. The biggest convergence +problems are seen when using the HS model with constant variance.</p> +<p>For the hierarchical pathway fits, those random effects that could +not be quantified in the corresponding parent data analyses are +excluded.</p> +<p>In the code below, the output of the <code>illparms</code> function +for the parent only fits is used as an argument +<code>no_random_effect</code> to the <code>mhmkin</code> function. The +possibility to do so was introduced in mkin version <code>1.2.2</code> +which is currently under development.</p> +<div class="sourceCode" id="cb12"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mhmkin.html">mhmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">f_sep_1_const</span>, <span class="va">f_sep_1_tc</span><span class="op">)</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">cyan_saem_full</span><span class="op">)</span>,</span> +<span> cluster <span class="op">=</span> <span class="va">cl_path_1</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1</td> +<td align="left">FO</td> +<td align="left">Fth, FO</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1</td> +<td align="left">OK</td> +<td align="left">Fth, FO</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1</td> +<td align="left">Fth, FO</td> +<td align="left">Fth, FO</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1</td> +<td align="left">Fth, FO</td> +<td align="left">Fth, FO</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1</td> +<td align="left">FO</td> +<td align="left">E</td> +</tr> +</tbody> +</table> +<p>The status information from the individual fits shows that all fits +completed successfully. The matrix entries Fth and FO indicate that the +Fisher Information Matrix could not be inverted for the fixed effects +(theta) and the random effects (Omega), respectively. For the affected +fits, ill-defined parameters cannot be determined using the +<code>illparms</code> function, because it relies on the Fisher +Information Matrix.</p> +<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<colgroup> +<col width="18%"> +<col width="77%"> +<col width="4%"> +</colgroup> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1</td> +<td align="left">NA</td> +<td align="left">NA</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1</td> +<td align="left">sd(log_k_J9Z38), sd(f_cyan_ilr_2), +sd(f_JCZ38_qlogis)</td> +<td align="left">NA</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1</td> +<td align="left">NA</td> +<td align="left">NA</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1</td> +<td align="left">NA</td> +<td align="left">NA</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1</td> +<td align="left">NA</td> +<td align="left">E</td> +</tr> +</tbody> +</table> +<p>The model comparisons below suggest that the pathway fits using DFOP +or SFORB for the parent compound provide the best fit.</p> +<div class="sourceCode" id="cb15"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">[</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1 const</td> +<td align="right">16</td> +<td align="right">2693.0</td> +<td align="right">2686.8</td> +<td align="right">-1330.5</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1 const</td> +<td align="right">18</td> +<td align="right">2427.9</td> +<td align="right">2420.9</td> +<td align="right">-1196.0</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1 const</td> +<td align="right">20</td> +<td align="right">2403.2</td> +<td align="right">2395.4</td> +<td align="right">-1181.6</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1 const</td> +<td align="right">20</td> +<td align="right">2401.4</td> +<td align="right">2393.6</td> +<td align="right">-1180.7</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1 const</td> +<td align="right">20</td> +<td align="right">2427.2</td> +<td align="right">2419.4</td> +<td align="right">-1193.6</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">4</span>, <span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1 const</td> +<td align="right">16</td> +<td align="right">2693.0</td> +<td align="right">2686.8</td> +<td align="right">-1330.5</td> +</tr> +<tr class="even"> +<td align="left">sfo_path_1 tc</td> +<td align="right">17</td> +<td align="right">2657.6</td> +<td align="right">2651.0</td> +<td align="right">-1311.8</td> +</tr> +<tr class="odd"> +<td align="left">fomc_path_1 const</td> +<td align="right">18</td> +<td align="right">2427.9</td> +<td align="right">2420.9</td> +<td align="right">-1196.0</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1 tc</td> +<td align="right">19</td> +<td align="right">2423.6</td> +<td align="right">2416.2</td> +<td align="right">-1192.8</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1 const</td> +<td align="right">20</td> +<td align="right">2403.2</td> +<td align="right">2395.4</td> +<td align="right">-1181.6</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1 const</td> +<td align="right">20</td> +<td align="right">2401.4</td> +<td align="right">2393.6</td> +<td align="right">-1180.7</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1 tc</td> +<td align="right">20</td> +<td align="right">2398.0</td> +<td align="right">2390.1</td> +<td align="right">-1179.0</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1 tc</td> +<td align="right">20</td> +<td align="right">2399.9</td> +<td align="right">2392.1</td> +<td align="right">-1180.0</td> +</tr> +</tbody> +</table> +<p>For these two parent model, successful fits are shown below. Plots of +the fits with the other parent models are shown in the Appendix.</p> +<div class="sourceCode" id="cb17"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">[[</span><span class="st">"dfop_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_cyan_pathway_files/figure-html/unnamed-chunk-7-1.png" alt="DFOP pathway fit with two-component error" width="700"><p class="caption"> +DFOP pathway fit with two-component error +</p> +</div> +<div class="sourceCode" id="cb18"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">[[</span><span class="st">"sforb_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_cyan_pathway_files/figure-html/unnamed-chunk-8-1.png" alt="SFORB pathway fit with two-component error" width="700"><p class="caption"> +SFORB pathway fit with two-component error +</p> +</div> +<p>A closer graphical analysis of these Figures shows that the residues +of transformation product JCZ38 in the soils Tama and Nambsheim observed +at later time points are strongly and systematically underestimated.</p> +<div class="sourceCode" id="cb19"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">stopCluster</a></span><span class="op">(</span><span class="va">cl_path_1</span><span class="op">)</span></span></code></pre></div> +</div> +<div class="section level3"> +<h3 id="alternative-pathway-fits">Alternative pathway fits<a class="anchor" aria-label="anchor" href="#alternative-pathway-fits"></a> +</h3> +<p>To improve the fit for JCZ38, a back-reaction from JSE76 to JCZ38 was +introduced in an alternative version of the transformation pathway, in +analogy to the back-reaction from K5A78 to K5A77. Both pairs of +transformation products are pairs of an organic acid with its +corresponding amide (Addendum 2014, p. 109). As FOMC provided the best +fit for the parent, and the biexponential models DFOP and SFORB provided +the best initial pathway fits, these three parent models are used in the +alternative pathway fits.</p> +<div class="sourceCode" id="cb20"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">cyan_path_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span></span> +<span> fomc_path_2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> cyan <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"JCZ38"</span>, <span class="st">"J9Z38"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> JCZ38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JSE76"</span><span class="op">)</span>,</span> +<span> J9Z38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> JSE76 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JCZ38"</span><span class="op">)</span>,</span> +<span> name <span class="op">=</span> <span class="st">"fomc_path_2"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> dll_dir <span class="op">=</span> <span class="st">"cyan_dlls"</span>,</span> +<span> overwrite <span class="op">=</span> <span class="cn">TRUE</span></span> +<span> <span class="op">)</span>,</span> +<span> dfop_path_2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> cyan <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"JCZ38"</span>, <span class="st">"J9Z38"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> JCZ38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JSE76"</span><span class="op">)</span>,</span> +<span> J9Z38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> JSE76 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JCZ38"</span><span class="op">)</span>,</span> +<span> name <span class="op">=</span> <span class="st">"dfop_path_2"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> dll_dir <span class="op">=</span> <span class="st">"cyan_dlls"</span>,</span> +<span> overwrite <span class="op">=</span> <span class="cn">TRUE</span></span> +<span> <span class="op">)</span>,</span> +<span> sforb_path_2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> cyan <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"JCZ38"</span>, <span class="st">"J9Z38"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> JCZ38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JSE76"</span><span class="op">)</span>,</span> +<span> J9Z38 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> JSE76 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"JCZ38"</span><span class="op">)</span>,</span> +<span> name <span class="op">=</span> <span class="st">"sforb_path_2"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> dll_dir <span class="op">=</span> <span class="st">"cyan_dlls"</span>,</span> +<span> overwrite <span class="op">=</span> <span class="cn">TRUE</span></span> +<span> <span class="op">)</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="va">cl_path_2</span> <span class="op"><-</span> <span class="fu">start_cluster</span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span><span class="va">f_sep_2_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span></span> +<span> <span class="va">cyan_path_2</span>,</span> +<span> <span class="va">cyan_ds</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"const"</span>,</span> +<span> cluster <span class="op">=</span> <span class="va">cl_path_2</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_2_const</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Nambsheim</th> +<th align="left">Tama</th> +<th align="left">Gross-Umstadt</th> +<th align="left">Sassafras</th> +<th align="left">Lleida</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">fomc_path_2</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">dfop_path_2</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_2</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>Using constant variance, separate fits converge with the exception of +the fits to the Sassafras soil data.</p> +<div class="sourceCode" id="cb21"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_sep_2_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_sep_2_const</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_2_tc</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Nambsheim</th> +<th align="left">Tama</th> +<th align="left">Gross-Umstadt</th> +<th align="left">Sassafras</th> +<th align="left">Lleida</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">fomc_path_2</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">dfop_path_2</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_2</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>Using the two-component error model, all separate fits converge with +the exception of the alternative pathway fit with DFOP used for the +parent and the Sassafras dataset.</p> +<div class="sourceCode" id="cb22"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_2</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mhmkin.html">mhmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">f_sep_2_const</span>, <span class="va">f_sep_2_tc</span><span class="op">)</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">cyan_saem_full</span><span class="op">[</span><span class="fl">2</span><span class="op">:</span><span class="fl">4</span>, <span class="op">]</span><span class="op">)</span>,</span> +<span> cluster <span class="op">=</span> <span class="va">cl_path_2</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb23"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">fomc_path_2</td> +<td align="left">E</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">dfop_path_2</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_2</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>The hierarchical fits for the alternative pathway completed +successfully, with the exception of the model using FOMC for the parent +compound and constant variance as the error model.</p> +<div class="sourceCode" id="cb24"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<colgroup> +<col width="14%"> +<col width="42%"> +<col width="42%"> +</colgroup> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">fomc_path_2</td> +<td align="left">E</td> +<td align="left">sd(f_JSE76_qlogis)</td> +</tr> +<tr class="even"> +<td align="left">dfop_path_2</td> +<td align="left">sd(f_JCZ38_qlogis), sd(f_JSE76_qlogis)</td> +<td align="left">sd(f_JCZ38_qlogis), sd(f_JSE76_qlogis)</td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_2</td> +<td align="left">sd(f_JCZ38_qlogis), sd(f_JSE76_qlogis)</td> +<td align="left">sd(f_JCZ38_qlogis), sd(f_JSE76_qlogis)</td> +</tr> +</tbody> +</table> +<p>In all biphasic fits (DFOP or SFORB for the parent compound), the +random effects for the formation fractions for the pathways from JCZ38 +to JSE76, and for the reverse pathway from JSE76 to JCZ38 are +ill-defined.</p> +<div class="sourceCode" id="cb25"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">fomc_path_2 tc</td> +<td align="right">21</td> +<td align="right">2249.0</td> +<td align="right">2240.8</td> +<td align="right">-1103.5</td> +</tr> +<tr class="even"> +<td align="left">dfop_path_2 tc</td> +<td align="right">22</td> +<td align="right">2234.4</td> +<td align="right">2225.8</td> +<td align="right">-1095.2</td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_2 tc</td> +<td align="right">22</td> +<td align="right">2239.7</td> +<td align="right">2231.1</td> +<td align="right">-1097.9</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb26"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[</span><span class="fl">2</span><span class="op">:</span><span class="fl">3</span>,<span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">dfop_path_2 const</td> +<td align="right">22</td> +<td align="right">2288.4</td> +<td align="right">2279.8</td> +<td align="right">-1122.2</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_2 const</td> +<td align="right">22</td> +<td align="right">2283.3</td> +<td align="right">2274.7</td> +<td align="right">-1119.7</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_2 tc</td> +<td align="right">22</td> +<td align="right">2234.4</td> +<td align="right">2225.8</td> +<td align="right">-1095.2</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_2 tc</td> +<td align="right">22</td> +<td align="right">2239.7</td> +<td align="right">2231.1</td> +<td align="right">-1097.9</td> +</tr> +</tbody> +</table> +<p>The variants using the biexponential models DFOP and SFORB for the +parent compound and the two-component error model give the lowest AIC +and BIC values and are plotted below. Compared with the original +pathway, the AIC and BIC values indicate a large improvement. This is +confirmed by the plots, which show that the metabolite JCZ38 is fitted +much better with this model.</p> +<div class="sourceCode" id="cb27"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"fomc_path_2"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_cyan_pathway_files/figure-html/unnamed-chunk-13-1.png" alt="FOMC pathway fit with two-component error, alternative pathway" width="700"><p class="caption"> +FOMC pathway fit with two-component error, alternative pathway +</p> +</div> +<div class="sourceCode" id="cb28"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"dfop_path_2"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_cyan_pathway_files/figure-html/unnamed-chunk-14-1.png" alt="DFOP pathway fit with two-component error, alternative pathway" width="700"><p class="caption"> +DFOP pathway fit with two-component error, alternative pathway +</p> +</div> +<div class="sourceCode" id="cb29"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"sforb_path_2"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_cyan_pathway_files/figure-html/unnamed-chunk-15-1.png" alt="SFORB pathway fit with two-component error, alternative pathway" width="700"><p class="caption"> +SFORB pathway fit with two-component error, alternative pathway +</p> +</div> +</div> +<div class="section level3"> +<h3 id="refinement-of-alternative-pathway-fits">Refinement of alternative pathway fits<a class="anchor" aria-label="anchor" href="#refinement-of-alternative-pathway-fits"></a> +</h3> +<p>All ill-defined random effects that were identified in the parent +only fits and in the above pathway fits, are excluded for the final +evaluations below. For this purpose, a list of character vectors is +created below that can be indexed by row and column indices, and which +contains the degradation parameter names for which random effects should +be excluded for each of the hierarchical fits contained in +<code>f_saem_2</code>.</p> +<div class="sourceCode" id="cb30"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">no_ranef</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/matrix.html" class="external-link">matrix</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="op">)</span>, nrow <span class="op">=</span> <span class="fl">3</span>, ncol <span class="op">=</span> <span class="fl">2</span>, dimnames <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/dimnames.html" class="external-link">dimnames</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="va">no_ranef</span><span class="op">[[</span><span class="st">"fomc_path_2"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"log_beta"</span>, <span class="st">"f_JCZ38_qlogis"</span>, <span class="st">"f_JSE76_qlogis"</span><span class="op">)</span></span> +<span><span class="va">no_ranef</span><span class="op">[[</span><span class="st">"fomc_path_2"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"cyan_0"</span>, <span class="st">"f_JCZ38_qlogis"</span>, <span class="st">"f_JSE76_qlogis"</span><span class="op">)</span></span> +<span><span class="va">no_ranef</span><span class="op">[[</span><span class="st">"dfop_path_2"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"cyan_0"</span>, <span class="st">"f_JCZ38_qlogis"</span>, <span class="st">"f_JSE76_qlogis"</span><span class="op">)</span></span> +<span><span class="va">no_ranef</span><span class="op">[[</span><span class="st">"dfop_path_2"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"cyan_0"</span>, <span class="st">"log_k1"</span>, <span class="st">"f_JCZ38_qlogis"</span>, <span class="st">"f_JSE76_qlogis"</span><span class="op">)</span></span> +<span><span class="va">no_ranef</span><span class="op">[[</span><span class="st">"sforb_path_2"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"cyan_free_0"</span>,</span> +<span> <span class="st">"f_JCZ38_qlogis"</span>, <span class="st">"f_JSE76_qlogis"</span><span class="op">)</span></span> +<span><span class="va">no_ranef</span><span class="op">[[</span><span class="st">"sforb_path_2"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"cyan_free_0"</span>, <span class="st">"log_k_cyan_free_bound"</span>,</span> +<span> <span class="st">"f_JCZ38_qlogis"</span>, <span class="st">"f_JSE76_qlogis"</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/parallel/clusterApply.html" class="external-link">clusterExport</a></span><span class="op">(</span><span class="va">cl_path_2</span>, <span class="st">"no_ranef"</span><span class="op">)</span></span> +<span></span> +<span><span class="va">f_saem_3</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_2</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="va">no_ranef</span>,</span> +<span> cluster <span class="op">=</span> <span class="va">cl_path_2</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb31"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_saem_3</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">fomc_path_2</td> +<td align="left">E</td> +<td align="left">Fth</td> +</tr> +<tr class="even"> +<td align="left">dfop_path_2</td> +<td align="left">Fth</td> +<td align="left">Fth</td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_2</td> +<td align="left">Fth</td> +<td align="left">Fth</td> +</tr> +</tbody> +</table> +<p>With the exception of the FOMC pathway fit with constant variance, +all updated fits completed successfully. However, the Fisher Information +Matrix for the fixed effects (Fth) could not be inverted, so no +confidence intervals for the optimised parameters are available.</p> +<div class="sourceCode" id="cb32"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_3</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">fomc_path_2</td> +<td align="left">E</td> +<td align="left"></td> +</tr> +<tr class="even"> +<td align="left">dfop_path_2</td> +<td align="left"></td> +<td align="left"></td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_2</td> +<td align="left"></td> +<td align="left"></td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb33"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_3</span><span class="op">[</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">fomc_path_2 tc</td> +<td align="right">19</td> +<td align="right">2249.1</td> +<td align="right">2241.6</td> +<td align="right">-1105.5</td> +</tr> +<tr class="even"> +<td align="left">dfop_path_2 tc</td> +<td align="right">20</td> +<td align="right">2237.3</td> +<td align="right">2229.5</td> +<td align="right">-1098.6</td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_2 tc</td> +<td align="right">20</td> +<td align="right">2241.3</td> +<td align="right">2233.5</td> +<td align="right">-1100.7</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb34"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_3</span><span class="op">[</span><span class="fl">2</span><span class="op">:</span><span class="fl">3</span>,<span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">dfop_path_2 const</td> +<td align="right">20</td> +<td align="right">2282.2</td> +<td align="right">2274.4</td> +<td align="right">-1121.1</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_2 const</td> +<td align="right">20</td> +<td align="right">2279.7</td> +<td align="right">2271.9</td> +<td align="right">-1119.9</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_2 tc</td> +<td align="right">20</td> +<td align="right">2237.3</td> +<td align="right">2229.5</td> +<td align="right">-1098.6</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_2 tc</td> +<td align="right">20</td> +<td align="right">2241.3</td> +<td align="right">2233.5</td> +<td align="right">-1100.7</td> +</tr> +</tbody> +</table> +<p>While the AIC and BIC values of the best fit (DFOP pathway fit with +two-component error) are lower than in the previous fits with the +alternative pathway, the practical value of these refined evaluations is +limited as no confidence intervals are obtained.</p> +<div class="sourceCode" id="cb35"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">stopCluster</a></span><span class="op">(</span><span class="va">cl_path_2</span><span class="op">)</span></span></code></pre></div> +</div> +</div> +<div class="section level2"> +<h2 id="conclusion">Conclusion<a class="anchor" aria-label="anchor" href="#conclusion"></a> +</h2> +<p>It was demonstrated that a relatively complex transformation pathway +with parallel formation of two primary metabolites and one secondary +metabolite can be fitted even if the data in the individual datasets are +quite different and partly only cover the formation phase.</p> +<p>The run times of the pathway fits were several hours, limiting the +practical feasibility of iterative refinements based on ill-defined +parameters and of alternative checks of parameter identifiability based +on multistart runs.</p> +</div> +<div class="section level2"> +<h2 id="acknowledgements">Acknowledgements<a class="anchor" aria-label="anchor" href="#acknowledgements"></a> +</h2> +<p>The helpful comments by Janina Wöltjen of the German Environment +Agency are gratefully acknowledged.</p> +</div> +<div class="section level2"> +<h2 id="appendix">Appendix<a class="anchor" aria-label="anchor" href="#appendix"></a> +</h2> +<div class="section level3"> +<h3 id="plots-of-fits-that-were-not-refined-further">Plots of fits that were not refined further<a class="anchor" aria-label="anchor" href="#plots-of-fits-that-were-not-refined-further"></a> +</h3> +<div class="sourceCode" id="cb36"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">[[</span><span class="st">"sfo_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_cyan_pathway_files/figure-html/unnamed-chunk-20-1.png" alt="SFO pathway fit with two-component error" width="700"><p class="caption"> +SFO pathway fit with two-component error +</p> +</div> +<div class="sourceCode" id="cb37"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">[[</span><span class="st">"fomc_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_cyan_pathway_files/figure-html/unnamed-chunk-21-1.png" alt="FOMC pathway fit with two-component error" width="700"><p class="caption"> +FOMC pathway fit with two-component error +</p> +</div> +<div class="sourceCode" id="cb38"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">[[</span><span class="st">"sforb_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_cyan_pathway_files/figure-html/unnamed-chunk-22-1.png" alt="HS pathway fit with two-component error" width="700"><p class="caption"> +HS pathway fit with two-component error +</p> +</div> +</div> +<div class="section level3"> +<h3 id="hierarchical-fit-listings">Hierarchical fit listings<a class="anchor" aria-label="anchor" href="#hierarchical-fit-listings"></a> +</h3> +<div class="section level4"> +<h4 id="pathway-1">Pathway 1<a class="anchor" aria-label="anchor" href="#pathway-1"></a> +</h4> +<caption> +Hierarchical SFO path 1 fit with constant variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:42:26 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - k_cyan * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * k_cyan * cyan - k_JCZ38 * JCZ38 +d_J9Z38/dt = + f_cyan_to_J9Z38 * k_cyan * cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 437.151 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_0 log_k_cyan log_k_JCZ38 log_k_J9Z38 log_k_JSE76 + 95.3304 -3.8459 -3.1305 -5.0678 -5.3196 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis + 0.8158 23.5335 11.8774 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_cyan log_k_JCZ38 log_k_J9Z38 log_k_JSE76 +cyan_0 4.797 0.0000 0.000 0.000 0.0000 +log_k_cyan 0.000 0.9619 0.000 0.000 0.0000 +log_k_JCZ38 0.000 0.0000 2.139 0.000 0.0000 +log_k_J9Z38 0.000 0.0000 0.000 1.639 0.0000 +log_k_JSE76 0.000 0.0000 0.000 0.000 0.7894 +f_cyan_ilr_1 0.000 0.0000 0.000 0.000 0.0000 +f_cyan_ilr_2 0.000 0.0000 0.000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.0000 0.000 0.000 0.0000 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis +cyan_0 0.0000 0.000 0.00 +log_k_cyan 0.0000 0.000 0.00 +log_k_JCZ38 0.0000 0.000 0.00 +log_k_J9Z38 0.0000 0.000 0.00 +log_k_JSE76 0.0000 0.000 0.00 +f_cyan_ilr_1 0.7714 0.000 0.00 +f_cyan_ilr_2 0.0000 9.247 0.00 +f_JCZ38_qlogis 0.0000 0.000 16.61 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2693 2687 -1331 + +Optimised parameters: + est. lower upper +cyan_0 95.1279 9.354e+01 9.671e+01 +log_k_cyan -3.8527 -4.367e+00 -3.338e+00 +log_k_JCZ38 -3.0381 -4.187e+00 -1.889e+00 +log_k_J9Z38 -5.0095 -5.623e+00 -4.396e+00 +log_k_JSE76 -5.3357 -6.025e+00 -4.646e+00 +f_cyan_ilr_1 0.8050 5.174e-01 1.093e+00 +f_cyan_ilr_2 12.4820 -1.050e+06 1.051e+06 +f_JCZ38_qlogis 1.2912 3.561e-01 2.226e+00 +a.1 4.8393 NA NA +SD.log_k_cyan 0.5840 NA NA +SD.log_k_JCZ38 1.2740 NA NA +SD.log_k_J9Z38 0.3172 NA NA +SD.log_k_JSE76 0.5677 NA NA +SD.f_cyan_ilr_1 0.2623 NA NA +SD.f_cyan_ilr_2 1.3724 NA NA +SD.f_JCZ38_qlogis 0.1464 NA NA + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_cyan 0.5840 NA NA +SD.log_k_JCZ38 1.2740 NA NA +SD.log_k_J9Z38 0.3172 NA NA +SD.log_k_JSE76 0.5677 NA NA +SD.f_cyan_ilr_1 0.2623 NA NA +SD.f_cyan_ilr_2 1.3724 NA NA +SD.f_JCZ38_qlogis 0.1464 NA NA + +Variance model: + est. lower upper +a.1 4.839 NA NA + +Backtransformed parameters: + est. lower upper +cyan_0 95.127935 93.542456 96.713413 +k_cyan 0.021221 0.012687 0.035497 +k_JCZ38 0.047924 0.015189 0.151213 +k_J9Z38 0.006674 0.003612 0.012332 +k_JSE76 0.004817 0.002417 0.009601 +f_cyan_to_JCZ38 0.757402 NA NA +f_cyan_to_J9Z38 0.242597 NA NA +f_JCZ38_to_JSE76 0.784347 0.588098 0.902582 + +Resulting formation fractions: + ff +cyan_JCZ38 7.574e-01 +cyan_J9Z38 2.426e-01 +cyan_sink 9.839e-08 +JCZ38_JSE76 7.843e-01 +JCZ38_sink 2.157e-01 + +Estimated disappearance times: + DT50 DT90 +cyan 32.66 108.50 +JCZ38 14.46 48.05 +J9Z38 103.86 345.00 +JSE76 143.91 478.04 + +</code></pre> +<p></p> +<caption> +Hierarchical SFO path 1 fit with two-component error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:42:06 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - k_cyan * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * k_cyan * cyan - k_JCZ38 * JCZ38 +d_J9Z38/dt = + f_cyan_to_J9Z38 * k_cyan * cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 417.143 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_0 log_k_cyan log_k_JCZ38 log_k_J9Z38 log_k_JSE76 + 96.0039 -3.8907 -3.1276 -5.0069 -4.9367 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis + 0.7937 22.3422 17.8932 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_cyan log_k_JCZ38 log_k_J9Z38 log_k_JSE76 +cyan_0 4.859 0.000 0.00 0.00 0.0000 +log_k_cyan 0.000 0.962 0.00 0.00 0.0000 +log_k_JCZ38 0.000 0.000 2.04 0.00 0.0000 +log_k_J9Z38 0.000 0.000 0.00 1.72 0.0000 +log_k_JSE76 0.000 0.000 0.00 0.00 0.9076 +f_cyan_ilr_1 0.000 0.000 0.00 0.00 0.0000 +f_cyan_ilr_2 0.000 0.000 0.00 0.00 0.0000 +f_JCZ38_qlogis 0.000 0.000 0.00 0.00 0.0000 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis +cyan_0 0.0000 0.000 0.00 +log_k_cyan 0.0000 0.000 0.00 +log_k_JCZ38 0.0000 0.000 0.00 +log_k_J9Z38 0.0000 0.000 0.00 +log_k_JSE76 0.0000 0.000 0.00 +f_cyan_ilr_1 0.7598 0.000 0.00 +f_cyan_ilr_2 0.0000 8.939 0.00 +f_JCZ38_qlogis 0.0000 0.000 14.49 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2658 2651 -1312 + +Optimised parameters: + est. lower upper +cyan_0 94.81681 NA NA +log_k_cyan -3.91558 NA NA +log_k_JCZ38 -3.12715 NA NA +log_k_J9Z38 -5.04840 NA NA +log_k_JSE76 -5.10443 NA NA +f_cyan_ilr_1 0.80760 NA NA +f_cyan_ilr_2 48.66960 NA NA +f_JCZ38_qlogis 3.03397 NA NA +a.1 3.93879 NA NA +b.1 0.08057 NA NA +SD.log_k_cyan 0.58921 NA NA +SD.log_k_JCZ38 1.29813 NA NA +SD.log_k_J9Z38 0.68372 NA NA +SD.log_k_JSE76 0.35128 NA NA +SD.f_cyan_ilr_1 0.38352 NA NA +SD.f_cyan_ilr_2 4.98884 NA NA +SD.f_JCZ38_qlogis 1.75636 NA NA + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_cyan 0.5892 NA NA +SD.log_k_JCZ38 1.2981 NA NA +SD.log_k_J9Z38 0.6837 NA NA +SD.log_k_JSE76 0.3513 NA NA +SD.f_cyan_ilr_1 0.3835 NA NA +SD.f_cyan_ilr_2 4.9888 NA NA +SD.f_JCZ38_qlogis 1.7564 NA NA + +Variance model: + est. lower upper +a.1 3.93879 NA NA +b.1 0.08057 NA NA + +Backtransformed parameters: + est. lower upper +cyan_0 94.81681 NA NA +k_cyan 0.01993 NA NA +k_JCZ38 0.04384 NA NA +k_J9Z38 0.00642 NA NA +k_JSE76 0.00607 NA NA +f_cyan_to_JCZ38 0.75807 NA NA +f_cyan_to_J9Z38 0.24193 NA NA +f_JCZ38_to_JSE76 0.95409 NA NA + +Resulting formation fractions: + ff +cyan_JCZ38 0.75807 +cyan_J9Z38 0.24193 +cyan_sink 0.00000 +JCZ38_JSE76 0.95409 +JCZ38_sink 0.04591 + +Estimated disappearance times: + DT50 DT90 +cyan 34.78 115.54 +JCZ38 15.81 52.52 +J9Z38 107.97 358.68 +JSE76 114.20 379.35 + +</code></pre> +<p></p> +<caption> +Hierarchical FOMC path 1 fit with constant variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:42:57 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - (alpha/beta) * 1/((time/beta) + 1) * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * (alpha/beta) * 1/((time/beta) + 1) * + cyan - k_JCZ38 * JCZ38 +d_J9Z38/dt = + f_cyan_to_J9Z38 * (alpha/beta) * 1/((time/beta) + 1) * + cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 468.609 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 101.2314 -3.3680 -5.1108 -5.9416 0.7144 + f_cyan_ilr_2 f_JCZ38_qlogis log_alpha log_beta + 7.0229 14.9234 -0.1791 2.9811 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 5.416 0.000 0.0 0.000 0.0000 +log_k_JCZ38 0.000 2.439 0.0 0.000 0.0000 +log_k_J9Z38 0.000 0.000 1.7 0.000 0.0000 +log_k_JSE76 0.000 0.000 0.0 1.856 0.0000 +f_cyan_ilr_1 0.000 0.000 0.0 0.000 0.7164 +f_cyan_ilr_2 0.000 0.000 0.0 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.000 0.0 0.000 0.0000 +log_alpha 0.000 0.000 0.0 0.000 0.0000 +log_beta 0.000 0.000 0.0 0.000 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis log_alpha log_beta +cyan_0 0.00 0.00 0.0000 0.0000 +log_k_JCZ38 0.00 0.00 0.0000 0.0000 +log_k_J9Z38 0.00 0.00 0.0000 0.0000 +log_k_JSE76 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_1 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_2 11.57 0.00 0.0000 0.0000 +f_JCZ38_qlogis 0.00 18.81 0.0000 0.0000 +log_alpha 0.00 0.00 0.4144 0.0000 +log_beta 0.00 0.00 0.0000 0.5077 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2428 2421 -1196 + +Optimised parameters: + est. lower upper +cyan_0 101.1664 98.51265 103.8202 +log_k_JCZ38 -3.3883 -4.78250 -1.9941 +log_k_J9Z38 -5.3087 -5.91564 -4.7017 +log_k_JSE76 -6.1313 -7.30061 -4.9619 +f_cyan_ilr_1 0.7456 0.43782 1.0534 +f_cyan_ilr_2 0.8181 0.24956 1.3866 +f_JCZ38_qlogis 2.0467 0.61165 3.4817 +log_alpha -0.2391 -0.62806 0.1499 +log_beta 2.8739 2.67664 3.0711 +a.1 3.4160 3.17960 3.6525 +SD.cyan_0 2.4355 0.40399 4.4671 +SD.log_k_JCZ38 1.5654 0.57311 2.5576 +SD.log_k_J9Z38 0.4645 -0.06533 0.9943 +SD.log_k_JSE76 0.9841 0.10738 1.8609 +SD.f_cyan_ilr_1 0.3285 0.10546 0.5515 +SD.f_cyan_ilr_2 0.2276 -0.38711 0.8424 +SD.f_JCZ38_qlogis 0.8340 -0.20970 1.8777 +SD.log_alpha 0.4250 0.16017 0.6898 + +Correlation: + cyan_0 l__JCZ3 l__J9Z3 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 log_lph +log_k_JCZ38 -0.0159 +log_k_J9Z38 -0.0546 0.0080 +log_k_JSE76 -0.0337 0.0016 0.0074 +f_cyan_ilr_1 -0.0095 0.0194 -0.1573 0.0003 +f_cyan_ilr_2 -0.2733 0.0799 0.3059 0.0263 0.0125 +f_JCZ38_qlogis 0.0755 -0.0783 -0.0516 0.1222 -0.1155 -0.5231 +log_alpha -0.0567 0.0120 0.0351 0.0189 0.0040 0.0829 -0.0502 +log_beta -0.2980 0.0461 0.1382 0.0758 0.0209 0.4079 -0.2053 0.2759 + +Random effects: + est. lower upper +SD.cyan_0 2.4355 0.40399 4.4671 +SD.log_k_JCZ38 1.5654 0.57311 2.5576 +SD.log_k_J9Z38 0.4645 -0.06533 0.9943 +SD.log_k_JSE76 0.9841 0.10738 1.8609 +SD.f_cyan_ilr_1 0.3285 0.10546 0.5515 +SD.f_cyan_ilr_2 0.2276 -0.38711 0.8424 +SD.f_JCZ38_qlogis 0.8340 -0.20970 1.8777 +SD.log_alpha 0.4250 0.16017 0.6898 + +Variance model: + est. lower upper +a.1 3.416 3.18 3.652 + +Backtransformed parameters: + est. lower upper +cyan_0 1.012e+02 9.851e+01 103.82023 +k_JCZ38 3.377e-02 8.375e-03 0.13614 +k_J9Z38 4.948e-03 2.697e-03 0.00908 +k_JSE76 2.174e-03 6.751e-04 0.00700 +f_cyan_to_JCZ38 6.389e-01 NA NA +f_cyan_to_J9Z38 2.226e-01 NA NA +f_JCZ38_to_JSE76 8.856e-01 6.483e-01 0.97016 +alpha 7.873e-01 5.336e-01 1.16166 +beta 1.771e+01 1.454e+01 21.56509 + +Resulting formation fractions: + ff +cyan_JCZ38 0.6389 +cyan_J9Z38 0.2226 +cyan_sink 0.1385 +JCZ38_JSE76 0.8856 +JCZ38_sink 0.1144 + +Estimated disappearance times: + DT50 DT90 DT50back +cyan 25.00 312.06 93.94 +JCZ38 20.53 68.19 NA +J9Z38 140.07 465.32 NA +JSE76 318.86 1059.22 NA + +</code></pre> +<p></p> +<caption> +Hierarchical FOMC path 1 fit with two-component error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:42:50 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - (alpha/beta) * 1/((time/beta) + 1) * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * (alpha/beta) * 1/((time/beta) + 1) * + cyan - k_JCZ38 * JCZ38 +d_J9Z38/dt = + f_cyan_to_J9Z38 * (alpha/beta) * 1/((time/beta) + 1) * + cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 460.309 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 101.13294 -3.32499 -5.09097 -5.93566 0.71359 + f_cyan_ilr_2 f_JCZ38_qlogis log_alpha log_beta + 10.30315 14.62272 -0.09633 3.10634 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 5.649 0.000 0.00 0.00 0.0000 +log_k_JCZ38 0.000 2.319 0.00 0.00 0.0000 +log_k_J9Z38 0.000 0.000 1.73 0.00 0.0000 +log_k_JSE76 0.000 0.000 0.00 1.86 0.0000 +f_cyan_ilr_1 0.000 0.000 0.00 0.00 0.7183 +f_cyan_ilr_2 0.000 0.000 0.00 0.00 0.0000 +f_JCZ38_qlogis 0.000 0.000 0.00 0.00 0.0000 +log_alpha 0.000 0.000 0.00 0.00 0.0000 +log_beta 0.000 0.000 0.00 0.00 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis log_alpha log_beta +cyan_0 0.00 0.00 0.0000 0.0000 +log_k_JCZ38 0.00 0.00 0.0000 0.0000 +log_k_J9Z38 0.00 0.00 0.0000 0.0000 +log_k_JSE76 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_1 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_2 12.85 0.00 0.0000 0.0000 +f_JCZ38_qlogis 0.00 18.54 0.0000 0.0000 +log_alpha 0.00 0.00 0.3142 0.0000 +log_beta 0.00 0.00 0.0000 0.7333 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2424 2416 -1193 + +Optimised parameters: + est. lower upper +cyan_0 100.65667 NA NA +log_k_JCZ38 -3.45782 NA NA +log_k_J9Z38 -5.23476 NA NA +log_k_JSE76 -5.71827 NA NA +f_cyan_ilr_1 0.68389 NA NA +f_cyan_ilr_2 0.61027 NA NA +f_JCZ38_qlogis 116.27482 NA NA +log_alpha -0.14484 NA NA +log_beta 3.03220 NA NA +a.1 3.11051 NA NA +b.1 0.04508 NA NA +SD.log_k_JCZ38 1.39961 NA NA +SD.log_k_J9Z38 0.57920 NA NA +SD.log_k_JSE76 0.68364 NA NA +SD.f_cyan_ilr_1 0.31477 NA NA +SD.f_cyan_ilr_2 0.37716 NA NA +SD.f_JCZ38_qlogis 5.52695 NA NA +SD.log_alpha 0.22823 NA NA +SD.log_beta 0.39161 NA NA + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_JCZ38 1.3996 NA NA +SD.log_k_J9Z38 0.5792 NA NA +SD.log_k_JSE76 0.6836 NA NA +SD.f_cyan_ilr_1 0.3148 NA NA +SD.f_cyan_ilr_2 0.3772 NA NA +SD.f_JCZ38_qlogis 5.5270 NA NA +SD.log_alpha 0.2282 NA NA +SD.log_beta 0.3916 NA NA + +Variance model: + est. lower upper +a.1 3.11051 NA NA +b.1 0.04508 NA NA + +Backtransformed parameters: + est. lower upper +cyan_0 1.007e+02 NA NA +k_JCZ38 3.150e-02 NA NA +k_J9Z38 5.328e-03 NA NA +k_JSE76 3.285e-03 NA NA +f_cyan_to_JCZ38 5.980e-01 NA NA +f_cyan_to_J9Z38 2.273e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 NA NA +alpha 8.652e-01 NA NA +beta 2.074e+01 NA NA + +Resulting formation fractions: + ff +cyan_JCZ38 0.5980 +cyan_J9Z38 0.2273 +cyan_sink 0.1746 +JCZ38_JSE76 1.0000 +JCZ38_sink 0.0000 + +Estimated disappearance times: + DT50 DT90 DT50back +cyan 25.48 276.2 83.15 +JCZ38 22.01 73.1 NA +J9Z38 130.09 432.2 NA +JSE76 210.98 700.9 NA + +</code></pre> +<p></p> +<caption> +Hierarchical DFOP path 1 fit with constant variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:43:33 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 +d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 504.014 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 102.0643 -3.4008 -5.0024 -5.8612 0.6855 + f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 g_qlogis + 1.2366 13.6901 -1.8641 -4.5063 -0.6468 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 4.466 0.000 0.000 0.000 0.0000 +log_k_JCZ38 0.000 2.382 0.000 0.000 0.0000 +log_k_J9Z38 0.000 0.000 1.595 0.000 0.0000 +log_k_JSE76 0.000 0.000 0.000 1.245 0.0000 +f_cyan_ilr_1 0.000 0.000 0.000 0.000 0.6852 +f_cyan_ilr_2 0.000 0.000 0.000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.000 0.000 0.000 0.0000 +log_k1 0.000 0.000 0.000 0.000 0.0000 +log_k2 0.000 0.000 0.000 0.000 0.0000 +g_qlogis 0.000 0.000 0.000 0.000 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 g_qlogis +cyan_0 0.00 0.00 0.0000 0.0000 0.000 +log_k_JCZ38 0.00 0.00 0.0000 0.0000 0.000 +log_k_J9Z38 0.00 0.00 0.0000 0.0000 0.000 +log_k_JSE76 0.00 0.00 0.0000 0.0000 0.000 +f_cyan_ilr_1 0.00 0.00 0.0000 0.0000 0.000 +f_cyan_ilr_2 1.28 0.00 0.0000 0.0000 0.000 +f_JCZ38_qlogis 0.00 16.08 0.0000 0.0000 0.000 +log_k1 0.00 0.00 0.9866 0.0000 0.000 +log_k2 0.00 0.00 0.0000 0.5953 0.000 +g_qlogis 0.00 0.00 0.0000 0.0000 1.583 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2403 2395 -1182 + +Optimised parameters: + est. lower upper +cyan_0 102.5565 NA NA +log_k_JCZ38 -3.4729 NA NA +log_k_J9Z38 -5.1533 NA NA +log_k_JSE76 -5.6669 NA NA +f_cyan_ilr_1 0.6665 NA NA +f_cyan_ilr_2 0.5191 NA NA +f_JCZ38_qlogis 37.0113 NA NA +log_k1 -1.8497 NA NA +log_k2 -4.4931 NA NA +g_qlogis -0.6383 NA NA +a.1 3.2397 NA NA +SD.log_k_JCZ38 1.4286 NA NA +SD.log_k_J9Z38 0.5312 NA NA +SD.log_k_JSE76 0.6627 NA NA +SD.f_cyan_ilr_1 0.3013 NA NA +SD.f_cyan_ilr_2 0.2980 NA NA +SD.f_JCZ38_qlogis 0.1637 NA NA +SD.log_k1 0.5069 NA NA +SD.log_k2 0.3828 NA NA +SD.g_qlogis 0.8641 NA NA + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_JCZ38 1.4286 NA NA +SD.log_k_J9Z38 0.5312 NA NA +SD.log_k_JSE76 0.6627 NA NA +SD.f_cyan_ilr_1 0.3013 NA NA +SD.f_cyan_ilr_2 0.2980 NA NA +SD.f_JCZ38_qlogis 0.1637 NA NA +SD.log_k1 0.5069 NA NA +SD.log_k2 0.3828 NA NA +SD.g_qlogis 0.8641 NA NA + +Variance model: + est. lower upper +a.1 3.24 NA NA + +Backtransformed parameters: + est. lower upper +cyan_0 1.026e+02 NA NA +k_JCZ38 3.103e-02 NA NA +k_J9Z38 5.780e-03 NA NA +k_JSE76 3.459e-03 NA NA +f_cyan_to_JCZ38 5.813e-01 NA NA +f_cyan_to_J9Z38 2.265e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 NA NA +k1 1.573e-01 NA NA +k2 1.119e-02 NA NA +g 3.456e-01 NA NA + +Resulting formation fractions: + ff +cyan_JCZ38 0.5813 +cyan_J9Z38 0.2265 +cyan_sink 0.1922 +JCZ38_JSE76 1.0000 +JCZ38_sink 0.0000 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +cyan 25.23 167.94 50.55 4.407 61.97 +JCZ38 22.34 74.22 NA NA NA +J9Z38 119.92 398.36 NA NA NA +JSE76 200.41 665.76 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical DFOP path 1 fit with two-component error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:46:07 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 +d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 658.043 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 101.3964 -3.3626 -4.9792 -5.8727 0.6814 + f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 g_qlogis + 6.8713 13.6901 -1.9222 -4.5035 -0.7172 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 5.317 0.000 0.000 0.000 0.0000 +log_k_JCZ38 0.000 2.272 0.000 0.000 0.0000 +log_k_J9Z38 0.000 0.000 1.633 0.000 0.0000 +log_k_JSE76 0.000 0.000 0.000 1.271 0.0000 +f_cyan_ilr_1 0.000 0.000 0.000 0.000 0.6839 +f_cyan_ilr_2 0.000 0.000 0.000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.000 0.000 0.000 0.0000 +log_k1 0.000 0.000 0.000 0.000 0.0000 +log_k2 0.000 0.000 0.000 0.000 0.0000 +g_qlogis 0.000 0.000 0.000 0.000 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 g_qlogis +cyan_0 0.00 0.00 0.0000 0.0000 0.000 +log_k_JCZ38 0.00 0.00 0.0000 0.0000 0.000 +log_k_J9Z38 0.00 0.00 0.0000 0.0000 0.000 +log_k_JSE76 0.00 0.00 0.0000 0.0000 0.000 +f_cyan_ilr_1 0.00 0.00 0.0000 0.0000 0.000 +f_cyan_ilr_2 11.95 0.00 0.0000 0.0000 0.000 +f_JCZ38_qlogis 0.00 16.08 0.0000 0.0000 0.000 +log_k1 0.00 0.00 0.9496 0.0000 0.000 +log_k2 0.00 0.00 0.0000 0.5846 0.000 +g_qlogis 0.00 0.00 0.0000 0.0000 1.719 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2398 2390 -1179 + +Optimised parameters: + est. lower upper +cyan_0 100.69709 NA NA +log_k_JCZ38 -3.46669 NA NA +log_k_J9Z38 -5.05076 NA NA +log_k_JSE76 -5.55558 NA NA +f_cyan_ilr_1 0.66045 NA NA +f_cyan_ilr_2 0.84275 NA NA +f_JCZ38_qlogis 64.22404 NA NA +log_k1 -2.17715 NA NA +log_k2 -4.55002 NA NA +g_qlogis -0.55920 NA NA +a.1 2.95785 NA NA +b.1 0.04456 NA NA +SD.log_k_JCZ38 1.39881 NA NA +SD.log_k_J9Z38 0.67788 NA NA +SD.log_k_JSE76 0.52603 NA NA +SD.f_cyan_ilr_1 0.32490 NA NA +SD.f_cyan_ilr_2 0.53923 NA NA +SD.f_JCZ38_qlogis 2.75576 NA NA +SD.log_k2 0.30694 NA NA +SD.g_qlogis 0.83619 NA NA + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_JCZ38 1.3988 NA NA +SD.log_k_J9Z38 0.6779 NA NA +SD.log_k_JSE76 0.5260 NA NA +SD.f_cyan_ilr_1 0.3249 NA NA +SD.f_cyan_ilr_2 0.5392 NA NA +SD.f_JCZ38_qlogis 2.7558 NA NA +SD.log_k2 0.3069 NA NA +SD.g_qlogis 0.8362 NA NA + +Variance model: + est. lower upper +a.1 2.95785 NA NA +b.1 0.04456 NA NA + +Backtransformed parameters: + est. lower upper +cyan_0 1.007e+02 NA NA +k_JCZ38 3.122e-02 NA NA +k_J9Z38 6.404e-03 NA NA +k_JSE76 3.866e-03 NA NA +f_cyan_to_JCZ38 6.187e-01 NA NA +f_cyan_to_J9Z38 2.431e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 NA NA +k1 1.134e-01 NA NA +k2 1.057e-02 NA NA +g 3.637e-01 NA NA + +Resulting formation fractions: + ff +cyan_JCZ38 0.6187 +cyan_J9Z38 0.2431 +cyan_sink 0.1382 +JCZ38_JSE76 1.0000 +JCZ38_sink 0.0000 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +cyan 26.35 175.12 52.72 6.114 65.6 +JCZ38 22.20 73.75 NA NA NA +J9Z38 108.23 359.53 NA NA NA +JSE76 179.30 595.62 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical SFORB path 1 fit with constant variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:43:36 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * + cyan_free + k_cyan_bound_free * cyan_bound +d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * + cyan_bound +d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 + * JCZ38 +d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 + * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 507.042 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound + 102.0643 -2.8987 -2.7077 +log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 + -3.4717 -3.4008 -5.0024 + log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 + -5.8613 0.6855 1.2366 + f_JCZ38_qlogis + 13.7395 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound +cyan_free_0 4.466 0.0000 0.000 +log_k_cyan_free 0.000 0.6158 0.000 +log_k_cyan_free_bound 0.000 0.0000 1.463 +log_k_cyan_bound_free 0.000 0.0000 0.000 +log_k_JCZ38 0.000 0.0000 0.000 +log_k_J9Z38 0.000 0.0000 0.000 +log_k_JSE76 0.000 0.0000 0.000 +f_cyan_ilr_1 0.000 0.0000 0.000 +f_cyan_ilr_2 0.000 0.0000 0.000 +f_JCZ38_qlogis 0.000 0.0000 0.000 + log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 +cyan_free_0 0.000 0.000 0.000 0.000 +log_k_cyan_free 0.000 0.000 0.000 0.000 +log_k_cyan_free_bound 0.000 0.000 0.000 0.000 +log_k_cyan_bound_free 1.058 0.000 0.000 0.000 +log_k_JCZ38 0.000 2.382 0.000 0.000 +log_k_J9Z38 0.000 0.000 1.595 0.000 +log_k_JSE76 0.000 0.000 0.000 1.245 +f_cyan_ilr_1 0.000 0.000 0.000 0.000 +f_cyan_ilr_2 0.000 0.000 0.000 0.000 +f_JCZ38_qlogis 0.000 0.000 0.000 0.000 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis +cyan_free_0 0.0000 0.00 0.00 +log_k_cyan_free 0.0000 0.00 0.00 +log_k_cyan_free_bound 0.0000 0.00 0.00 +log_k_cyan_bound_free 0.0000 0.00 0.00 +log_k_JCZ38 0.0000 0.00 0.00 +log_k_J9Z38 0.0000 0.00 0.00 +log_k_JSE76 0.0000 0.00 0.00 +f_cyan_ilr_1 0.6852 0.00 0.00 +f_cyan_ilr_2 0.0000 1.28 0.00 +f_JCZ38_qlogis 0.0000 0.00 16.13 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2401 2394 -1181 + +Optimised parameters: + est. lower upper +cyan_free_0 102.8136 NA NA +log_k_cyan_free -2.7935 NA NA +log_k_cyan_free_bound -2.5440 NA NA +log_k_cyan_bound_free -3.4303 NA NA +log_k_JCZ38 -3.5010 NA NA +log_k_J9Z38 -5.1226 NA NA +log_k_JSE76 -5.6314 NA NA +f_cyan_ilr_1 0.6609 NA NA +f_cyan_ilr_2 0.5085 NA NA +f_JCZ38_qlogis 44.0153 NA NA +a.1 3.2318 NA NA +SD.log_k_cyan_free 0.3211 NA NA +SD.log_k_cyan_free_bound 0.8408 NA NA +SD.log_k_cyan_bound_free 0.5724 NA NA +SD.log_k_JCZ38 1.4925 NA NA +SD.log_k_J9Z38 0.5816 NA NA +SD.log_k_JSE76 0.6037 NA NA +SD.f_cyan_ilr_1 0.3115 NA NA +SD.f_cyan_ilr_2 0.3436 NA NA +SD.f_JCZ38_qlogis 4.8937 NA NA + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_cyan_free 0.3211 NA NA +SD.log_k_cyan_free_bound 0.8408 NA NA +SD.log_k_cyan_bound_free 0.5724 NA NA +SD.log_k_JCZ38 1.4925 NA NA +SD.log_k_J9Z38 0.5816 NA NA +SD.log_k_JSE76 0.6037 NA NA +SD.f_cyan_ilr_1 0.3115 NA NA +SD.f_cyan_ilr_2 0.3436 NA NA +SD.f_JCZ38_qlogis 4.8937 NA NA + +Variance model: + est. lower upper +a.1 3.232 NA NA + +Backtransformed parameters: + est. lower upper +cyan_free_0 1.028e+02 NA NA +k_cyan_free 6.120e-02 NA NA +k_cyan_free_bound 7.855e-02 NA NA +k_cyan_bound_free 3.238e-02 NA NA +k_JCZ38 3.017e-02 NA NA +k_J9Z38 5.961e-03 NA NA +k_JSE76 3.584e-03 NA NA +f_cyan_free_to_JCZ38 5.784e-01 NA NA +f_cyan_free_to_J9Z38 2.271e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 NA NA + +Estimated Eigenvalues of SFORB model(s): +cyan_b1 cyan_b2 cyan_g +0.15973 0.01241 0.33124 + +Resulting formation fractions: + ff +cyan_free_JCZ38 0.5784 +cyan_free_J9Z38 0.2271 +cyan_free_sink 0.1945 +cyan_free 1.0000 +JCZ38_JSE76 1.0000 +JCZ38_sink 0.0000 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 +cyan 24.51 153.18 46.11 4.34 55.87 +JCZ38 22.98 76.33 NA NA NA +J9Z38 116.28 386.29 NA NA NA +JSE76 193.42 642.53 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical SFORB path 1 fit with two-component error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:46:14 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * + cyan_free + k_cyan_bound_free * cyan_bound +d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * + cyan_bound +d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 + * JCZ38 +d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 + * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 664.11 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound + 101.3964 -2.9881 -2.7949 +log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 + -3.4376 -3.3626 -4.9792 + log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 + -5.8727 0.6814 6.7399 + f_JCZ38_qlogis + 13.7395 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound +cyan_free_0 5.317 0.0000 0.000 +log_k_cyan_free 0.000 0.7301 0.000 +log_k_cyan_free_bound 0.000 0.0000 1.384 +log_k_cyan_bound_free 0.000 0.0000 0.000 +log_k_JCZ38 0.000 0.0000 0.000 +log_k_J9Z38 0.000 0.0000 0.000 +log_k_JSE76 0.000 0.0000 0.000 +f_cyan_ilr_1 0.000 0.0000 0.000 +f_cyan_ilr_2 0.000 0.0000 0.000 +f_JCZ38_qlogis 0.000 0.0000 0.000 + log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 +cyan_free_0 0.000 0.000 0.000 0.000 +log_k_cyan_free 0.000 0.000 0.000 0.000 +log_k_cyan_free_bound 0.000 0.000 0.000 0.000 +log_k_cyan_bound_free 1.109 0.000 0.000 0.000 +log_k_JCZ38 0.000 2.272 0.000 0.000 +log_k_J9Z38 0.000 0.000 1.633 0.000 +log_k_JSE76 0.000 0.000 0.000 1.271 +f_cyan_ilr_1 0.000 0.000 0.000 0.000 +f_cyan_ilr_2 0.000 0.000 0.000 0.000 +f_JCZ38_qlogis 0.000 0.000 0.000 0.000 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis +cyan_free_0 0.0000 0.00 0.00 +log_k_cyan_free 0.0000 0.00 0.00 +log_k_cyan_free_bound 0.0000 0.00 0.00 +log_k_cyan_bound_free 0.0000 0.00 0.00 +log_k_JCZ38 0.0000 0.00 0.00 +log_k_J9Z38 0.0000 0.00 0.00 +log_k_JSE76 0.0000 0.00 0.00 +f_cyan_ilr_1 0.6838 0.00 0.00 +f_cyan_ilr_2 0.0000 11.69 0.00 +f_JCZ38_qlogis 0.0000 0.00 16.13 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2400 2392 -1180 + +Optimised parameters: + est. lower upper +cyan_free_0 100.56004 NA NA +log_k_cyan_free -3.12657 NA NA +log_k_cyan_free_bound -3.16825 NA NA +log_k_cyan_bound_free -3.66003 NA NA +log_k_JCZ38 -3.47278 NA NA +log_k_J9Z38 -5.06823 NA NA +log_k_JSE76 -5.54327 NA NA +f_cyan_ilr_1 0.66631 NA NA +f_cyan_ilr_2 0.82898 NA NA +f_JCZ38_qlogis 38.31115 NA NA +a.1 2.98352 NA NA +b.1 0.04388 NA NA +SD.log_k_cyan_free 0.49145 NA NA +SD.log_k_cyan_bound_free 0.27347 NA NA +SD.log_k_JCZ38 1.41193 NA NA +SD.log_k_J9Z38 0.66073 NA NA +SD.log_k_JSE76 0.55885 NA NA +SD.f_cyan_ilr_1 0.33020 NA NA +SD.f_cyan_ilr_2 0.51367 NA NA +SD.f_JCZ38_qlogis 5.52122 NA NA + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_cyan_free 0.4914 NA NA +SD.log_k_cyan_bound_free 0.2735 NA NA +SD.log_k_JCZ38 1.4119 NA NA +SD.log_k_J9Z38 0.6607 NA NA +SD.log_k_JSE76 0.5589 NA NA +SD.f_cyan_ilr_1 0.3302 NA NA +SD.f_cyan_ilr_2 0.5137 NA NA +SD.f_JCZ38_qlogis 5.5212 NA NA + +Variance model: + est. lower upper +a.1 2.98352 NA NA +b.1 0.04388 NA NA + +Backtransformed parameters: + est. lower upper +cyan_free_0 1.006e+02 NA NA +k_cyan_free 4.387e-02 NA NA +k_cyan_free_bound 4.208e-02 NA NA +k_cyan_bound_free 2.573e-02 NA NA +k_JCZ38 3.103e-02 NA NA +k_J9Z38 6.294e-03 NA NA +k_JSE76 3.914e-03 NA NA +f_cyan_free_to_JCZ38 6.188e-01 NA NA +f_cyan_free_to_J9Z38 2.412e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 NA NA + +Estimated Eigenvalues of SFORB model(s): +cyan_b1 cyan_b2 cyan_g +0.10044 0.01124 0.36580 + +Resulting formation fractions: + ff +cyan_free_JCZ38 0.6188 +cyan_free_J9Z38 0.2412 +cyan_free_sink 0.1400 +cyan_free 1.0000 +JCZ38_JSE76 1.0000 +JCZ38_sink 0.0000 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 +cyan 26.05 164.4 49.48 6.901 61.67 +JCZ38 22.34 74.2 NA NA NA +J9Z38 110.14 365.9 NA NA NA +JSE76 177.11 588.3 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical HS path 1 fit with constant variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:43:42 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - ifelse(time <= tb, k1, k2) * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * ifelse(time <= tb, k1, k2) * cyan - + k_JCZ38 * JCZ38 +d_J9Z38/dt = + f_cyan_to_J9Z38 * ifelse(time <= tb, k1, k2) * cyan - + k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 512.818 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 102.8845 -3.4495 -4.9355 -5.6040 0.6468 + f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 log_tb + 1.2396 9.7220 -2.9079 -4.1810 1.7813 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 5.406 0.00 0.00 0.000 0.0000 +log_k_JCZ38 0.000 2.33 0.00 0.000 0.0000 +log_k_J9Z38 0.000 0.00 1.59 0.000 0.0000 +log_k_JSE76 0.000 0.00 0.00 1.013 0.0000 +f_cyan_ilr_1 0.000 0.00 0.00 0.000 0.6367 +f_cyan_ilr_2 0.000 0.00 0.00 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.00 0.00 0.000 0.0000 +log_k1 0.000 0.00 0.00 0.000 0.0000 +log_k2 0.000 0.00 0.00 0.000 0.0000 +log_tb 0.000 0.00 0.00 0.000 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 log_tb +cyan_0 0.000 0.00 0.0000 0.0000 0.0000 +log_k_JCZ38 0.000 0.00 0.0000 0.0000 0.0000 +log_k_J9Z38 0.000 0.00 0.0000 0.0000 0.0000 +log_k_JSE76 0.000 0.00 0.0000 0.0000 0.0000 +f_cyan_ilr_1 0.000 0.00 0.0000 0.0000 0.0000 +f_cyan_ilr_2 2.038 0.00 0.0000 0.0000 0.0000 +f_JCZ38_qlogis 0.000 10.33 0.0000 0.0000 0.0000 +log_k1 0.000 0.00 0.7006 0.0000 0.0000 +log_k2 0.000 0.00 0.0000 0.8928 0.0000 +log_tb 0.000 0.00 0.0000 0.0000 0.6773 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2427 2419 -1194 + +Optimised parameters: + est. lower upper +cyan_0 101.9660 1.005e+02 1.035e+02 +log_k_JCZ38 -3.4698 -4.716e+00 -2.224e+00 +log_k_J9Z38 -5.0947 -5.740e+00 -4.450e+00 +log_k_JSE76 -5.5977 -6.321e+00 -4.875e+00 +f_cyan_ilr_1 0.6595 3.734e-01 9.456e-01 +f_cyan_ilr_2 0.5905 1.664e-01 1.015e+00 +f_JCZ38_qlogis 25.8627 -4.224e+05 4.225e+05 +log_k1 -3.0884 -3.453e+00 -2.723e+00 +log_k2 -4.3877 -4.778e+00 -3.998e+00 +log_tb 2.3057 1.715e+00 2.896e+00 +a.1 3.3228 NA NA +SD.log_k_JCZ38 1.4071 NA NA +SD.log_k_J9Z38 0.5774 NA NA +SD.log_k_JSE76 0.6214 NA NA +SD.f_cyan_ilr_1 0.3058 NA NA +SD.f_cyan_ilr_2 0.3470 NA NA +SD.f_JCZ38_qlogis 0.0644 NA NA +SD.log_k1 0.3994 NA NA +SD.log_k2 0.4373 NA NA +SD.log_tb 0.6419 NA NA + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_JCZ38 1.4071 NA NA +SD.log_k_J9Z38 0.5774 NA NA +SD.log_k_JSE76 0.6214 NA NA +SD.f_cyan_ilr_1 0.3058 NA NA +SD.f_cyan_ilr_2 0.3470 NA NA +SD.f_JCZ38_qlogis 0.0644 NA NA +SD.log_k1 0.3994 NA NA +SD.log_k2 0.4373 NA NA +SD.log_tb 0.6419 NA NA + +Variance model: + est. lower upper +a.1 3.323 NA NA + +Backtransformed parameters: + est. lower upper +cyan_0 1.020e+02 1.005e+02 1.035e+02 +k_JCZ38 3.112e-02 8.951e-03 1.082e-01 +k_J9Z38 6.129e-03 3.216e-03 1.168e-02 +k_JSE76 3.706e-03 1.798e-03 7.639e-03 +f_cyan_to_JCZ38 5.890e-01 NA NA +f_cyan_to_J9Z38 2.318e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 0.000e+00 1.000e+00 +k1 4.558e-02 3.164e-02 6.565e-02 +k2 1.243e-02 8.417e-03 1.835e-02 +tb 1.003e+01 5.557e+00 1.811e+01 + +Resulting formation fractions: + ff +cyan_JCZ38 5.890e-01 +cyan_J9Z38 2.318e-01 +cyan_sink 1.793e-01 +JCZ38_JSE76 1.000e+00 +JCZ38_sink 5.861e-12 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +cyan 29.02 158.51 47.72 15.21 55.77 +JCZ38 22.27 73.98 NA NA NA +J9Z38 113.09 375.69 NA NA NA +JSE76 187.01 621.23 NA NA NA + +</code></pre> +<p></p> +</div> +<div class="section level4"> +<h4 id="pathway-2">Pathway 2<a class="anchor" aria-label="anchor" href="#pathway-2"></a> +</h4> +<caption> +Hierarchical FOMC path 2 fit with two-component error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:54:36 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - (alpha/beta) * 1/((time/beta) + 1) * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * (alpha/beta) * 1/((time/beta) + 1) * + cyan - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_to_J9Z38 * (alpha/beta) * 1/((time/beta) + 1) * + cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 491.928 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 102.4477 -1.8631 -5.1087 -2.5114 0.6826 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta + 4.7944 15.9616 13.1566 -0.1564 2.9781 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 7.701 0.000 0.000 0.000 0.0000 +log_k_JCZ38 0.000 1.448 0.000 0.000 0.0000 +log_k_J9Z38 0.000 0.000 1.724 0.000 0.0000 +log_k_JSE76 0.000 0.000 0.000 3.659 0.0000 +f_cyan_ilr_1 0.000 0.000 0.000 0.000 0.6356 +f_cyan_ilr_2 0.000 0.000 0.000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.000 0.000 0.000 0.0000 +f_JSE76_qlogis 0.000 0.000 0.000 0.000 0.0000 +log_alpha 0.000 0.000 0.000 0.000 0.0000 +log_beta 0.000 0.000 0.000 0.000 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta +cyan_0 0.00 0.00 0.00 0.0000 0.0000 +log_k_JCZ38 0.00 0.00 0.00 0.0000 0.0000 +log_k_J9Z38 0.00 0.00 0.00 0.0000 0.0000 +log_k_JSE76 0.00 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_1 0.00 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_2 10.32 0.00 0.00 0.0000 0.0000 +f_JCZ38_qlogis 0.00 12.23 0.00 0.0000 0.0000 +f_JSE76_qlogis 0.00 0.00 14.99 0.0000 0.0000 +log_alpha 0.00 0.00 0.00 0.3924 0.0000 +log_beta 0.00 0.00 0.00 0.0000 0.5639 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2249 2241 -1104 + +Optimised parameters: + est. lower upper +cyan_0 101.55265 9.920e+01 103.9059 +log_k_JCZ38 -2.32302 -2.832e+00 -1.8142 +log_k_J9Z38 -5.13082 -5.942e+00 -4.3199 +log_k_JSE76 -3.01756 -4.262e+00 -1.7736 +f_cyan_ilr_1 0.70850 3.657e-01 1.0513 +f_cyan_ilr_2 0.95775 2.612e-01 1.6543 +f_JCZ38_qlogis 3.86105 9.248e-01 6.7973 +f_JSE76_qlogis 7.51583 -1.120e+02 127.0392 +log_alpha -0.15308 -4.508e-01 0.1446 +log_beta 2.99165 2.711e+00 3.2720 +a.1 2.04034 1.843e+00 2.2382 +b.1 0.06924 5.749e-02 0.0810 +SD.log_k_JCZ38 0.50818 1.390e-01 0.8774 +SD.log_k_J9Z38 0.86597 2.652e-01 1.4667 +SD.log_k_JSE76 1.38092 4.864e-01 2.2754 +SD.f_cyan_ilr_1 0.38204 1.354e-01 0.6286 +SD.f_cyan_ilr_2 0.55129 7.198e-02 1.0306 +SD.f_JCZ38_qlogis 1.88457 1.711e-02 3.7520 +SD.f_JSE76_qlogis 2.64018 -2.450e+03 2454.9447 +SD.log_alpha 0.31860 1.047e-01 0.5325 +SD.log_beta 0.24195 1.273e-02 0.4712 + +Correlation: + cyan_0 l__JCZ3 l__J9Z3 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 f_JSE76 +log_k_JCZ38 -0.0235 +log_k_J9Z38 -0.0442 0.0047 +log_k_JSE76 -0.0023 0.0966 0.0006 +f_cyan_ilr_1 -0.0032 0.0070 -0.0536 -0.0001 +f_cyan_ilr_2 -0.5189 0.0452 0.1152 0.0013 -0.0304 +f_JCZ38_qlogis 0.1088 -0.0848 -0.0240 0.0040 -0.0384 -0.2303 +f_JSE76_qlogis -0.0545 0.1315 0.0195 0.0020 0.0252 0.1737 -0.5939 +log_alpha -0.0445 0.0056 0.0261 0.0019 -0.0055 0.0586 -0.0239 -0.0284 +log_beta -0.2388 0.0163 0.0566 0.0040 -0.0078 0.2183 -0.0714 -0.0332 + log_lph +log_k_JCZ38 +log_k_J9Z38 +log_k_JSE76 +f_cyan_ilr_1 +f_cyan_ilr_2 +f_JCZ38_qlogis +f_JSE76_qlogis +log_alpha +log_beta 0.2135 + +Random effects: + est. lower upper +SD.log_k_JCZ38 0.5082 1.390e-01 0.8774 +SD.log_k_J9Z38 0.8660 2.652e-01 1.4667 +SD.log_k_JSE76 1.3809 4.864e-01 2.2754 +SD.f_cyan_ilr_1 0.3820 1.354e-01 0.6286 +SD.f_cyan_ilr_2 0.5513 7.198e-02 1.0306 +SD.f_JCZ38_qlogis 1.8846 1.711e-02 3.7520 +SD.f_JSE76_qlogis 2.6402 -2.450e+03 2454.9447 +SD.log_alpha 0.3186 1.047e-01 0.5325 +SD.log_beta 0.2420 1.273e-02 0.4712 + +Variance model: + est. lower upper +a.1 2.04034 1.84252 2.238 +b.1 0.06924 0.05749 0.081 + +Backtransformed parameters: + est. lower upper +cyan_0 1.016e+02 9.920e+01 103.9059 +k_JCZ38 9.798e-02 5.890e-02 0.1630 +k_J9Z38 5.912e-03 2.627e-03 0.0133 +k_JSE76 4.892e-02 1.410e-02 0.1697 +f_cyan_to_JCZ38 6.432e-01 NA NA +f_cyan_to_J9Z38 2.362e-01 NA NA +f_JCZ38_to_JSE76 9.794e-01 7.160e-01 0.9989 +f_JSE76_to_JCZ38 9.995e-01 2.268e-49 1.0000 +alpha 8.581e-01 6.371e-01 1.1556 +beta 1.992e+01 1.505e+01 26.3646 + +Resulting formation fractions: + ff +cyan_JCZ38 0.6432301 +cyan_J9Z38 0.2361657 +cyan_sink 0.1206042 +JCZ38_JSE76 0.9793879 +JCZ38_sink 0.0206121 +JSE76_JCZ38 0.9994559 +JSE76_sink 0.0005441 + +Estimated disappearance times: + DT50 DT90 DT50back +cyan 24.759 271.61 81.76 +JCZ38 7.075 23.50 NA +J9Z38 117.249 389.49 NA +JSE76 14.169 47.07 NA + +</code></pre> +<p></p> +<caption> +Hierarchical DFOP path 2 fit with constant variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:55:32 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 + + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 548.554 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 102.4380 -2.3107 -5.3123 -3.7120 0.6757 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 + 1.1439 13.1194 12.3492 -1.9317 -4.4557 + g_qlogis + -0.5644 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 4.591 0.0000 0.000 0.0 0.0000 +log_k_JCZ38 0.000 0.7966 0.000 0.0 0.0000 +log_k_J9Z38 0.000 0.0000 1.561 0.0 0.0000 +log_k_JSE76 0.000 0.0000 0.000 0.8 0.0000 +f_cyan_ilr_1 0.000 0.0000 0.000 0.0 0.6349 +f_cyan_ilr_2 0.000 0.0000 0.000 0.0 0.0000 +f_JCZ38_qlogis 0.000 0.0000 0.000 0.0 0.0000 +f_JSE76_qlogis 0.000 0.0000 0.000 0.0 0.0000 +log_k1 0.000 0.0000 0.000 0.0 0.0000 +log_k2 0.000 0.0000 0.000 0.0 0.0000 +g_qlogis 0.000 0.0000 0.000 0.0 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 +cyan_0 0.000 0.00 0.00 0.000 0.0000 +log_k_JCZ38 0.000 0.00 0.00 0.000 0.0000 +log_k_J9Z38 0.000 0.00 0.00 0.000 0.0000 +log_k_JSE76 0.000 0.00 0.00 0.000 0.0000 +f_cyan_ilr_1 0.000 0.00 0.00 0.000 0.0000 +f_cyan_ilr_2 1.797 0.00 0.00 0.000 0.0000 +f_JCZ38_qlogis 0.000 13.86 0.00 0.000 0.0000 +f_JSE76_qlogis 0.000 0.00 13.91 0.000 0.0000 +log_k1 0.000 0.00 0.00 1.106 0.0000 +log_k2 0.000 0.00 0.00 0.000 0.6141 +g_qlogis 0.000 0.00 0.00 0.000 0.0000 + g_qlogis +cyan_0 0.000 +log_k_JCZ38 0.000 +log_k_J9Z38 0.000 +log_k_JSE76 0.000 +f_cyan_ilr_1 0.000 +f_cyan_ilr_2 0.000 +f_JCZ38_qlogis 0.000 +f_JSE76_qlogis 0.000 +log_k1 0.000 +log_k2 0.000 +g_qlogis 1.595 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2288 2280 -1122 + +Optimised parameters: + est. lower upper +cyan_0 102.7204 1.014e+02 1.040e+02 +log_k_JCZ38 -2.8925 -4.044e+00 -1.741e+00 +log_k_J9Z38 -5.1430 -5.828e+00 -4.457e+00 +log_k_JSE76 -3.5577 -4.174e+00 -2.941e+00 +f_cyan_ilr_1 0.6929 3.788e-01 1.007e+00 +f_cyan_ilr_2 0.6066 5.342e-02 1.160e+00 +f_JCZ38_qlogis 9.8071 -2.819e+03 2.838e+03 +f_JSE76_qlogis 2.2229 5.684e-01 3.877e+00 +log_k1 -1.9339 -2.609e+00 -1.258e+00 +log_k2 -4.4709 -4.935e+00 -4.007e+00 +g_qlogis -0.4987 -1.373e+00 3.757e-01 +a.1 2.7368 2.545e+00 2.928e+00 +SD.log_k_JCZ38 1.2747 4.577e-01 2.092e+00 +SD.log_k_J9Z38 0.6758 1.418e-01 1.210e+00 +SD.log_k_JSE76 0.5869 1.169e-01 1.057e+00 +SD.f_cyan_ilr_1 0.3392 1.161e-01 5.622e-01 +SD.f_cyan_ilr_2 0.4200 8.501e-02 7.550e-01 +SD.f_JCZ38_qlogis 0.8511 -1.137e+06 1.137e+06 +SD.f_JSE76_qlogis 0.3767 -5.238e-01 1.277e+00 +SD.log_k1 0.7475 2.601e-01 1.235e+00 +SD.log_k2 0.5179 1.837e-01 8.521e-01 +SD.g_qlogis 0.9817 3.553e-01 1.608e+00 + +Correlation: + cyan_0 l__JCZ3 l__J9Z3 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 f_JSE76 +log_k_JCZ38 -0.0351 +log_k_J9Z38 -0.0541 0.0043 +log_k_JSE76 -0.0078 0.0900 -0.0014 +f_cyan_ilr_1 -0.0249 0.0268 -0.0962 0.0000 +f_cyan_ilr_2 -0.3560 0.0848 0.1545 -0.0022 0.0463 +f_JCZ38_qlogis 0.2005 -0.1226 -0.0347 0.0514 -0.1840 -0.5906 +f_JSE76_qlogis -0.1638 0.1307 0.0266 0.0001 0.1645 0.5181 -0.9297 +log_k1 0.0881 -0.0071 0.0005 -0.0070 -0.0064 -0.0346 0.0316 -0.0341 +log_k2 0.0238 -0.0003 0.0082 -0.0022 -0.0017 -0.0017 -0.0002 -0.0076 +g_qlogis 0.0198 -0.0002 -0.0109 0.0034 0.0017 -0.0176 0.0044 0.0051 + log_k1 log_k2 +log_k_JCZ38 +log_k_J9Z38 +log_k_JSE76 +f_cyan_ilr_1 +f_cyan_ilr_2 +f_JCZ38_qlogis +f_JSE76_qlogis +log_k1 +log_k2 0.0276 +g_qlogis -0.0283 -0.0309 + +Random effects: + est. lower upper +SD.log_k_JCZ38 1.2747 4.577e-01 2.092e+00 +SD.log_k_J9Z38 0.6758 1.418e-01 1.210e+00 +SD.log_k_JSE76 0.5869 1.169e-01 1.057e+00 +SD.f_cyan_ilr_1 0.3392 1.161e-01 5.622e-01 +SD.f_cyan_ilr_2 0.4200 8.501e-02 7.550e-01 +SD.f_JCZ38_qlogis 0.8511 -1.137e+06 1.137e+06 +SD.f_JSE76_qlogis 0.3767 -5.238e-01 1.277e+00 +SD.log_k1 0.7475 2.601e-01 1.235e+00 +SD.log_k2 0.5179 1.837e-01 8.521e-01 +SD.g_qlogis 0.9817 3.553e-01 1.608e+00 + +Variance model: + est. lower upper +a.1 2.737 2.545 2.928 + +Backtransformed parameters: + est. lower upper +cyan_0 102.72037 1.014e+02 104.00464 +k_JCZ38 0.05544 1.752e-02 0.17539 +k_J9Z38 0.00584 2.942e-03 0.01159 +k_JSE76 0.02850 1.539e-02 0.05279 +f_cyan_to_JCZ38 0.59995 NA NA +f_cyan_to_J9Z38 0.22519 NA NA +f_JCZ38_to_JSE76 0.99994 0.000e+00 1.00000 +f_JSE76_to_JCZ38 0.90229 6.384e-01 0.97971 +k1 0.14459 7.357e-02 0.28414 +k2 0.01144 7.192e-03 0.01819 +g 0.37784 2.021e-01 0.59284 + +Resulting formation fractions: + ff +cyan_JCZ38 5.999e-01 +cyan_J9Z38 2.252e-01 +cyan_sink 1.749e-01 +JCZ38_JSE76 9.999e-01 +JCZ38_sink 5.506e-05 +JSE76_JCZ38 9.023e-01 +JSE76_sink 9.771e-02 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +cyan 21.93 159.83 48.11 4.794 60.6 +JCZ38 12.50 41.53 NA NA NA +J9Z38 118.69 394.27 NA NA NA +JSE76 24.32 80.78 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical DFOP path 2 fit with two-component error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:57:56 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 + + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 691.67 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 101.7393 -1.4493 -5.0118 -2.1269 0.6720 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 + 7.3362 13.4423 13.2659 -2.0061 -4.5527 + g_qlogis + -0.5806 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 5.604 0.00 0.000 0.000 0.0000 +log_k_JCZ38 0.000 2.77 0.000 0.000 0.0000 +log_k_J9Z38 0.000 0.00 1.662 0.000 0.0000 +log_k_JSE76 0.000 0.00 0.000 5.021 0.0000 +f_cyan_ilr_1 0.000 0.00 0.000 0.000 0.6519 +f_cyan_ilr_2 0.000 0.00 0.000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.00 0.000 0.000 0.0000 +f_JSE76_qlogis 0.000 0.00 0.000 0.000 0.0000 +log_k1 0.000 0.00 0.000 0.000 0.0000 +log_k2 0.000 0.00 0.000 0.000 0.0000 +g_qlogis 0.000 0.00 0.000 0.000 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 +cyan_0 0.00 0.00 0.00 0.0000 0.0000 +log_k_JCZ38 0.00 0.00 0.00 0.0000 0.0000 +log_k_J9Z38 0.00 0.00 0.00 0.0000 0.0000 +log_k_JSE76 0.00 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_1 0.00 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_2 13.37 0.00 0.00 0.0000 0.0000 +f_JCZ38_qlogis 0.00 14.21 0.00 0.0000 0.0000 +f_JSE76_qlogis 0.00 0.00 14.58 0.0000 0.0000 +log_k1 0.00 0.00 0.00 0.8453 0.0000 +log_k2 0.00 0.00 0.00 0.0000 0.5969 +g_qlogis 0.00 0.00 0.00 0.0000 0.0000 + g_qlogis +cyan_0 0.00 +log_k_JCZ38 0.00 +log_k_J9Z38 0.00 +log_k_JSE76 0.00 +f_cyan_ilr_1 0.00 +f_cyan_ilr_2 0.00 +f_JCZ38_qlogis 0.00 +f_JSE76_qlogis 0.00 +log_k1 0.00 +log_k2 0.00 +g_qlogis 1.69 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2234 2226 -1095 + +Optimised parameters: + est. lower upper +cyan_0 101.25496 99.14662 103.36331 +log_k_JCZ38 -2.55593 -3.32972 -1.78215 +log_k_J9Z38 -5.07103 -5.85423 -4.28783 +log_k_JSE76 -3.25468 -4.17577 -2.33360 +f_cyan_ilr_1 0.70139 0.35924 1.04355 +f_cyan_ilr_2 1.07712 0.17789 1.97636 +f_JCZ38_qlogis 3.57483 0.05990 7.08976 +f_JSE76_qlogis 4.54884 -7.25628 16.35395 +log_k1 -2.38201 -2.51639 -2.24763 +log_k2 -4.66741 -4.91865 -4.41617 +g_qlogis -0.28446 -1.14192 0.57300 +a.1 2.05925 1.86481 2.25369 +b.1 0.06172 0.05062 0.07282 +SD.log_k_JCZ38 0.81137 0.25296 1.36977 +SD.log_k_J9Z38 0.83542 0.25395 1.41689 +SD.log_k_JSE76 0.97903 0.30100 1.65707 +SD.f_cyan_ilr_1 0.37878 0.13374 0.62382 +SD.f_cyan_ilr_2 0.67274 0.10102 1.24446 +SD.f_JCZ38_qlogis 1.35327 -0.42359 3.13012 +SD.f_JSE76_qlogis 1.43956 -19.14972 22.02884 +SD.log_k2 0.25329 0.07521 0.43138 +SD.g_qlogis 0.95167 0.35149 1.55184 + +Correlation: + cyan_0 l__JCZ3 l__J9Z3 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 f_JSE76 +log_k_JCZ38 -0.0265 +log_k_J9Z38 -0.0392 0.0024 +log_k_JSE76 0.0011 0.1220 -0.0016 +f_cyan_ilr_1 -0.0161 0.0217 -0.0552 0.0034 +f_cyan_ilr_2 -0.4718 0.0829 0.1102 0.0042 0.0095 +f_JCZ38_qlogis 0.1609 -0.1318 -0.0277 0.0081 -0.1040 -0.4559 +f_JSE76_qlogis -0.1289 0.1494 0.0219 0.0012 0.1004 0.4309 -0.8543 +log_k1 0.2618 -0.0739 -0.0167 -0.0148 -0.0444 -0.2768 0.3518 -0.3818 +log_k2 0.0603 -0.0217 0.0174 -0.0058 -0.0197 -0.0533 0.0923 -0.1281 +g_qlogis 0.0362 0.0115 -0.0111 0.0040 0.0095 -0.0116 -0.0439 0.0651 + log_k1 log_k2 +log_k_JCZ38 +log_k_J9Z38 +log_k_JSE76 +f_cyan_ilr_1 +f_cyan_ilr_2 +f_JCZ38_qlogis +f_JSE76_qlogis +log_k1 +log_k2 0.3269 +g_qlogis -0.1656 -0.0928 + +Random effects: + est. lower upper +SD.log_k_JCZ38 0.8114 0.25296 1.3698 +SD.log_k_J9Z38 0.8354 0.25395 1.4169 +SD.log_k_JSE76 0.9790 0.30100 1.6571 +SD.f_cyan_ilr_1 0.3788 0.13374 0.6238 +SD.f_cyan_ilr_2 0.6727 0.10102 1.2445 +SD.f_JCZ38_qlogis 1.3533 -0.42359 3.1301 +SD.f_JSE76_qlogis 1.4396 -19.14972 22.0288 +SD.log_k2 0.2533 0.07521 0.4314 +SD.g_qlogis 0.9517 0.35149 1.5518 + +Variance model: + est. lower upper +a.1 2.05925 1.86481 2.25369 +b.1 0.06172 0.05062 0.07282 + +Backtransformed parameters: + est. lower upper +cyan_0 1.013e+02 9.915e+01 103.36331 +k_JCZ38 7.762e-02 3.580e-02 0.16828 +k_J9Z38 6.276e-03 2.868e-03 0.01373 +k_JSE76 3.859e-02 1.536e-02 0.09695 +f_cyan_to_JCZ38 6.520e-01 NA NA +f_cyan_to_J9Z38 2.418e-01 NA NA +f_JCZ38_to_JSE76 9.727e-01 5.150e-01 0.99917 +f_JSE76_to_JCZ38 9.895e-01 7.052e-04 1.00000 +k1 9.236e-02 8.075e-02 0.10565 +k2 9.397e-03 7.309e-03 0.01208 +g 4.294e-01 2.420e-01 0.63945 + +Resulting formation fractions: + ff +cyan_JCZ38 0.65203 +cyan_J9Z38 0.24181 +cyan_sink 0.10616 +JCZ38_JSE76 0.97274 +JCZ38_sink 0.02726 +JSE76_JCZ38 0.98953 +JSE76_sink 0.01047 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +cyan 24.26 185.34 55.79 7.504 73.77 +JCZ38 8.93 29.66 NA NA NA +J9Z38 110.45 366.89 NA NA NA +JSE76 17.96 59.66 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical SFORB path 2 fit with constant variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:55:26 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * + cyan_free + k_cyan_bound_free * cyan_bound +d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * + cyan_bound +d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 + * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 + * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 542.162 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound + 102.4395 -2.7673 -2.8942 +log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 + -3.6201 -2.3107 -5.3123 + log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 + -3.7120 0.6754 1.1448 + f_JCZ38_qlogis f_JSE76_qlogis + 14.8408 15.4734 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound +cyan_free_0 4.589 0.0000 0.00 +log_k_cyan_free 0.000 0.4849 0.00 +log_k_cyan_free_bound 0.000 0.0000 1.62 +log_k_cyan_bound_free 0.000 0.0000 0.00 +log_k_JCZ38 0.000 0.0000 0.00 +log_k_J9Z38 0.000 0.0000 0.00 +log_k_JSE76 0.000 0.0000 0.00 +f_cyan_ilr_1 0.000 0.0000 0.00 +f_cyan_ilr_2 0.000 0.0000 0.00 +f_JCZ38_qlogis 0.000 0.0000 0.00 +f_JSE76_qlogis 0.000 0.0000 0.00 + log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 +cyan_free_0 0.000 0.0000 0.000 0.0 +log_k_cyan_free 0.000 0.0000 0.000 0.0 +log_k_cyan_free_bound 0.000 0.0000 0.000 0.0 +log_k_cyan_bound_free 1.197 0.0000 0.000 0.0 +log_k_JCZ38 0.000 0.7966 0.000 0.0 +log_k_J9Z38 0.000 0.0000 1.561 0.0 +log_k_JSE76 0.000 0.0000 0.000 0.8 +f_cyan_ilr_1 0.000 0.0000 0.000 0.0 +f_cyan_ilr_2 0.000 0.0000 0.000 0.0 +f_JCZ38_qlogis 0.000 0.0000 0.000 0.0 +f_JSE76_qlogis 0.000 0.0000 0.000 0.0 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis +cyan_free_0 0.0000 0.000 0.0 0.00 +log_k_cyan_free 0.0000 0.000 0.0 0.00 +log_k_cyan_free_bound 0.0000 0.000 0.0 0.00 +log_k_cyan_bound_free 0.0000 0.000 0.0 0.00 +log_k_JCZ38 0.0000 0.000 0.0 0.00 +log_k_J9Z38 0.0000 0.000 0.0 0.00 +log_k_JSE76 0.0000 0.000 0.0 0.00 +f_cyan_ilr_1 0.6349 0.000 0.0 0.00 +f_cyan_ilr_2 0.0000 1.797 0.0 0.00 +f_JCZ38_qlogis 0.0000 0.000 15.6 0.00 +f_JSE76_qlogis 0.0000 0.000 0.0 17.52 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2283 2275 -1120 + +Optimised parameters: + est. lower upper +cyan_free_0 102.6517 101.40815 103.8952 +log_k_cyan_free -2.8729 -3.18649 -2.5593 +log_k_cyan_free_bound -2.7803 -3.60525 -1.9552 +log_k_cyan_bound_free -3.5845 -4.16644 -3.0026 +log_k_JCZ38 -2.3411 -2.89698 -1.7852 +log_k_J9Z38 -5.2487 -6.01271 -4.4847 +log_k_JSE76 -3.0259 -4.28274 -1.7690 +f_cyan_ilr_1 0.7289 0.38214 1.0756 +f_cyan_ilr_2 0.6891 0.18277 1.1954 +f_JCZ38_qlogis 4.2162 0.47015 7.9622 +f_JSE76_qlogis 5.8911 -20.19088 31.9730 +a.1 2.7159 2.52587 2.9060 +SD.log_k_cyan_free 0.3354 0.10979 0.5610 +SD.log_k_cyan_free_bound 0.9061 0.30969 1.5025 +SD.log_k_cyan_bound_free 0.6376 0.21229 1.0628 +SD.log_k_JCZ38 0.5499 0.14533 0.9545 +SD.log_k_J9Z38 0.7457 0.15106 1.3404 +SD.log_k_JSE76 1.3822 0.47329 2.2912 +SD.f_cyan_ilr_1 0.3820 0.13280 0.6313 +SD.f_cyan_ilr_2 0.4317 0.06803 0.7953 +SD.f_JCZ38_qlogis 1.8258 -0.25423 3.9059 +SD.f_JSE76_qlogis 2.2348 -83.33679 87.8065 + +Correlation: + cyn_f_0 lg_k_c_ lg_k_cyn_f_ lg_k_cyn_b_ l__JCZ3 l__J9Z3 +log_k_cyan_free 0.1944 +log_k_cyan_free_bound 0.0815 0.0814 +log_k_cyan_bound_free 0.0106 0.0426 0.0585 +log_k_JCZ38 -0.0231 -0.0106 -0.0089 -0.0051 +log_k_J9Z38 -0.0457 -0.0108 0.0019 0.0129 0.0032 +log_k_JSE76 -0.0054 -0.0024 -0.0017 -0.0005 0.1108 0.0009 +f_cyan_ilr_1 0.0051 -0.0005 -0.0035 -0.0056 0.0131 -0.0967 +f_cyan_ilr_2 -0.3182 -0.0771 -0.0309 -0.0038 0.0680 0.1643 +f_JCZ38_qlogis 0.0834 0.0369 0.0302 0.0172 -0.1145 -0.0204 +f_JSE76_qlogis -0.0553 -0.0365 -0.0441 -0.0414 0.1579 0.0175 + l__JSE7 f_cy__1 f_cy__2 f_JCZ38 +log_k_cyan_free +log_k_cyan_free_bound +log_k_cyan_bound_free +log_k_JCZ38 +log_k_J9Z38 +log_k_JSE76 +f_cyan_ilr_1 -0.0002 +f_cyan_ilr_2 0.0020 -0.0415 +f_JCZ38_qlogis 0.0052 -0.0665 -0.3437 +f_JSE76_qlogis 0.0066 0.0635 0.3491 -0.7487 + +Random effects: + est. lower upper +SD.log_k_cyan_free 0.3354 0.10979 0.5610 +SD.log_k_cyan_free_bound 0.9061 0.30969 1.5025 +SD.log_k_cyan_bound_free 0.6376 0.21229 1.0628 +SD.log_k_JCZ38 0.5499 0.14533 0.9545 +SD.log_k_J9Z38 0.7457 0.15106 1.3404 +SD.log_k_JSE76 1.3822 0.47329 2.2912 +SD.f_cyan_ilr_1 0.3820 0.13280 0.6313 +SD.f_cyan_ilr_2 0.4317 0.06803 0.7953 +SD.f_JCZ38_qlogis 1.8258 -0.25423 3.9059 +SD.f_JSE76_qlogis 2.2348 -83.33679 87.8065 + +Variance model: + est. lower upper +a.1 2.716 2.526 2.906 + +Backtransformed parameters: + est. lower upper +cyan_free_0 1.027e+02 1.014e+02 103.89517 +k_cyan_free 5.654e-02 4.132e-02 0.07736 +k_cyan_free_bound 6.202e-02 2.718e-02 0.14153 +k_cyan_bound_free 2.775e-02 1.551e-02 0.04966 +k_JCZ38 9.622e-02 5.519e-02 0.16777 +k_J9Z38 5.254e-03 2.447e-03 0.01128 +k_JSE76 4.852e-02 1.380e-02 0.17051 +f_cyan_free_to_JCZ38 6.197e-01 5.643e-01 0.84429 +f_cyan_free_to_J9Z38 2.211e-01 5.643e-01 0.84429 +f_JCZ38_to_JSE76 9.855e-01 6.154e-01 0.99965 +f_JSE76_to_JCZ38 9.972e-01 1.703e-09 1.00000 + +Estimated Eigenvalues of SFORB model(s): +cyan_b1 cyan_b2 cyan_g +0.13466 0.01165 0.36490 + +Resulting formation fractions: + ff +cyan_free_JCZ38 0.619745 +cyan_free_J9Z38 0.221083 +cyan_free_sink 0.159172 +cyan_free 1.000000 +JCZ38_JSE76 0.985460 +JCZ38_sink 0.014540 +JSE76_JCZ38 0.997244 +JSE76_sink 0.002756 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 +cyan 23.293 158.67 47.77 5.147 59.5 +JCZ38 7.203 23.93 NA NA NA +J9Z38 131.918 438.22 NA NA NA +JSE76 14.287 47.46 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical SFORB path 2 fit with two-component error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 07:58:06 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * + cyan_free + k_cyan_bound_free * cyan_bound +d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * + cyan_bound +d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 + * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 + * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 701.582 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound + 101.7511 -2.8370 -3.0162 +log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 + -3.6600 -2.2988 -5.3129 + log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 + -3.6991 0.6722 4.8596 + f_JCZ38_qlogis f_JSE76_qlogis + 13.4678 14.2149 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound +cyan_free_0 5.629 0.000 0.000 +log_k_cyan_free 0.000 0.446 0.000 +log_k_cyan_free_bound 0.000 0.000 1.449 +log_k_cyan_bound_free 0.000 0.000 0.000 +log_k_JCZ38 0.000 0.000 0.000 +log_k_J9Z38 0.000 0.000 0.000 +log_k_JSE76 0.000 0.000 0.000 +f_cyan_ilr_1 0.000 0.000 0.000 +f_cyan_ilr_2 0.000 0.000 0.000 +f_JCZ38_qlogis 0.000 0.000 0.000 +f_JSE76_qlogis 0.000 0.000 0.000 + log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 +cyan_free_0 0.000 0.0000 0.000 0.0000 +log_k_cyan_free 0.000 0.0000 0.000 0.0000 +log_k_cyan_free_bound 0.000 0.0000 0.000 0.0000 +log_k_cyan_bound_free 1.213 0.0000 0.000 0.0000 +log_k_JCZ38 0.000 0.7801 0.000 0.0000 +log_k_J9Z38 0.000 0.0000 1.575 0.0000 +log_k_JSE76 0.000 0.0000 0.000 0.8078 +f_cyan_ilr_1 0.000 0.0000 0.000 0.0000 +f_cyan_ilr_2 0.000 0.0000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.0000 0.000 0.0000 +f_JSE76_qlogis 0.000 0.0000 0.000 0.0000 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis +cyan_free_0 0.0000 0.000 0.00 0.00 +log_k_cyan_free 0.0000 0.000 0.00 0.00 +log_k_cyan_free_bound 0.0000 0.000 0.00 0.00 +log_k_cyan_bound_free 0.0000 0.000 0.00 0.00 +log_k_JCZ38 0.0000 0.000 0.00 0.00 +log_k_J9Z38 0.0000 0.000 0.00 0.00 +log_k_JSE76 0.0000 0.000 0.00 0.00 +f_cyan_ilr_1 0.6518 0.000 0.00 0.00 +f_cyan_ilr_2 0.0000 9.981 0.00 0.00 +f_JCZ38_qlogis 0.0000 0.000 14.26 0.00 +f_JSE76_qlogis 0.0000 0.000 0.00 16.17 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2240 2231 -1098 + +Optimised parameters: + est. lower upper +cyan_free_0 100.73014 9.873e+01 1.027e+02 +log_k_cyan_free -3.19634 -3.641e+00 -2.752e+00 +log_k_cyan_free_bound -3.43533 -3.674e+00 -3.197e+00 +log_k_cyan_bound_free -3.83282 -4.163e+00 -3.503e+00 +log_k_JCZ38 -2.51065 -3.225e+00 -1.796e+00 +log_k_J9Z38 -5.02539 -5.825e+00 -4.226e+00 +log_k_JSE76 -3.24777 -4.163e+00 -2.333e+00 +f_cyan_ilr_1 0.70640 3.562e-01 1.057e+00 +f_cyan_ilr_2 1.42704 3.170e-01 2.537e+00 +f_JCZ38_qlogis 2.84779 1.042e+00 4.654e+00 +f_JSE76_qlogis 8.63674 -6.407e+02 6.580e+02 +a.1 2.07082 1.877e+00 2.265e+00 +b.1 0.06227 5.098e-02 7.355e-02 +SD.log_k_cyan_free 0.49674 1.865e-01 8.069e-01 +SD.log_k_cyan_bound_free 0.28537 6.809e-02 5.027e-01 +SD.log_k_JCZ38 0.74846 2.305e-01 1.266e+00 +SD.log_k_J9Z38 0.86077 2.713e-01 1.450e+00 +SD.log_k_JSE76 0.97613 3.030e-01 1.649e+00 +SD.f_cyan_ilr_1 0.38994 1.382e-01 6.417e-01 +SD.f_cyan_ilr_2 0.82869 3.917e-02 1.618e+00 +SD.f_JCZ38_qlogis 1.05000 -2.808e-02 2.128e+00 +SD.f_JSE76_qlogis 0.44681 -3.985e+05 3.985e+05 + +Correlation: + cyn_f_0 lg_k_c_ lg_k_cyn_f_ lg_k_cyn_b_ l__JCZ3 l__J9Z3 +log_k_cyan_free 0.0936 +log_k_cyan_free_bound 0.1302 0.1627 +log_k_cyan_bound_free 0.0029 0.0525 0.5181 +log_k_JCZ38 -0.0116 -0.0077 -0.0430 -0.0236 +log_k_J9Z38 -0.0192 -0.0077 -0.0048 0.0229 -0.0005 +log_k_JSE76 0.0007 -0.0020 -0.0134 -0.0072 0.1225 -0.0016 +f_cyan_ilr_1 -0.0118 -0.0027 -0.0132 -0.0118 0.0127 -0.0505 +f_cyan_ilr_2 -0.4643 -0.0762 -0.1245 0.0137 0.0497 0.1003 +f_JCZ38_qlogis 0.0710 0.0371 0.1826 0.0925 -0.0869 -0.0130 +f_JSE76_qlogis -0.0367 -0.0270 -0.2274 -0.1865 0.1244 0.0098 + l__JSE7 f_cy__1 f_cy__2 f_JCZ38 +log_k_cyan_free +log_k_cyan_free_bound +log_k_cyan_bound_free +log_k_JCZ38 +log_k_J9Z38 +log_k_JSE76 +f_cyan_ilr_1 0.0036 +f_cyan_ilr_2 0.0050 -0.0201 +f_JCZ38_qlogis 0.0142 -0.0529 -0.2698 +f_JSE76_qlogis 0.0064 0.0345 0.2015 -0.7058 + +Random effects: + est. lower upper +SD.log_k_cyan_free 0.4967 1.865e-01 8.069e-01 +SD.log_k_cyan_bound_free 0.2854 6.809e-02 5.027e-01 +SD.log_k_JCZ38 0.7485 2.305e-01 1.266e+00 +SD.log_k_J9Z38 0.8608 2.713e-01 1.450e+00 +SD.log_k_JSE76 0.9761 3.030e-01 1.649e+00 +SD.f_cyan_ilr_1 0.3899 1.382e-01 6.417e-01 +SD.f_cyan_ilr_2 0.8287 3.917e-02 1.618e+00 +SD.f_JCZ38_qlogis 1.0500 -2.808e-02 2.128e+00 +SD.f_JSE76_qlogis 0.4468 -3.985e+05 3.985e+05 + +Variance model: + est. lower upper +a.1 2.07082 1.87680 2.26483 +b.1 0.06227 0.05098 0.07355 + +Backtransformed parameters: + est. lower upper +cyan_free_0 1.007e+02 9.873e+01 102.72898 +k_cyan_free 4.091e-02 2.623e-02 0.06382 +k_cyan_free_bound 3.221e-02 2.537e-02 0.04090 +k_cyan_bound_free 2.165e-02 1.557e-02 0.03011 +k_JCZ38 8.122e-02 3.975e-02 0.16594 +k_J9Z38 6.569e-03 2.954e-03 0.01461 +k_JSE76 3.886e-02 1.556e-02 0.09703 +f_cyan_free_to_JCZ38 6.785e-01 6.102e-01 0.97309 +f_cyan_free_to_J9Z38 2.498e-01 6.102e-01 0.97309 +f_JCZ38_to_JSE76 9.452e-01 7.392e-01 0.99056 +f_JSE76_to_JCZ38 9.998e-01 5.580e-279 1.00000 + +Estimated Eigenvalues of SFORB model(s): +cyan_b1 cyan_b2 cyan_g +0.08426 0.01051 0.41220 + +Resulting formation fractions: + ff +cyan_free_JCZ38 0.6784541 +cyan_free_J9Z38 0.2498405 +cyan_free_sink 0.0717054 +cyan_free 1.0000000 +JCZ38_JSE76 0.9452043 +JCZ38_sink 0.0547957 +JSE76_JCZ38 0.9998226 +JSE76_sink 0.0001774 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 +cyan 25.237 168.51 50.73 8.226 65.95 +JCZ38 8.535 28.35 NA NA NA +J9Z38 105.517 350.52 NA NA NA +JSE76 17.837 59.25 NA NA NA + +</code></pre> +<p></p> +</div> +<div class="section level4"> +<h4 id="pathway-2-refined-fits">Pathway 2, refined fits<a class="anchor" aria-label="anchor" href="#pathway-2-refined-fits"></a> +</h4> +<caption> +Hierarchical FOMC path 2 fit with reduced random effects, two-component +error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:11:01 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - (alpha/beta) * 1/((time/beta) + 1) * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * (alpha/beta) * 1/((time/beta) + 1) * + cyan - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_to_J9Z38 * (alpha/beta) * 1/((time/beta) + 1) * + cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 773.693 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 102.4477 -1.8631 -5.1087 -2.5114 0.6826 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta + 4.7944 15.9616 13.1566 -0.1564 2.9781 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 7.701 0.000 0.000 0.000 0.0000 +log_k_JCZ38 0.000 1.448 0.000 0.000 0.0000 +log_k_J9Z38 0.000 0.000 1.724 0.000 0.0000 +log_k_JSE76 0.000 0.000 0.000 3.659 0.0000 +f_cyan_ilr_1 0.000 0.000 0.000 0.000 0.6356 +f_cyan_ilr_2 0.000 0.000 0.000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.000 0.000 0.000 0.0000 +f_JSE76_qlogis 0.000 0.000 0.000 0.000 0.0000 +log_alpha 0.000 0.000 0.000 0.000 0.0000 +log_beta 0.000 0.000 0.000 0.000 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta +cyan_0 0.00 0.00 0.00 0.0000 0.0000 +log_k_JCZ38 0.00 0.00 0.00 0.0000 0.0000 +log_k_J9Z38 0.00 0.00 0.00 0.0000 0.0000 +log_k_JSE76 0.00 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_1 0.00 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_2 10.32 0.00 0.00 0.0000 0.0000 +f_JCZ38_qlogis 0.00 12.23 0.00 0.0000 0.0000 +f_JSE76_qlogis 0.00 0.00 14.99 0.0000 0.0000 +log_alpha 0.00 0.00 0.00 0.3924 0.0000 +log_beta 0.00 0.00 0.00 0.0000 0.5639 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2249 2242 -1106 + +Optimised parameters: + est. lower upper +cyan_0 101.24524 NA NA +log_k_JCZ38 -2.85375 NA NA +log_k_J9Z38 -5.07729 NA NA +log_k_JSE76 -3.53511 NA NA +f_cyan_ilr_1 0.67478 NA NA +f_cyan_ilr_2 0.97152 NA NA +f_JCZ38_qlogis 213.48001 NA NA +f_JSE76_qlogis 2.02040 NA NA +log_alpha -0.11041 NA NA +log_beta 3.06575 NA NA +a.1 2.05279 1.85495 2.2506 +b.1 0.07116 0.05912 0.0832 +SD.log_k_JCZ38 1.21713 0.44160 1.9927 +SD.log_k_J9Z38 0.88268 0.27541 1.4900 +SD.log_k_JSE76 0.59452 0.15005 1.0390 +SD.f_cyan_ilr_1 0.35370 0.12409 0.5833 +SD.f_cyan_ilr_2 0.78186 0.18547 1.3782 +SD.log_alpha 0.27781 0.08168 0.4739 +SD.log_beta 0.32608 0.06490 0.5873 + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_JCZ38 1.2171 0.44160 1.9927 +SD.log_k_J9Z38 0.8827 0.27541 1.4900 +SD.log_k_JSE76 0.5945 0.15005 1.0390 +SD.f_cyan_ilr_1 0.3537 0.12409 0.5833 +SD.f_cyan_ilr_2 0.7819 0.18547 1.3782 +SD.log_alpha 0.2778 0.08168 0.4739 +SD.log_beta 0.3261 0.06490 0.5873 + +Variance model: + est. lower upper +a.1 2.05279 1.85495 2.2506 +b.1 0.07116 0.05912 0.0832 + +Backtransformed parameters: + est. lower upper +cyan_0 1.012e+02 NA NA +k_JCZ38 5.763e-02 NA NA +k_J9Z38 6.237e-03 NA NA +k_JSE76 2.916e-02 NA NA +f_cyan_to_JCZ38 6.354e-01 NA NA +f_cyan_to_J9Z38 2.447e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 NA NA +f_JSE76_to_JCZ38 8.829e-01 NA NA +alpha 8.955e-01 NA NA +beta 2.145e+01 NA NA + +Resulting formation fractions: + ff +cyan_JCZ38 0.6354 +cyan_J9Z38 0.2447 +cyan_sink 0.1200 +JCZ38_JSE76 1.0000 +JCZ38_sink 0.0000 +JSE76_JCZ38 0.8829 +JSE76_sink 0.1171 + +Estimated disappearance times: + DT50 DT90 DT50back +cyan 25.07 259.21 78.03 +JCZ38 12.03 39.96 NA +J9Z38 111.14 369.19 NA +JSE76 23.77 78.98 NA + +</code></pre> +<p></p> +<caption> +Hierarchical DFOP path 2 fit with reduced random effects, constant +variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:12:27 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 + + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 859.906 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 102.4380 -2.3107 -5.3123 -3.7120 0.6757 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 + 1.1439 13.1194 12.3492 -1.9317 -4.4557 + g_qlogis + -0.5644 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 4.591 0.0000 0.000 0.0 0.0000 +log_k_JCZ38 0.000 0.7966 0.000 0.0 0.0000 +log_k_J9Z38 0.000 0.0000 1.561 0.0 0.0000 +log_k_JSE76 0.000 0.0000 0.000 0.8 0.0000 +f_cyan_ilr_1 0.000 0.0000 0.000 0.0 0.6349 +f_cyan_ilr_2 0.000 0.0000 0.000 0.0 0.0000 +f_JCZ38_qlogis 0.000 0.0000 0.000 0.0 0.0000 +f_JSE76_qlogis 0.000 0.0000 0.000 0.0 0.0000 +log_k1 0.000 0.0000 0.000 0.0 0.0000 +log_k2 0.000 0.0000 0.000 0.0 0.0000 +g_qlogis 0.000 0.0000 0.000 0.0 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 +cyan_0 0.000 0.00 0.00 0.000 0.0000 +log_k_JCZ38 0.000 0.00 0.00 0.000 0.0000 +log_k_J9Z38 0.000 0.00 0.00 0.000 0.0000 +log_k_JSE76 0.000 0.00 0.00 0.000 0.0000 +f_cyan_ilr_1 0.000 0.00 0.00 0.000 0.0000 +f_cyan_ilr_2 1.797 0.00 0.00 0.000 0.0000 +f_JCZ38_qlogis 0.000 13.86 0.00 0.000 0.0000 +f_JSE76_qlogis 0.000 0.00 13.91 0.000 0.0000 +log_k1 0.000 0.00 0.00 1.106 0.0000 +log_k2 0.000 0.00 0.00 0.000 0.6141 +g_qlogis 0.000 0.00 0.00 0.000 0.0000 + g_qlogis +cyan_0 0.000 +log_k_JCZ38 0.000 +log_k_J9Z38 0.000 +log_k_JSE76 0.000 +f_cyan_ilr_1 0.000 +f_cyan_ilr_2 0.000 +f_JCZ38_qlogis 0.000 +f_JSE76_qlogis 0.000 +log_k1 0.000 +log_k2 0.000 +g_qlogis 1.595 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2282 2274 -1121 + +Optimised parameters: + est. lower upper +cyan_0 102.6036 NA NA +log_k_JCZ38 -2.9348 NA NA +log_k_J9Z38 -5.1617 NA NA +log_k_JSE76 -3.6396 NA NA +f_cyan_ilr_1 0.6991 NA NA +f_cyan_ilr_2 0.6341 NA NA +f_JCZ38_qlogis 4232.3011 NA NA +f_JSE76_qlogis 1.9658 NA NA +log_k1 -1.9503 NA NA +log_k2 -4.4745 NA NA +g_qlogis -0.4967 NA NA +a.1 2.7461 2.59274 2.8994 +SD.log_k_JCZ38 1.3178 0.47602 2.1596 +SD.log_k_J9Z38 0.7022 0.15061 1.2538 +SD.log_k_JSE76 0.6566 0.15613 1.1570 +SD.f_cyan_ilr_1 0.3409 0.11666 0.5652 +SD.f_cyan_ilr_2 0.4385 0.09482 0.7821 +SD.log_k1 0.7381 0.25599 1.2202 +SD.log_k2 0.5133 0.18152 0.8450 +SD.g_qlogis 0.9866 0.35681 1.6164 + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_JCZ38 1.3178 0.47602 2.1596 +SD.log_k_J9Z38 0.7022 0.15061 1.2538 +SD.log_k_JSE76 0.6566 0.15613 1.1570 +SD.f_cyan_ilr_1 0.3409 0.11666 0.5652 +SD.f_cyan_ilr_2 0.4385 0.09482 0.7821 +SD.log_k1 0.7381 0.25599 1.2202 +SD.log_k2 0.5133 0.18152 0.8450 +SD.g_qlogis 0.9866 0.35681 1.6164 + +Variance model: + est. lower upper +a.1 2.746 2.593 2.899 + +Backtransformed parameters: + est. lower upper +cyan_0 1.026e+02 NA NA +k_JCZ38 5.314e-02 NA NA +k_J9Z38 5.732e-03 NA NA +k_JSE76 2.626e-02 NA NA +f_cyan_to_JCZ38 6.051e-01 NA NA +f_cyan_to_J9Z38 2.251e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 NA NA +f_JSE76_to_JCZ38 8.772e-01 NA NA +k1 1.422e-01 NA NA +k2 1.140e-02 NA NA +g 3.783e-01 NA NA + +Resulting formation fractions: + ff +cyan_JCZ38 0.6051 +cyan_J9Z38 0.2251 +cyan_sink 0.1698 +JCZ38_JSE76 1.0000 +JCZ38_sink 0.0000 +JSE76_JCZ38 0.8772 +JSE76_sink 0.1228 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +cyan 22.05 160.35 48.27 4.873 60.83 +JCZ38 13.04 43.33 NA NA NA +J9Z38 120.93 401.73 NA NA NA +JSE76 26.39 87.68 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical DFOP path 2 fit with reduced random effects, two-component +error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:12:54 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * cyan +d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 + + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - + g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * + exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 886.298 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 + 101.7393 -1.4493 -5.0118 -2.1269 0.6720 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 + 7.3362 13.4423 13.2659 -2.0061 -4.5527 + g_qlogis + -0.5806 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 +cyan_0 5.604 0.00 0.000 0.000 0.0000 +log_k_JCZ38 0.000 2.77 0.000 0.000 0.0000 +log_k_J9Z38 0.000 0.00 1.662 0.000 0.0000 +log_k_JSE76 0.000 0.00 0.000 5.021 0.0000 +f_cyan_ilr_1 0.000 0.00 0.000 0.000 0.6519 +f_cyan_ilr_2 0.000 0.00 0.000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.00 0.000 0.000 0.0000 +f_JSE76_qlogis 0.000 0.00 0.000 0.000 0.0000 +log_k1 0.000 0.00 0.000 0.000 0.0000 +log_k2 0.000 0.00 0.000 0.000 0.0000 +g_qlogis 0.000 0.00 0.000 0.000 0.0000 + f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 +cyan_0 0.00 0.00 0.00 0.0000 0.0000 +log_k_JCZ38 0.00 0.00 0.00 0.0000 0.0000 +log_k_J9Z38 0.00 0.00 0.00 0.0000 0.0000 +log_k_JSE76 0.00 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_1 0.00 0.00 0.00 0.0000 0.0000 +f_cyan_ilr_2 13.37 0.00 0.00 0.0000 0.0000 +f_JCZ38_qlogis 0.00 14.21 0.00 0.0000 0.0000 +f_JSE76_qlogis 0.00 0.00 14.58 0.0000 0.0000 +log_k1 0.00 0.00 0.00 0.8453 0.0000 +log_k2 0.00 0.00 0.00 0.0000 0.5969 +g_qlogis 0.00 0.00 0.00 0.0000 0.0000 + g_qlogis +cyan_0 0.00 +log_k_JCZ38 0.00 +log_k_J9Z38 0.00 +log_k_JSE76 0.00 +f_cyan_ilr_1 0.00 +f_cyan_ilr_2 0.00 +f_JCZ38_qlogis 0.00 +f_JSE76_qlogis 0.00 +log_k1 0.00 +log_k2 0.00 +g_qlogis 1.69 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2237 2229 -1099 + +Optimised parameters: + est. lower upper +cyan_0 101.00243 NA NA +log_k_JCZ38 -2.80828 NA NA +log_k_J9Z38 -5.04449 NA NA +log_k_JSE76 -3.66981 NA NA +f_cyan_ilr_1 0.72564 NA NA +f_cyan_ilr_2 1.37978 NA NA +f_JCZ38_qlogis 1.98726 NA NA +f_JSE76_qlogis 414.80884 NA NA +log_k1 -2.38601 NA NA +log_k2 -4.63632 NA NA +g_qlogis -0.33920 NA NA +a.1 2.10837 1.91261 2.30413 +b.1 0.06223 0.05085 0.07361 +SD.log_k_JCZ38 1.30902 0.48128 2.13675 +SD.log_k_J9Z38 0.83882 0.25790 1.41974 +SD.log_k_JSE76 0.58104 0.14201 1.02008 +SD.f_cyan_ilr_1 0.35421 0.12398 0.58443 +SD.f_cyan_ilr_2 0.79373 0.12007 1.46739 +SD.log_k2 0.27476 0.08557 0.46394 +SD.g_qlogis 0.96170 0.35463 1.56878 + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_JCZ38 1.3090 0.48128 2.1367 +SD.log_k_J9Z38 0.8388 0.25790 1.4197 +SD.log_k_JSE76 0.5810 0.14201 1.0201 +SD.f_cyan_ilr_1 0.3542 0.12398 0.5844 +SD.f_cyan_ilr_2 0.7937 0.12007 1.4674 +SD.log_k2 0.2748 0.08557 0.4639 +SD.g_qlogis 0.9617 0.35463 1.5688 + +Variance model: + est. lower upper +a.1 2.10837 1.91261 2.30413 +b.1 0.06223 0.05085 0.07361 + +Backtransformed parameters: + est. lower upper +cyan_0 1.010e+02 NA NA +k_JCZ38 6.031e-02 NA NA +k_J9Z38 6.445e-03 NA NA +k_JSE76 2.548e-02 NA NA +f_cyan_to_JCZ38 6.808e-01 NA NA +f_cyan_to_J9Z38 2.440e-01 NA NA +f_JCZ38_to_JSE76 8.795e-01 NA NA +f_JSE76_to_JCZ38 1.000e+00 NA NA +k1 9.200e-02 NA NA +k2 9.693e-03 NA NA +g 4.160e-01 NA NA + +Resulting formation fractions: + ff +cyan_JCZ38 0.68081 +cyan_J9Z38 0.24398 +cyan_sink 0.07521 +JCZ38_JSE76 0.87945 +JCZ38_sink 0.12055 +JSE76_JCZ38 1.00000 +JSE76_sink 0.00000 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +cyan 25.00 182.05 54.8 7.535 71.51 +JCZ38 11.49 38.18 NA NA NA +J9Z38 107.55 357.28 NA NA NA +JSE76 27.20 90.36 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical SFORB path 2 fit with reduced random effects, constant +variance +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:12:32 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * + cyan_free + k_cyan_bound_free * cyan_bound +d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * + cyan_bound +d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 + * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 + * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 865.121 s +Using 300, 100 iterations and 10 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound + 102.4395 -2.7673 -2.8942 +log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 + -3.6201 -2.3107 -5.3123 + log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 + -3.7120 0.6754 1.1448 + f_JCZ38_qlogis f_JSE76_qlogis + 14.8408 15.4734 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound +cyan_free_0 4.589 0.0000 0.00 +log_k_cyan_free 0.000 0.4849 0.00 +log_k_cyan_free_bound 0.000 0.0000 1.62 +log_k_cyan_bound_free 0.000 0.0000 0.00 +log_k_JCZ38 0.000 0.0000 0.00 +log_k_J9Z38 0.000 0.0000 0.00 +log_k_JSE76 0.000 0.0000 0.00 +f_cyan_ilr_1 0.000 0.0000 0.00 +f_cyan_ilr_2 0.000 0.0000 0.00 +f_JCZ38_qlogis 0.000 0.0000 0.00 +f_JSE76_qlogis 0.000 0.0000 0.00 + log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 +cyan_free_0 0.000 0.0000 0.000 0.0 +log_k_cyan_free 0.000 0.0000 0.000 0.0 +log_k_cyan_free_bound 0.000 0.0000 0.000 0.0 +log_k_cyan_bound_free 1.197 0.0000 0.000 0.0 +log_k_JCZ38 0.000 0.7966 0.000 0.0 +log_k_J9Z38 0.000 0.0000 1.561 0.0 +log_k_JSE76 0.000 0.0000 0.000 0.8 +f_cyan_ilr_1 0.000 0.0000 0.000 0.0 +f_cyan_ilr_2 0.000 0.0000 0.000 0.0 +f_JCZ38_qlogis 0.000 0.0000 0.000 0.0 +f_JSE76_qlogis 0.000 0.0000 0.000 0.0 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis +cyan_free_0 0.0000 0.000 0.0 0.00 +log_k_cyan_free 0.0000 0.000 0.0 0.00 +log_k_cyan_free_bound 0.0000 0.000 0.0 0.00 +log_k_cyan_bound_free 0.0000 0.000 0.0 0.00 +log_k_JCZ38 0.0000 0.000 0.0 0.00 +log_k_J9Z38 0.0000 0.000 0.0 0.00 +log_k_JSE76 0.0000 0.000 0.0 0.00 +f_cyan_ilr_1 0.6349 0.000 0.0 0.00 +f_cyan_ilr_2 0.0000 1.797 0.0 0.00 +f_JCZ38_qlogis 0.0000 0.000 15.6 0.00 +f_JSE76_qlogis 0.0000 0.000 0.0 17.52 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2280 2272 -1120 + +Optimised parameters: + est. lower upper +cyan_free_0 102.6532 NA NA +log_k_cyan_free -2.8547 NA NA +log_k_cyan_free_bound -2.7004 NA NA +log_k_cyan_bound_free -3.5078 NA NA +log_k_JCZ38 -2.9255 NA NA +log_k_J9Z38 -5.1089 NA NA +log_k_JSE76 -3.6263 NA NA +f_cyan_ilr_1 0.6873 NA NA +f_cyan_ilr_2 0.6498 NA NA +f_JCZ38_qlogis 3624.2149 NA NA +f_JSE76_qlogis 1.9991 NA NA +a.1 2.7472 2.55559 2.9388 +SD.log_k_cyan_free 0.3227 0.10296 0.5423 +SD.log_k_cyan_free_bound 0.8757 0.29525 1.4562 +SD.log_k_cyan_bound_free 0.6128 0.20220 1.0233 +SD.log_k_JCZ38 1.3431 0.48474 2.2014 +SD.log_k_J9Z38 0.6881 0.14714 1.2291 +SD.log_k_JSE76 0.6461 0.15321 1.1390 +SD.f_cyan_ilr_1 0.3361 0.11376 0.5585 +SD.f_cyan_ilr_2 0.4286 0.08419 0.7730 + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_cyan_free 0.3227 0.10296 0.5423 +SD.log_k_cyan_free_bound 0.8757 0.29525 1.4562 +SD.log_k_cyan_bound_free 0.6128 0.20220 1.0233 +SD.log_k_JCZ38 1.3431 0.48474 2.2014 +SD.log_k_J9Z38 0.6881 0.14714 1.2291 +SD.log_k_JSE76 0.6461 0.15321 1.1390 +SD.f_cyan_ilr_1 0.3361 0.11376 0.5585 +SD.f_cyan_ilr_2 0.4286 0.08419 0.7730 + +Variance model: + est. lower upper +a.1 2.747 2.556 2.939 + +Backtransformed parameters: + est. lower upper +cyan_free_0 1.027e+02 NA NA +k_cyan_free 5.758e-02 NA NA +k_cyan_free_bound 6.718e-02 NA NA +k_cyan_bound_free 2.996e-02 NA NA +k_JCZ38 5.364e-02 NA NA +k_J9Z38 6.042e-03 NA NA +k_JSE76 2.662e-02 NA NA +f_cyan_free_to_JCZ38 6.039e-01 NA NA +f_cyan_free_to_J9Z38 2.285e-01 NA NA +f_JCZ38_to_JSE76 1.000e+00 NA NA +f_JSE76_to_JCZ38 8.807e-01 NA NA + +Estimated Eigenvalues of SFORB model(s): +cyan_b1 cyan_b2 cyan_g + 0.1426 0.0121 0.3484 + +Resulting formation fractions: + ff +cyan_free_JCZ38 0.6039 +cyan_free_J9Z38 0.2285 +cyan_free_sink 0.1676 +cyan_free 1.0000 +JCZ38_JSE76 1.0000 +JCZ38_sink 0.0000 +JSE76_JCZ38 0.8807 +JSE76_sink 0.1193 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 +cyan 23.84 154.95 46.65 4.86 57.31 +JCZ38 12.92 42.93 NA NA NA +J9Z38 114.71 381.07 NA NA NA +JSE76 26.04 86.51 NA NA NA + +</code></pre> +<p></p> +<caption> +Hierarchical SFORB path 2 fit with reduced random effects, two-component +error +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:12:36 2025 +Date of summary: Fri Feb 14 08:12:55 2025 + +Equations: +d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * + cyan_free + k_cyan_bound_free * cyan_bound +d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * + cyan_bound +d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 + * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 +d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 + * J9Z38 +d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 + +Data: +433 observations of 4 variable(s) grouped in 5 datasets + +Model predictions using solution type deSolve + +Fitted in 868.952 s +Using 300, 100 iterations and 10 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound + 101.7511 -2.8370 -3.0162 +log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 + -3.6600 -2.2988 -5.3129 + log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 + -3.6991 0.6722 4.8596 + f_JCZ38_qlogis f_JSE76_qlogis + 13.4678 14.2149 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + cyan_free_0 log_k_cyan_free log_k_cyan_free_bound +cyan_free_0 5.629 0.000 0.000 +log_k_cyan_free 0.000 0.446 0.000 +log_k_cyan_free_bound 0.000 0.000 1.449 +log_k_cyan_bound_free 0.000 0.000 0.000 +log_k_JCZ38 0.000 0.000 0.000 +log_k_J9Z38 0.000 0.000 0.000 +log_k_JSE76 0.000 0.000 0.000 +f_cyan_ilr_1 0.000 0.000 0.000 +f_cyan_ilr_2 0.000 0.000 0.000 +f_JCZ38_qlogis 0.000 0.000 0.000 +f_JSE76_qlogis 0.000 0.000 0.000 + log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 +cyan_free_0 0.000 0.0000 0.000 0.0000 +log_k_cyan_free 0.000 0.0000 0.000 0.0000 +log_k_cyan_free_bound 0.000 0.0000 0.000 0.0000 +log_k_cyan_bound_free 1.213 0.0000 0.000 0.0000 +log_k_JCZ38 0.000 0.7801 0.000 0.0000 +log_k_J9Z38 0.000 0.0000 1.575 0.0000 +log_k_JSE76 0.000 0.0000 0.000 0.8078 +f_cyan_ilr_1 0.000 0.0000 0.000 0.0000 +f_cyan_ilr_2 0.000 0.0000 0.000 0.0000 +f_JCZ38_qlogis 0.000 0.0000 0.000 0.0000 +f_JSE76_qlogis 0.000 0.0000 0.000 0.0000 + f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis +cyan_free_0 0.0000 0.000 0.00 0.00 +log_k_cyan_free 0.0000 0.000 0.00 0.00 +log_k_cyan_free_bound 0.0000 0.000 0.00 0.00 +log_k_cyan_bound_free 0.0000 0.000 0.00 0.00 +log_k_JCZ38 0.0000 0.000 0.00 0.00 +log_k_J9Z38 0.0000 0.000 0.00 0.00 +log_k_JSE76 0.0000 0.000 0.00 0.00 +f_cyan_ilr_1 0.6518 0.000 0.00 0.00 +f_cyan_ilr_2 0.0000 9.981 0.00 0.00 +f_JCZ38_qlogis 0.0000 0.000 14.26 0.00 +f_JSE76_qlogis 0.0000 0.000 0.00 16.17 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 2241 2233 -1101 + +Optimised parameters: + est. lower upper +cyan_free_0 100.95469 NA NA +log_k_cyan_free -3.18706 NA NA +log_k_cyan_free_bound -3.38455 NA NA +log_k_cyan_bound_free -3.75788 NA NA +log_k_JCZ38 -2.77024 NA NA +log_k_J9Z38 -5.03665 NA NA +log_k_JSE76 -3.60289 NA NA +f_cyan_ilr_1 0.72263 NA NA +f_cyan_ilr_2 1.45352 NA NA +f_JCZ38_qlogis 2.00778 NA NA +f_JSE76_qlogis 941.58570 NA NA +a.1 2.11130 1.91479 2.30780 +b.1 0.06299 0.05152 0.07445 +SD.log_k_cyan_free 0.50098 0.18805 0.81390 +SD.log_k_cyan_bound_free 0.31671 0.08467 0.54875 +SD.log_k_JCZ38 1.25865 0.45932 2.05798 +SD.log_k_J9Z38 0.86833 0.27222 1.46444 +SD.log_k_JSE76 0.59325 0.14711 1.03940 +SD.f_cyan_ilr_1 0.35705 0.12521 0.58890 +SD.f_cyan_ilr_2 0.88541 0.13797 1.63286 + +Correlation is not available + +Random effects: + est. lower upper +SD.log_k_cyan_free 0.5010 0.18805 0.8139 +SD.log_k_cyan_bound_free 0.3167 0.08467 0.5487 +SD.log_k_JCZ38 1.2587 0.45932 2.0580 +SD.log_k_J9Z38 0.8683 0.27222 1.4644 +SD.log_k_JSE76 0.5933 0.14711 1.0394 +SD.f_cyan_ilr_1 0.3571 0.12521 0.5889 +SD.f_cyan_ilr_2 0.8854 0.13797 1.6329 + +Variance model: + est. lower upper +a.1 2.11130 1.91479 2.30780 +b.1 0.06299 0.05152 0.07445 + +Backtransformed parameters: + est. lower upper +cyan_free_0 1.010e+02 NA NA +k_cyan_free 4.129e-02 NA NA +k_cyan_free_bound 3.389e-02 NA NA +k_cyan_bound_free 2.333e-02 NA NA +k_JCZ38 6.265e-02 NA NA +k_J9Z38 6.495e-03 NA NA +k_JSE76 2.724e-02 NA NA +f_cyan_free_to_JCZ38 6.844e-01 NA NA +f_cyan_free_to_J9Z38 2.463e-01 NA NA +f_JCZ38_to_JSE76 8.816e-01 NA NA +f_JSE76_to_JCZ38 1.000e+00 NA NA + +Estimated Eigenvalues of SFORB model(s): +cyan_b1 cyan_b2 cyan_g +0.08751 0.01101 0.39586 + +Resulting formation fractions: + ff +cyan_free_JCZ38 0.68444 +cyan_free_J9Z38 0.24633 +cyan_free_sink 0.06923 +cyan_free 1.00000 +JCZ38_JSE76 0.88161 +JCZ38_sink 0.11839 +JSE76_JCZ38 1.00000 +JSE76_sink 0.00000 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 +cyan 25.36 163.36 49.18 7.921 62.95 +JCZ38 11.06 36.75 NA NA NA +J9Z38 106.71 354.49 NA NA NA +JSE76 25.44 84.51 NA NA NA + +</code></pre> +<p></p> +</div> +</div> +<div class="section level3"> +<h3 id="session-info">Session info<a class="anchor" aria-label="anchor" href="#session-info"></a> +</h3> +<pre><code>R version 4.4.2 (2024-10-31) +Platform: x86_64-pc-linux-gnu +Running under: Debian GNU/Linux 12 (bookworm) + +Matrix products: default +BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 +LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 + +locale: + [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C + [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8 + [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 + [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C + [9] LC_ADDRESS=C LC_TELEPHONE=C +[11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C + +time zone: Europe/Berlin +tzcode source: system (glibc) + +attached base packages: +[1] parallel stats graphics grDevices utils datasets methods +[8] base + +other attached packages: +[1] rmarkdown_2.29 nvimcom_0.9-167 saemix_3.3 npde_3.5 +[5] knitr_1.49 mkin_1.2.10 + +loaded via a namespace (and not attached): + [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3 lattice_0.22-6 + [5] digest_0.6.37 magrittr_2.0.3 evaluate_1.0.1 grid_4.4.2 + [9] fastmap_1.2.0 cellranger_1.1.0 jsonlite_1.8.9 processx_3.8.4 +[13] pkgbuild_1.4.5 deSolve_1.40 mclust_6.1.1 ps_1.8.1 +[17] gridExtra_2.3 fansi_1.0.6 scales_1.3.0 codetools_0.2-20 +[21] textshaping_0.4.1 jquerylib_0.1.4 cli_3.6.3 rlang_1.1.4 +[25] munsell_0.5.1 cachem_1.1.0 yaml_2.3.10 inline_0.3.20 +[29] tools_4.4.2 dplyr_1.1.4 colorspace_2.1-1 ggplot2_3.5.1 +[33] vctrs_0.6.5 R6_2.5.1 zoo_1.8-12 lifecycle_1.0.4 +[37] fs_1.6.5 htmlwidgets_1.6.4 MASS_7.3-61 ragg_1.3.3 +[41] callr_3.7.6 pkgconfig_2.0.3 desc_1.4.3 pkgdown_2.1.1 +[45] pillar_1.9.0 bslib_0.8.0 gtable_0.3.6 glue_1.8.0 +[49] systemfonts_1.1.0 xfun_0.49 tibble_3.2.1 lmtest_0.9-40 +[53] tidyselect_1.2.1 htmltools_0.5.8.1 nlme_3.1-166 compiler_4.4.2 +[57] readxl_1.4.3 </code></pre> +</div> +<div class="section level3"> +<h3 id="hardware-info">Hardware info<a class="anchor" aria-label="anchor" href="#hardware-info"></a> +</h3> +<pre><code>CPU model: AMD Ryzen 9 7950X 16-Core Processor</code></pre> +<pre><code>MemTotal: 64927788 kB</code></pre> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-13-1.png b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-13-1.png Binary files differnew file mode 100644 index 00000000..d2201974 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-13-1.png diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-14-1.png b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-14-1.png Binary files differnew file mode 100644 index 00000000..7380ba4c --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-14-1.png diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-15-1.png b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-15-1.png Binary files differnew file mode 100644 index 00000000..4de15105 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-15-1.png diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-20-1.png b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-20-1.png Binary files differnew file mode 100644 index 00000000..d57badf1 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-20-1.png diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-21-1.png b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-21-1.png Binary files differnew file mode 100644 index 00000000..eb629c4d --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-21-1.png diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-22-1.png b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-22-1.png Binary files differnew file mode 100644 index 00000000..a2abb2f7 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-22-1.png diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-7-1.png b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-7-1.png Binary files differnew file mode 100644 index 00000000..28ec82ba --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-7-1.png diff --git a/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-8-1.png b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-8-1.png Binary files differnew file mode 100644 index 00000000..a2abb2f7 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_cyan_pathway_files/figure-html/unnamed-chunk-8-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent.html b/docs/dev/articles/prebuilt/2022_dmta_parent.html new file mode 100644 index 00000000..d900cf00 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent.html @@ -0,0 +1,2166 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change on 5 January +2023, last compiled on 14 Februar 2025</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/prebuilt/2022_dmta_parent.rmd" class="external-link"><code>vignettes/prebuilt/2022_dmta_parent.rmd</code></a></small> + <div class="d-none name"><code>2022_dmta_parent.rmd</code></div> + </div> + + + +<div class="section level2"> +<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a> +</h2> +<p>The purpose of this document is to demonstrate how nonlinear +hierarchical models (NLHM) based on the parent degradation models SFO, +FOMC, DFOP and HS can be fitted with the mkin package.</p> +<p>It was assembled in the course of work package 1.1 of Project Number +173340 (Application of nonlinear hierarchical models to the kinetic +evaluation of chemical degradation data) of the German Environment +Agency carried out in 2022 and 2023.</p> +<p>The mkin package is used in version 1.2.10. It contains the test data +and the functions used in the evaluations. The <code>saemix</code> +package is used as a backend for fitting the NLHM, but is also loaded to +make the convergence plot function available.</p> +<p>This document is processed with the <code>knitr</code> package, which +also provides the <code>kable</code> function that is used to improve +the display of tabular data in R markdown documents. For parallel +processing, the <code>parallel</code> package is used.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://yihui.org/knitr/" class="external-link">knitr</a></span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">saemix</span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">parallel</span><span class="op">)</span></span> +<span><span class="va">n_cores</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span></span> +<span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.info.html" class="external-link">Sys.info</a></span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="st">"sysname"</span><span class="op">]</span> <span class="op">==</span> <span class="st">"Windows"</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">cl</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makePSOCKcluster</a></span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span><span class="op">}</span> <span class="kw">else</span> <span class="op">{</span></span> +<span> <span class="va">cl</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makeForkCluster</a></span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="data">Data<a class="anchor" aria-label="anchor" href="#data"></a> +</h2> +<p>The test data are available in the mkin package as an object of class +<code>mkindsg</code> (mkin dataset group) under the identifier +<code>dimethenamid_2018</code>. The following preprocessing steps are +still necessary:</p> +<ul> +<li>The data available for the enantiomer dimethenamid-P (DMTAP) are +renamed to have the same substance name as the data for the racemic +mixture dimethenamid (DMTA). The reason for this is that no difference +between their degradation behaviour was identified in the EU risk +assessment.</li> +<li>The data for transformation products and unnecessary columns are +discarded</li> +<li>The observation times of each dataset are multiplied with the +corresponding normalisation factor also available in the dataset, in +order to make it possible to describe all datasets with a single set of +parameters that are independent of temperature</li> +<li>Finally, datasets observed in the same soil (<code>Elliot 1</code> +and <code>Elliot 2</code>) are combined, resulting in dimethenamid +(DMTA) data from six soils.</li> +</ul> +<p>The following commented R code performs this preprocessing.</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="co"># Apply a function to each of the seven datasets in the mkindsg object to create a list</span></span> +<span><span class="va">dmta_ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">7</span>, <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span><span class="op">[[</span><span class="va">i</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span> <span class="co"># Get a dataset</span></span> +<span> <span class="va">ds_i</span><span class="op">[</span><span class="va">ds_i</span><span class="op">$</span><span class="va">name</span> <span class="op">==</span> <span class="st">"DMTAP"</span>, <span class="st">"name"</span><span class="op">]</span> <span class="op"><-</span> <span class="st">"DMTA"</span> <span class="co"># Rename DMTAP to DMTA</span></span> +<span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">ds_i</span>, <span class="va">name</span> <span class="op">==</span> <span class="st">"DMTA"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"name"</span>, <span class="st">"time"</span>, <span class="st">"value"</span><span class="op">)</span><span class="op">)</span> <span class="co"># Select data</span></span> +<span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op">*</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">f_time_norm</span><span class="op">[</span><span class="va">i</span><span class="op">]</span> <span class="co"># Normalise time</span></span> +<span> <span class="va">ds_i</span> <span class="co"># Return the dataset</span></span> +<span><span class="op">}</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># Use dataset titles as names for the list elements</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="va">ds</span><span class="op">$</span><span class="va">title</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># Combine data for Elliot soil to obtain a named list with six elements</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span>, <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span> <span class="co">#</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span></code></pre></div> +<p>The following tables show the 6 datasets.</p> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">for</span> <span class="op">(</span><span class="va">ds_name</span> <span class="kw">in</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="fu"><a href="../../reference/mkin_long_to_wide.html">mkin_long_to_wide</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="va">ds_name</span><span class="op">]</span><span class="op">]</span><span class="op">)</span>,</span> +<span> caption <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Dataset"</span>, <span class="va">ds_name</span><span class="op">)</span>,</span> +<span> label <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste0</a></span><span class="op">(</span><span class="st">"tab:"</span>, <span class="va">ds_name</span><span class="op">)</span>, booktabs <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/cat.html" class="external-link">cat</a></span><span class="op">(</span><span class="st">"\n\\clearpage\n"</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +<table class="table"> +<caption>Dataset Calke</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0</td> +<td align="right">95.8</td> +</tr> +<tr class="even"> +<td align="right">0</td> +<td align="right">98.7</td> +</tr> +<tr class="odd"> +<td align="right">14</td> +<td align="right">60.5</td> +</tr> +<tr class="even"> +<td align="right">30</td> +<td align="right">39.1</td> +</tr> +<tr class="odd"> +<td align="right">59</td> +<td align="right">15.2</td> +</tr> +<tr class="even"> +<td align="right">120</td> +<td align="right">4.8</td> +</tr> +<tr class="odd"> +<td align="right">120</td> +<td align="right">4.6</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Borstel</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">100.5</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">99.6</td> +</tr> +<tr class="odd"> +<td align="right">1.941295</td> +<td align="right">91.9</td> +</tr> +<tr class="even"> +<td align="right">1.941295</td> +<td align="right">91.3</td> +</tr> +<tr class="odd"> +<td align="right">6.794534</td> +<td align="right">81.8</td> +</tr> +<tr class="even"> +<td align="right">6.794534</td> +<td align="right">82.1</td> +</tr> +<tr class="odd"> +<td align="right">13.589067</td> +<td align="right">69.1</td> +</tr> +<tr class="even"> +<td align="right">13.589067</td> +<td align="right">68.0</td> +</tr> +<tr class="odd"> +<td align="right">27.178135</td> +<td align="right">51.4</td> +</tr> +<tr class="even"> +<td align="right">27.178135</td> +<td align="right">51.4</td> +</tr> +<tr class="odd"> +<td align="right">56.297565</td> +<td align="right">27.6</td> +</tr> +<tr class="even"> +<td align="right">56.297565</td> +<td align="right">26.8</td> +</tr> +<tr class="odd"> +<td align="right">86.387643</td> +<td align="right">15.7</td> +</tr> +<tr class="even"> +<td align="right">86.387643</td> +<td align="right">15.3</td> +</tr> +<tr class="odd"> +<td align="right">115.507073</td> +<td align="right">7.9</td> +</tr> +<tr class="even"> +<td align="right">115.507073</td> +<td align="right">8.1</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Flaach</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">96.5</td> +</tr> +<tr class="even"> +<td align="right">0.0000000</td> +<td align="right">96.8</td> +</tr> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">97.0</td> +</tr> +<tr class="even"> +<td align="right">0.6233856</td> +<td align="right">82.9</td> +</tr> +<tr class="odd"> +<td align="right">0.6233856</td> +<td align="right">86.7</td> +</tr> +<tr class="even"> +<td align="right">0.6233856</td> +<td align="right">87.4</td> +</tr> +<tr class="odd"> +<td align="right">1.8701567</td> +<td align="right">72.8</td> +</tr> +<tr class="even"> +<td align="right">1.8701567</td> +<td align="right">69.9</td> +</tr> +<tr class="odd"> +<td align="right">1.8701567</td> +<td align="right">71.9</td> +</tr> +<tr class="even"> +<td align="right">4.3636989</td> +<td align="right">51.4</td> +</tr> +<tr class="odd"> +<td align="right">4.3636989</td> +<td align="right">52.9</td> +</tr> +<tr class="even"> +<td align="right">4.3636989</td> +<td align="right">48.6</td> +</tr> +<tr class="odd"> +<td align="right">8.7273979</td> +<td align="right">28.5</td> +</tr> +<tr class="even"> +<td align="right">8.7273979</td> +<td align="right">27.3</td> +</tr> +<tr class="odd"> +<td align="right">8.7273979</td> +<td align="right">27.5</td> +</tr> +<tr class="even"> +<td align="right">13.0910968</td> +<td align="right">14.8</td> +</tr> +<tr class="odd"> +<td align="right">13.0910968</td> +<td align="right">13.4</td> +</tr> +<tr class="even"> +<td align="right">13.0910968</td> +<td align="right">14.4</td> +</tr> +<tr class="odd"> +<td align="right">17.4547957</td> +<td align="right">7.7</td> +</tr> +<tr class="even"> +<td align="right">17.4547957</td> +<td align="right">7.3</td> +</tr> +<tr class="odd"> +<td align="right">17.4547957</td> +<td align="right">8.1</td> +</tr> +<tr class="even"> +<td align="right">26.1821936</td> +<td align="right">2.0</td> +</tr> +<tr class="odd"> +<td align="right">26.1821936</td> +<td align="right">1.5</td> +</tr> +<tr class="even"> +<td align="right">26.1821936</td> +<td align="right">1.9</td> +</tr> +<tr class="odd"> +<td align="right">34.9095915</td> +<td align="right">1.3</td> +</tr> +<tr class="even"> +<td align="right">34.9095915</td> +<td align="right">1.0</td> +</tr> +<tr class="odd"> +<td align="right">34.9095915</td> +<td align="right">1.1</td> +</tr> +<tr class="even"> +<td align="right">43.6369893</td> +<td align="right">0.9</td> +</tr> +<tr class="odd"> +<td align="right">43.6369893</td> +<td align="right">0.7</td> +</tr> +<tr class="even"> +<td align="right">43.6369893</td> +<td align="right">0.7</td> +</tr> +<tr class="odd"> +<td align="right">52.3643872</td> +<td align="right">0.6</td> +</tr> +<tr class="even"> +<td align="right">52.3643872</td> +<td align="right">0.4</td> +</tr> +<tr class="odd"> +<td align="right">52.3643872</td> +<td align="right">0.5</td> +</tr> +<tr class="even"> +<td align="right">74.8062674</td> +<td align="right">0.4</td> +</tr> +<tr class="odd"> +<td align="right">74.8062674</td> +<td align="right">0.3</td> +</tr> +<tr class="even"> +<td align="right">74.8062674</td> +<td align="right">0.3</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset BBA 2.2</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">98.09</td> +</tr> +<tr class="even"> +<td align="right">0.0000000</td> +<td align="right">98.77</td> +</tr> +<tr class="odd"> +<td align="right">0.7678922</td> +<td align="right">93.52</td> +</tr> +<tr class="even"> +<td align="right">0.7678922</td> +<td align="right">92.03</td> +</tr> +<tr class="odd"> +<td align="right">2.3036765</td> +<td align="right">88.39</td> +</tr> +<tr class="even"> +<td align="right">2.3036765</td> +<td align="right">87.18</td> +</tr> +<tr class="odd"> +<td align="right">5.3752452</td> +<td align="right">69.38</td> +</tr> +<tr class="even"> +<td align="right">5.3752452</td> +<td align="right">71.06</td> +</tr> +<tr class="odd"> +<td align="right">10.7504904</td> +<td align="right">45.21</td> +</tr> +<tr class="even"> +<td align="right">10.7504904</td> +<td align="right">46.81</td> +</tr> +<tr class="odd"> +<td align="right">16.1257355</td> +<td align="right">30.54</td> +</tr> +<tr class="even"> +<td align="right">16.1257355</td> +<td align="right">30.07</td> +</tr> +<tr class="odd"> +<td align="right">21.5009807</td> +<td align="right">21.60</td> +</tr> +<tr class="even"> +<td align="right">21.5009807</td> +<td align="right">20.41</td> +</tr> +<tr class="odd"> +<td align="right">32.2514711</td> +<td align="right">9.10</td> +</tr> +<tr class="even"> +<td align="right">32.2514711</td> +<td align="right">9.70</td> +</tr> +<tr class="odd"> +<td align="right">43.0019614</td> +<td align="right">6.58</td> +</tr> +<tr class="even"> +<td align="right">43.0019614</td> +<td align="right">6.31</td> +</tr> +<tr class="odd"> +<td align="right">53.7524518</td> +<td align="right">3.47</td> +</tr> +<tr class="even"> +<td align="right">53.7524518</td> +<td align="right">3.52</td> +</tr> +<tr class="odd"> +<td align="right">64.5029421</td> +<td align="right">3.40</td> +</tr> +<tr class="even"> +<td align="right">64.5029421</td> +<td align="right">3.67</td> +</tr> +<tr class="odd"> +<td align="right">91.3791680</td> +<td align="right">1.62</td> +</tr> +<tr class="even"> +<td align="right">91.3791680</td> +<td align="right">1.62</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset BBA 2.3</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">99.33</td> +</tr> +<tr class="even"> +<td align="right">0.0000000</td> +<td align="right">97.44</td> +</tr> +<tr class="odd"> +<td align="right">0.6733938</td> +<td align="right">93.73</td> +</tr> +<tr class="even"> +<td align="right">0.6733938</td> +<td align="right">93.77</td> +</tr> +<tr class="odd"> +<td align="right">2.0201814</td> +<td align="right">87.84</td> +</tr> +<tr class="even"> +<td align="right">2.0201814</td> +<td align="right">89.82</td> +</tr> +<tr class="odd"> +<td align="right">4.7137565</td> +<td align="right">71.61</td> +</tr> +<tr class="even"> +<td align="right">4.7137565</td> +<td align="right">71.42</td> +</tr> +<tr class="odd"> +<td align="right">9.4275131</td> +<td align="right">45.60</td> +</tr> +<tr class="even"> +<td align="right">9.4275131</td> +<td align="right">45.42</td> +</tr> +<tr class="odd"> +<td align="right">14.1412696</td> +<td align="right">31.12</td> +</tr> +<tr class="even"> +<td align="right">14.1412696</td> +<td align="right">31.68</td> +</tr> +<tr class="odd"> +<td align="right">18.8550262</td> +<td align="right">23.20</td> +</tr> +<tr class="even"> +<td align="right">18.8550262</td> +<td align="right">24.13</td> +</tr> +<tr class="odd"> +<td align="right">28.2825393</td> +<td align="right">9.43</td> +</tr> +<tr class="even"> +<td align="right">28.2825393</td> +<td align="right">9.82</td> +</tr> +<tr class="odd"> +<td align="right">37.7100523</td> +<td align="right">7.08</td> +</tr> +<tr class="even"> +<td align="right">37.7100523</td> +<td align="right">8.64</td> +</tr> +<tr class="odd"> +<td align="right">47.1375654</td> +<td align="right">4.41</td> +</tr> +<tr class="even"> +<td align="right">47.1375654</td> +<td align="right">4.78</td> +</tr> +<tr class="odd"> +<td align="right">56.5650785</td> +<td align="right">4.92</td> +</tr> +<tr class="even"> +<td align="right">56.5650785</td> +<td align="right">5.08</td> +</tr> +<tr class="odd"> +<td align="right">80.1338612</td> +<td align="right">2.13</td> +</tr> +<tr class="even"> +<td align="right">80.1338612</td> +<td align="right">2.23</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Elliot</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">97.5</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">100.7</td> +</tr> +<tr class="odd"> +<td align="right">1.228478</td> +<td align="right">86.4</td> +</tr> +<tr class="even"> +<td align="right">1.228478</td> +<td align="right">88.5</td> +</tr> +<tr class="odd"> +<td align="right">3.685435</td> +<td align="right">69.8</td> +</tr> +<tr class="even"> +<td align="right">3.685435</td> +<td align="right">77.1</td> +</tr> +<tr class="odd"> +<td align="right">8.599349</td> +<td align="right">59.0</td> +</tr> +<tr class="even"> +<td align="right">8.599349</td> +<td align="right">54.2</td> +</tr> +<tr class="odd"> +<td align="right">17.198697</td> +<td align="right">31.3</td> +</tr> +<tr class="even"> +<td align="right">17.198697</td> +<td align="right">33.5</td> +</tr> +<tr class="odd"> +<td align="right">25.798046</td> +<td align="right">19.6</td> +</tr> +<tr class="even"> +<td align="right">25.798046</td> +<td align="right">20.9</td> +</tr> +<tr class="odd"> +<td align="right">34.397395</td> +<td align="right">13.3</td> +</tr> +<tr class="even"> +<td align="right">34.397395</td> +<td align="right">15.8</td> +</tr> +<tr class="odd"> +<td align="right">51.596092</td> +<td align="right">6.7</td> +</tr> +<tr class="even"> +<td align="right">51.596092</td> +<td align="right">8.7</td> +</tr> +<tr class="odd"> +<td align="right">68.794789</td> +<td align="right">8.8</td> +</tr> +<tr class="even"> +<td align="right">68.794789</td> +<td align="right">8.7</td> +</tr> +<tr class="odd"> +<td align="right">103.192184</td> +<td align="right">6.0</td> +</tr> +<tr class="even"> +<td align="right">103.192184</td> +<td align="right">4.4</td> +</tr> +<tr class="odd"> +<td align="right">146.188928</td> +<td align="right">3.3</td> +</tr> +<tr class="even"> +<td align="right">146.188928</td> +<td align="right">2.8</td> +</tr> +<tr class="odd"> +<td align="right">223.583066</td> +<td align="right">1.4</td> +</tr> +<tr class="even"> +<td align="right">223.583066</td> +<td align="right">1.8</td> +</tr> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">93.4</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">103.2</td> +</tr> +<tr class="odd"> +<td align="right">1.228478</td> +<td align="right">89.2</td> +</tr> +<tr class="even"> +<td align="right">1.228478</td> +<td align="right">86.6</td> +</tr> +<tr class="odd"> +<td align="right">3.685435</td> +<td align="right">78.2</td> +</tr> +<tr class="even"> +<td align="right">3.685435</td> +<td align="right">78.1</td> +</tr> +<tr class="odd"> +<td align="right">8.599349</td> +<td align="right">55.6</td> +</tr> +<tr class="even"> +<td align="right">8.599349</td> +<td align="right">53.0</td> +</tr> +<tr class="odd"> +<td align="right">17.198697</td> +<td align="right">33.7</td> +</tr> +<tr class="even"> +<td align="right">17.198697</td> +<td align="right">33.2</td> +</tr> +<tr class="odd"> +<td align="right">25.798046</td> +<td align="right">20.9</td> +</tr> +<tr class="even"> +<td align="right">25.798046</td> +<td align="right">19.9</td> +</tr> +<tr class="odd"> +<td align="right">34.397395</td> +<td align="right">18.2</td> +</tr> +<tr class="even"> +<td align="right">34.397395</td> +<td align="right">12.7</td> +</tr> +<tr class="odd"> +<td align="right">51.596092</td> +<td align="right">7.8</td> +</tr> +<tr class="even"> +<td align="right">51.596092</td> +<td align="right">9.0</td> +</tr> +<tr class="odd"> +<td align="right">68.794789</td> +<td align="right">11.4</td> +</tr> +<tr class="even"> +<td align="right">68.794789</td> +<td align="right">9.0</td> +</tr> +<tr class="odd"> +<td align="right">103.192184</td> +<td align="right">3.9</td> +</tr> +<tr class="even"> +<td align="right">103.192184</td> +<td align="right">4.4</td> +</tr> +<tr class="odd"> +<td align="right">146.188928</td> +<td align="right">2.6</td> +</tr> +<tr class="even"> +<td align="right">146.188928</td> +<td align="right">3.4</td> +</tr> +<tr class="odd"> +<td align="right">223.583066</td> +<td align="right">2.0</td> +</tr> +<tr class="even"> +<td align="right">223.583066</td> +<td align="right">1.7</td> +</tr> +</tbody> +</table> +</div> +<div class="section level2"> +<h2 id="separate-evaluations">Separate evaluations<a class="anchor" aria-label="anchor" href="#separate-evaluations"></a> +</h2> +<p>In order to obtain suitable starting parameters for the NLHM fits, +separate fits of the four models to the data for each soil are generated +using the <code>mmkin</code> function from the <code>mkin</code> +package. In a first step, constant variance is assumed. Convergence is +checked with the <code>status</code> function.</p> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">deg_mods</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span>, <span class="st">"HS"</span><span class="op">)</span></span> +<span><span class="va">f_sep_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span></span> +<span> <span class="va">deg_mods</span>,</span> +<span> <span class="va">dmta_ds</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"const"</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Calke</th> +<th align="left">Borstel</th> +<th align="left">Flaach</th> +<th align="left">BBA 2.2</th> +<th align="left">BBA 2.3</th> +<th align="left">Elliot</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>In the table above, OK indicates convergence, and C indicates failure +to converge. All separate fits with constant variance converged, with +the sole exception of the HS fit to the BBA 2.2 data. To prepare for +fitting NLHM using the two-component error model, the separate fits are +updated assuming two-component error.</p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_sep_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_sep_const</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_tc</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Calke</th> +<th align="left">Borstel</th> +<th align="left">Flaach</th> +<th align="left">BBA 2.2</th> +<th align="left">BBA 2.3</th> +<th align="left">Elliot</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>Using the two-component error model, the one fit that did not +converge with constant variance did converge, but other non-SFO fits +failed to converge.</p> +</div> +<div class="section level2"> +<h2 id="hierarchichal-model-fits">Hierarchichal model fits<a class="anchor" aria-label="anchor" href="#hierarchichal-model-fits"></a> +</h2> +<p>The following code fits eight versions of hierarchical models to the +data, using SFO, FOMC, DFOP and HS for the parent compound, and using +either constant variance or two-component error for the error model. The +default parameter distribution model in mkin allows for variation of all +degradation parameters across the assumed population of soils. In other +words, each degradation parameter is associated with a random effect as +a first step. The <code>mhmkin</code> function makes it possible to fit +all eight versions in parallel (given a sufficient number of computing +cores being available) to save execution time.</p> +<p>Convergence plots and summaries for these fits are shown in the +appendix.</p> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mhmkin.html">mhmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">f_sep_const</span>, <span class="va">f_sep_tc</span><span class="op">)</span>, transformations <span class="op">=</span> <span class="st">"saemix"</span><span class="op">)</span></span></code></pre></div> +<p>The output of the <code>status</code> function shows that all fits +terminated successfully.</p> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_saem</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>The AIC and BIC values show that the biphasic models DFOP and HS give +the best fits.</p> +<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO const</td> +<td align="right">5</td> +<td align="right">796.3</td> +<td align="right">795.3</td> +<td align="right">-393.2</td> +</tr> +<tr class="even"> +<td align="left">SFO tc</td> +<td align="right">6</td> +<td align="right">798.3</td> +<td align="right">797.1</td> +<td align="right">-393.2</td> +</tr> +<tr class="odd"> +<td align="left">FOMC const</td> +<td align="right">7</td> +<td align="right">734.2</td> +<td align="right">732.7</td> +<td align="right">-360.1</td> +</tr> +<tr class="even"> +<td align="left">FOMC tc</td> +<td align="right">8</td> +<td align="right">720.7</td> +<td align="right">719.1</td> +<td align="right">-352.4</td> +</tr> +<tr class="odd"> +<td align="left">DFOP const</td> +<td align="right">9</td> +<td align="right">711.8</td> +<td align="right">710.0</td> +<td align="right">-346.9</td> +</tr> +<tr class="even"> +<td align="left">HS const</td> +<td align="right">9</td> +<td align="right">714.0</td> +<td align="right">712.1</td> +<td align="right">-348.0</td> +</tr> +<tr class="odd"> +<td align="left">DFOP tc</td> +<td align="right">10</td> +<td align="right">665.7</td> +<td align="right">663.6</td> +<td align="right">-322.9</td> +</tr> +<tr class="even"> +<td align="left">HS tc</td> +<td align="right">10</td> +<td align="right">667.1</td> +<td align="right">665.0</td> +<td align="right">-323.6</td> +</tr> +</tbody> +</table> +<p>The DFOP model is preferred here, as it has a better mechanistic +basis for batch experiments with constant incubation conditions. Also, +it shows the lowest AIC and BIC values in the first set of fits when +combined with the two-component error model. Therefore, the DFOP model +was selected for further refinements of the fits with the aim to make +the model fully identifiable.</p> +<div class="section level3"> +<h3 id="parameter-identifiability-based-on-the-fisher-information-matrix">Parameter identifiability based on the Fisher Information +Matrix<a class="anchor" aria-label="anchor" href="#parameter-identifiability-based-on-the-fisher-information-matrix"></a> +</h3> +<p>Using the <code>illparms</code> function, ill-defined statistical +model parameters such as standard deviations of the degradation +parameters in the population and error model parameters can be +found.</p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left"></td> +<td align="left">b.1</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left"></td> +<td align="left">sd(DMTA_0)</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">sd(k2)</td> +<td align="left">sd(k2)</td> +</tr> +<tr class="even"> +<td align="left">HS</td> +<td align="left"></td> +<td align="left">sd(tb)</td> +</tr> +</tbody> +</table> +<p>According to the <code>illparms</code> function, the fitted standard +deviation of the second kinetic rate constant <code>k2</code> is +ill-defined in both DFOP fits. This suggests that different values would +be obtained for this standard deviation when using different starting +values.</p> +<p>The thus identified overparameterisation is addressed by removing the +random effect for <code>k2</code> from the parameter model.</p> +<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_dfop_tc_no_ranef_k2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem</span><span class="op">[[</span><span class="st">"DFOP"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="st">"k2"</span><span class="op">)</span></span></code></pre></div> +<p>For the resulting fit, it is checked whether there are still +ill-defined parameters,</p> +<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_dfop_tc_no_ranef_k2</span><span class="op">)</span></span></code></pre></div> +<p>which is not the case. Below, the refined model is compared with the +previous best model. The model without random effect for <code>k2</code> +is a reduced version of the previous model. Therefore, the models are +nested and can be compared using the likelihood ratio test. This is +achieved with the argument <code>test = TRUE</code> to the +<code>anova</code> function.</p> +<div class="sourceCode" id="cb12"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem</span><span class="op">[[</span><span class="st">"DFOP"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span>, <span class="va">f_saem_dfop_tc_no_ranef_k2</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span> <span class="op">|></span></span> +<span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>format.args <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">4</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<colgroup> +<col width="38%"> +<col width="7%"> +<col width="8%"> +<col width="8%"> +<col width="9%"> +<col width="8%"> +<col width="4%"> +<col width="15%"> +</colgroup> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +<th align="right">Chisq</th> +<th align="right">Df</th> +<th align="right">Pr(>Chisq)</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">f_saem_dfop_tc_no_ranef_k2</td> +<td align="right">9</td> +<td align="right">663.7</td> +<td align="right">661.8</td> +<td align="right">-322.9</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="left">f_saem[[“DFOP”, “tc”]]</td> +<td align="right">10</td> +<td align="right">665.7</td> +<td align="right">663.6</td> +<td align="right">-322.9</td> +<td align="right">0</td> +<td align="right">1</td> +<td align="right">1</td> +</tr> +</tbody> +</table> +<p>The AIC and BIC criteria are lower after removal of the ill-defined +random effect for <code>k2</code>. The p value of the likelihood ratio +test is much greater than 0.05, indicating that the model with the +higher likelihood (here the model with random effects for all +degradation parameters <code>f_saem[["DFOP", "tc"]]</code>) does not fit +significantly better than the model with the lower likelihood (the +reduced model <code>f_saem_dfop_tc_no_ranef_k2</code>).</p> +<p>Therefore, AIC, BIC and likelihood ratio test suggest the use of the +reduced model.</p> +<p>The convergence of the fit is checked visually.</p> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-dfop-tc-no-ranef-k2-1.png" alt="Convergence plot for the NLHM DFOP fit with two-component error and without a random effect on 'k2'" width="864"><p class="caption"> +Convergence plot for the NLHM DFOP fit with two-component error and +without a random effect on ‘k2’ +</p> +</div> +<p>All parameters appear to have converged to a satisfactory degree. The +final fit is plotted using the plot method from the mkin package.</p> +<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_dfop_tc_no_ranef_k2</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/plot-saem-dfop-tc-no-ranef-k2-1.png" alt="Plot of the final NLHM DFOP fit" width="864"><p class="caption"> +Plot of the final NLHM DFOP fit +</p> +</div> +<p>Finally, a summary report of the fit is produced.</p> +<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">f_saem_dfop_tc_no_ranef_k2</span><span class="op">)</span></span></code></pre></div> +<pre><code>saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:19 2025 +Date of summary: Fri Feb 14 08:13:19 2025 + +Equations: +d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 4.154 s +Using 300, 100 iterations and 9 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + DMTA_0 k1 k2 g +98.71186 0.08675 0.01374 0.93491 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 k1 k2 g +DMTA_0 98.71 0 0 0 +k1 0.00 1 0 0 +k2 0.00 0 1 0 +g 0.00 0 0 1 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 663.7 661.8 -322.9 + +Optimised parameters: + est. lower upper +DMTA_0 98.256267 96.286112 100.22642 +k1 0.064037 0.033281 0.09479 +k2 0.008469 0.006002 0.01094 +g 0.954167 0.914460 0.99387 +a.1 1.061795 0.878608 1.24498 +b.1 0.029550 0.022593 0.03651 +SD.DMTA_0 2.068581 0.427178 3.70998 +SD.k1 0.598285 0.258235 0.93833 +SD.g 1.016689 0.360061 1.67332 + +Correlation: + DMTA_0 k1 k2 +k1 0.0213 +k2 0.0541 0.0344 +g -0.0521 -0.0286 -0.2744 + +Random effects: + est. lower upper +SD.DMTA_0 2.0686 0.4272 3.7100 +SD.k1 0.5983 0.2582 0.9383 +SD.g 1.0167 0.3601 1.6733 + +Variance model: + est. lower upper +a.1 1.06180 0.87861 1.24498 +b.1 0.02955 0.02259 0.03651 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +DMTA 11.45 41.32 12.44 10.82 81.85</code></pre> +</div> +<div class="section level3"> +<h3 id="alternative-check-of-parameter-identifiability">Alternative check of parameter identifiability<a class="anchor" aria-label="anchor" href="#alternative-check-of-parameter-identifiability"></a> +</h3> +<p>The parameter check used in the <code>illparms</code> function is +based on a quadratic approximation of the likelihood surface near its +optimum, which is calculated using the Fisher Information Matrix (FIM). +An alternative way to check parameter identifiability <span class="citation">(Duchesne et al. 2021)</span> based on a multistart +approach has recently been implemented in mkin.</p> +<p>The graph below shows boxplots of the parameters obtained in 50 runs +of the saem algorithm with different parameter combinations, sampled +from the range of the parameters obtained for the individual datasets +fitted separately using nonlinear regression.</p> +<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_dfop_tc_multi</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/multistart.html">multistart</a></span><span class="op">(</span><span class="va">f_saem</span><span class="op">[[</span><span class="st">"DFOP"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span>, n <span class="op">=</span> <span class="fl">50</span>, cores <span class="op">=</span> <span class="fl">15</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb17"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></span><span class="op">(</span>mar <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">6.1</span>, <span class="fl">4.1</span>, <span class="fl">2.1</span>, <span class="fl">2.1</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/parplot.html">parplot</a></span><span class="op">(</span><span class="va">f_saem_dfop_tc_multi</span>, lpos <span class="op">=</span> <span class="st">"bottomright"</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.3</span>, <span class="fl">10</span><span class="op">)</span>, las <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/multistart-full-par-1.png" alt="Scaled parameters from the multistart runs, full model" width="960"><p class="caption"> +Scaled parameters from the multistart runs, full model +</p> +</div> +<p>The graph clearly confirms the lack of identifiability of the +variance of <code>k2</code> in the full model. The overparameterisation +of the model also indicates a lack of identifiability of the variance of +parameter <code>g</code>.</p> +<p>The parameter boxplots of the multistart runs with the reduced model +shown below indicate that all runs give similar results, regardless of +the starting parameters.</p> +<div class="sourceCode" id="cb18"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_dfop_tc_no_ranef_k2_multi</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/multistart.html">multistart</a></span><span class="op">(</span><span class="va">f_saem_dfop_tc_no_ranef_k2</span>,</span> +<span> n <span class="op">=</span> <span class="fl">50</span>, cores <span class="op">=</span> <span class="fl">15</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb19"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></span><span class="op">(</span>mar <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">6.1</span>, <span class="fl">4.1</span>, <span class="fl">2.1</span>, <span class="fl">2.1</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/parplot.html">parplot</a></span><span class="op">(</span><span class="va">f_saem_dfop_tc_no_ranef_k2_multi</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.5</span>, <span class="fl">2</span><span class="op">)</span>, las <span class="op">=</span> <span class="fl">2</span>,</span> +<span> lpos <span class="op">=</span> <span class="st">"bottomright"</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/multistart-reduced-par-1.png" alt="Scaled parameters from the multistart runs, reduced model" width="960"><p class="caption"> +Scaled parameters from the multistart runs, reduced model +</p> +</div> +<p>When only the parameters of the top 25% of the fits are shown (based +on a feature introduced in mkin 1.2.2 currently under development), the +scatter is even less as shown below.</p> +<div class="sourceCode" id="cb20"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></span><span class="op">(</span>mar <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">6.1</span>, <span class="fl">4.1</span>, <span class="fl">2.1</span>, <span class="fl">2.1</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/parplot.html">parplot</a></span><span class="op">(</span><span class="va">f_saem_dfop_tc_no_ranef_k2_multi</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.5</span>, <span class="fl">2</span><span class="op">)</span>, las <span class="op">=</span> <span class="fl">2</span>, llquant <span class="op">=</span> <span class="fl">0.25</span>,</span> +<span> lpos <span class="op">=</span> <span class="st">"bottomright"</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/multistart-reduced-par-llquant-1.png" alt="Scaled parameters from the multistart runs, reduced model, fits with the top 25\% likelihood values" width="960"><p class="caption"> +Scaled parameters from the multistart runs, reduced model, fits with the +top 25% likelihood values +</p> +</div> +</div> +</div> +<div class="section level2"> +<h2 id="conclusions">Conclusions<a class="anchor" aria-label="anchor" href="#conclusions"></a> +</h2> +<p>Fitting the four parent degradation models SFO, FOMC, DFOP and HS as +part of hierarchical model fits with two different error models and +normal distributions of the transformed degradation parameters works +without technical problems. The biphasic models DFOP and HS gave the +best fit to the data, but the default parameter distribution model was +not fully identifiable. Removing the random effect for the second +kinetic rate constant of the DFOP model resulted in a reduced model that +was fully identifiable and showed the lowest values for the model +selection criteria AIC and BIC. The reliability of the identification of +all model parameters was confirmed using multiple starting values.</p> +</div> +<div class="section level2"> +<h2 id="acknowledgements">Acknowledgements<a class="anchor" aria-label="anchor" href="#acknowledgements"></a> +</h2> +<p>The helpful comments by Janina Wöltjen of the German Environment +Agency are gratefully acknowledged.</p> +</div> +<div class="section level2"> +<h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a> +</h2> +<div id="refs" class="references csl-bib-body hanging-indent"> +<div id="ref-duchesne_2021" class="csl-entry"> +Duchesne, Ronan, Anissa Guillemin, Olivier Gandrillon, and Fabien +Crauste. 2021. <span>“Practical Identifiability in the Frame of +Nonlinear Mixed Effects Models: The Example of the in Vitro +Erythropoiesis.”</span> <em>BMC Bioinformatics</em> 22 (478). <a href="https://doi.org/10.1186/s12859-021-04373-4" class="external-link">https://doi.org/10.1186/s12859-021-04373-4</a>. +</div> +</div> +</div> +<div class="section level2"> +<h2 id="appendix">Appendix<a class="anchor" aria-label="anchor" href="#appendix"></a> +</h2> +<div class="section level3"> +<h3 id="hierarchical-model-fit-listings">Hierarchical model fit listings<a class="anchor" aria-label="anchor" href="#hierarchical-model-fit-listings"></a> +</h3> +<caption> +Hierarchical mkin fit of the SFO model with error model const +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:11 2025 +Date of summary: Fri Feb 14 08:14:22 2025 + +Equations: +d_DMTA/dt = - k_DMTA * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 0.869 s +Using 300, 100 iterations and 9 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + DMTA_0 k_DMTA +97.2953 0.0566 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 k_DMTA +DMTA_0 97.3 0 +k_DMTA 0.0 1 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 796.3 795.3 -393.2 + +Optimised parameters: + est. lower upper +DMTA_0 97.28130 95.71113 98.8515 +k_DMTA 0.05665 0.02909 0.0842 +a.1 2.66442 2.35579 2.9731 +SD.DMTA_0 1.54776 0.15447 2.9411 +SD.k_DMTA 0.60690 0.26248 0.9513 + +Correlation: + DMTA_0 +k_DMTA 0.0168 + +Random effects: + est. lower upper +SD.DMTA_0 1.5478 0.1545 2.9411 +SD.k_DMTA 0.6069 0.2625 0.9513 + +Variance model: + est. lower upper +a.1 2.664 2.356 2.973 + +Estimated disappearance times: + DT50 DT90 +DMTA 12.24 40.65 + +</code></pre> +<p></p> +<caption> +Hierarchical mkin fit of the SFO model with error model tc +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:13 2025 +Date of summary: Fri Feb 14 08:14:22 2025 + +Equations: +d_DMTA/dt = - k_DMTA * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 2.423 s +Using 300, 100 iterations and 9 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + DMTA_0 k_DMTA +96.99175 0.05603 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 k_DMTA +DMTA_0 96.99 0 +k_DMTA 0.00 1 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 798.3 797.1 -393.2 + +Optimised parameters: + est. lower upper +DMTA_0 97.271822 95.70316 98.84049 +k_DMTA 0.056638 0.02911 0.08417 +a.1 2.660081 2.27492 3.04525 +b.1 0.001665 -0.14451 0.14784 +SD.DMTA_0 1.545520 0.14301 2.94803 +SD.k_DMTA 0.606422 0.26227 0.95057 + +Correlation: + DMTA_0 +k_DMTA 0.0169 + +Random effects: + est. lower upper +SD.DMTA_0 1.5455 0.1430 2.9480 +SD.k_DMTA 0.6064 0.2623 0.9506 + +Variance model: + est. lower upper +a.1 2.660081 2.2749 3.0452 +b.1 0.001665 -0.1445 0.1478 + +Estimated disappearance times: + DT50 DT90 +DMTA 12.24 40.65 + +</code></pre> +<p></p> +<caption> +Hierarchical mkin fit of the FOMC model with error model const +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:11 2025 +Date of summary: Fri Feb 14 08:14:22 2025 + +Equations: +d_DMTA/dt = - (alpha/beta) * 1/((time/beta) + 1) * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 1.228 s +Using 300, 100 iterations and 9 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + DMTA_0 alpha beta + 98.292 9.909 156.341 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 alpha beta +DMTA_0 98.29 0 0 +alpha 0.00 1 0 +beta 0.00 0 1 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 734.2 732.7 -360.1 + +Optimised parameters: + est. lower upper +DMTA_0 98.3435 96.9033 99.784 +alpha 7.2007 2.5889 11.812 +beta 112.8745 34.8816 190.867 +a.1 2.0459 1.8054 2.286 +SD.DMTA_0 1.4795 0.2717 2.687 +SD.alpha 0.6396 0.1509 1.128 +SD.beta 0.6874 0.1587 1.216 + +Correlation: + DMTA_0 alpha +alpha -0.1125 +beta -0.1227 0.3632 + +Random effects: + est. lower upper +SD.DMTA_0 1.4795 0.2717 2.687 +SD.alpha 0.6396 0.1509 1.128 +SD.beta 0.6874 0.1587 1.216 + +Variance model: + est. lower upper +a.1 2.046 1.805 2.286 + +Estimated disappearance times: + DT50 DT90 DT50back +DMTA 11.41 42.53 12.8 + +</code></pre> +<p></p> +<caption> +Hierarchical mkin fit of the FOMC model with error model tc +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:13 2025 +Date of summary: Fri Feb 14 08:14:22 2025 + +Equations: +d_DMTA/dt = - (alpha/beta) * 1/((time/beta) + 1) * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 2.87 s +Using 300, 100 iterations and 9 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: +DMTA_0 alpha beta +98.772 4.663 92.597 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 alpha beta +DMTA_0 98.77 0 0 +alpha 0.00 1 0 +beta 0.00 0 1 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 720.7 719.1 -352.4 + +Optimised parameters: + est. lower upper +DMTA_0 99.10577 97.33296 100.87859 +alpha 5.46260 2.52199 8.40321 +beta 81.66080 30.46664 132.85497 +a.1 1.50219 1.25801 1.74636 +b.1 0.02893 0.02048 0.03739 +SD.DMTA_0 1.61887 -0.03843 3.27618 +SD.alpha 0.58145 0.17364 0.98925 +SD.beta 0.68205 0.21108 1.15302 + +Correlation: + DMTA_0 alpha +alpha -0.1321 +beta -0.1430 0.2467 + +Random effects: + est. lower upper +SD.DMTA_0 1.6189 -0.03843 3.2762 +SD.alpha 0.5814 0.17364 0.9892 +SD.beta 0.6821 0.21108 1.1530 + +Variance model: + est. lower upper +a.1 1.50219 1.25801 1.74636 +b.1 0.02893 0.02048 0.03739 + +Estimated disappearance times: + DT50 DT90 DT50back +DMTA 11.05 42.81 12.89 + +</code></pre> +<p></p> +<caption> +Hierarchical mkin fit of the DFOP model with error model const +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:12 2025 +Date of summary: Fri Feb 14 08:14:22 2025 + +Equations: +d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 1.843 s +Using 300, 100 iterations and 9 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + DMTA_0 k1 k2 g +98.64383 0.09211 0.02999 0.76814 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 k1 k2 g +DMTA_0 98.64 0 0 0 +k1 0.00 1 0 0 +k2 0.00 0 1 0 +g 0.00 0 0 1 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 711.8 710 -346.9 + +Optimised parameters: + est. lower upper +DMTA_0 98.092481 96.573899 99.61106 +k1 0.062499 0.030336 0.09466 +k2 0.009065 -0.005133 0.02326 +g 0.948967 0.862080 1.03586 +a.1 1.821671 1.604774 2.03857 +SD.DMTA_0 1.677785 0.472066 2.88350 +SD.k1 0.634962 0.270788 0.99914 +SD.k2 1.033498 -0.205994 2.27299 +SD.g 1.710046 0.428642 2.99145 + +Correlation: + DMTA_0 k1 k2 +k1 0.0246 +k2 0.0491 0.0953 +g -0.0552 -0.0889 -0.4795 + +Random effects: + est. lower upper +SD.DMTA_0 1.678 0.4721 2.8835 +SD.k1 0.635 0.2708 0.9991 +SD.k2 1.033 -0.2060 2.2730 +SD.g 1.710 0.4286 2.9914 + +Variance model: + est. lower upper +a.1 1.822 1.605 2.039 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +DMTA 11.79 42.8 12.88 11.09 76.46 + +</code></pre> +<p></p> +<caption> +Hierarchical mkin fit of the DFOP model with error model tc +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:14 2025 +Date of summary: Fri Feb 14 08:14:22 2025 + +Equations: +d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 3.469 s +Using 300, 100 iterations and 9 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + DMTA_0 k1 k2 g +98.71186 0.08675 0.01374 0.93491 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 k1 k2 g +DMTA_0 98.71 0 0 0 +k1 0.00 1 0 0 +k2 0.00 0 1 0 +g 0.00 0 0 1 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 665.7 663.6 -322.9 + +Optimised parameters: + est. lower upper +DMTA_0 98.347470 96.380815 100.31413 +k1 0.064524 0.034279 0.09477 +k2 0.008304 0.005843 0.01076 +g 0.952128 0.909578 0.99468 +a.1 1.068907 0.883665 1.25415 +b.1 0.029265 0.022318 0.03621 +SD.DMTA_0 2.065796 0.427951 3.70364 +SD.k1 0.583703 0.251796 0.91561 +SD.k2 0.004167 -7.831228 7.83956 +SD.g 1.064450 0.397479 1.73142 + +Correlation: + DMTA_0 k1 k2 +k1 0.0223 +k2 0.0568 0.0394 +g -0.0464 -0.0269 -0.2713 + +Random effects: + est. lower upper +SD.DMTA_0 2.065796 0.4280 3.7036 +SD.k1 0.583703 0.2518 0.9156 +SD.k2 0.004167 -7.8312 7.8396 +SD.g 1.064450 0.3975 1.7314 + +Variance model: + est. lower upper +a.1 1.06891 0.88367 1.25415 +b.1 0.02927 0.02232 0.03621 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +DMTA 11.39 41.36 12.45 10.74 83.48 + +</code></pre> +<p></p> +<caption> +Hierarchical mkin fit of the HS model with error model const +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:12 2025 +Date of summary: Fri Feb 14 08:14:22 2025 + +Equations: +d_DMTA/dt = - ifelse(time <= tb, k1, k2) * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 1.698 s +Using 300, 100 iterations and 9 chains + +Variance model: Constant variance + +Starting values for degradation parameters: + DMTA_0 k1 k2 tb +97.82176 0.06931 0.02997 11.13945 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 k1 k2 tb +DMTA_0 97.82 0 0 0 +k1 0.00 1 0 0 +k2 0.00 0 1 0 +tb 0.00 0 0 1 + +Starting values for error model parameters: +a.1 + 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 714 712.1 -348 + +Optimised parameters: + est. lower upper +DMTA_0 98.16102 96.47747 99.84456 +k1 0.07876 0.05261 0.10491 +k2 0.02227 0.01706 0.02747 +tb 13.99089 -7.40049 35.38228 +a.1 1.82305 1.60700 2.03910 +SD.DMTA_0 1.88413 0.56204 3.20622 +SD.k1 0.34292 0.10482 0.58102 +SD.k2 0.19851 0.01718 0.37985 +SD.tb 1.68168 0.58064 2.78272 + +Correlation: + DMTA_0 k1 k2 +k1 0.0142 +k2 0.0001 -0.0025 +tb 0.0165 -0.1256 -0.0301 + +Random effects: + est. lower upper +SD.DMTA_0 1.8841 0.56204 3.2062 +SD.k1 0.3429 0.10482 0.5810 +SD.k2 0.1985 0.01718 0.3798 +SD.tb 1.6817 0.58064 2.7827 + +Variance model: + est. lower upper +a.1 1.823 1.607 2.039 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +DMTA 8.801 67.91 20.44 8.801 31.13 + +</code></pre> +<p></p> +<caption> +Hierarchical mkin fit of the HS model with error model tc +</caption> +<pre><code> +saemix version used for fitting: 3.3 +mkin version used for pre-fitting: 1.2.10 +R version used for fitting: 4.4.2 +Date of fit: Fri Feb 14 08:13:13 2025 +Date of summary: Fri Feb 14 08:14:22 2025 + +Equations: +d_DMTA/dt = - ifelse(time <= tb, k1, k2) * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Model predictions using solution type analytical + +Fitted in 3.307 s +Using 300, 100 iterations and 9 chains + +Variance model: Two-component variance function + +Starting values for degradation parameters: + DMTA_0 k1 k2 tb +98.45190 0.07525 0.02576 19.19375 + +Fixed degradation parameter values: +None + +Starting values for random effects (square root of initial entries in omega): + DMTA_0 k1 k2 tb +DMTA_0 98.45 0 0 0 +k1 0.00 1 0 0 +k2 0.00 0 1 0 +tb 0.00 0 0 1 + +Starting values for error model parameters: +a.1 b.1 + 1 1 + +Results: + +Likelihood computed by importance sampling + AIC BIC logLik + 667.1 665 -323.6 + +Optimised parameters: + est. lower upper +DMTA_0 97.76571 95.81350 99.71791 +k1 0.05855 0.03080 0.08630 +k2 0.02337 0.01664 0.03010 +tb 31.09638 29.38289 32.80987 +a.1 1.08835 0.90059 1.27611 +b.1 0.02964 0.02261 0.03667 +SD.DMTA_0 2.04877 0.42553 3.67200 +SD.k1 0.59166 0.25621 0.92711 +SD.k2 0.30698 0.09561 0.51835 +SD.tb 0.01274 -0.10915 0.13464 + +Correlation: + DMTA_0 k1 k2 +k1 0.0160 +k2 -0.0070 -0.0024 +tb -0.0668 -0.0103 -0.2013 + +Random effects: + est. lower upper +SD.DMTA_0 2.04877 0.42553 3.6720 +SD.k1 0.59166 0.25621 0.9271 +SD.k2 0.30698 0.09561 0.5183 +SD.tb 0.01274 -0.10915 0.1346 + +Variance model: + est. lower upper +a.1 1.08835 0.90059 1.27611 +b.1 0.02964 0.02261 0.03667 + +Estimated disappearance times: + DT50 DT90 DT50back DT50_k1 DT50_k2 +DMTA 11.84 51.71 15.57 11.84 29.66 + +</code></pre> +<p></p> +</div> +<div class="section level3"> +<h3 id="hierarchical-model-convergence-plots">Hierarchical model convergence plots<a class="anchor" aria-label="anchor" href="#hierarchical-model-convergence-plots"></a> +</h3> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-sfo-const-1.png" alt="Convergence plot for the NLHM SFO fit with constant variance" width="864"><p class="caption"> +Convergence plot for the NLHM SFO fit with constant variance +</p> +</div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-sfo-tc-1.png" alt="Convergence plot for the NLHM SFO fit with two-component error" width="864"><p class="caption"> +Convergence plot for the NLHM SFO fit with two-component error +</p> +</div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-fomc-const-1.png" alt="Convergence plot for the NLHM FOMC fit with constant variance" width="864"><p class="caption"> +Convergence plot for the NLHM FOMC fit with constant variance +</p> +</div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-fomc-tc-1.png" alt="Convergence plot for the NLHM FOMC fit with two-component error" width="864"><p class="caption"> +Convergence plot for the NLHM FOMC fit with two-component error +</p> +</div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-dfop-const-1.png" alt="Convergence plot for the NLHM DFOP fit with constant variance" width="864"><p class="caption"> +Convergence plot for the NLHM DFOP fit with constant variance +</p> +</div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-dfop-tc-1.png" alt="Convergence plot for the NLHM DFOP fit with two-component error" width="864"><p class="caption"> +Convergence plot for the NLHM DFOP fit with two-component error +</p> +</div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-hs-const-1.png" alt="Convergence plot for the NLHM HS fit with constant variance" width="864"><p class="caption"> +Convergence plot for the NLHM HS fit with constant variance +</p> +</div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_parent_files/figure-html/convergence-saem-hs-tc-1.png" alt="Convergence plot for the NLHM HS fit with two-component error" width="864"><p class="caption"> +Convergence plot for the NLHM HS fit with two-component error +</p> +</div> +</div> +<div class="section level3"> +<h3 id="session-info">Session info<a class="anchor" aria-label="anchor" href="#session-info"></a> +</h3> +<pre><code>R version 4.4.2 (2024-10-31) +Platform: x86_64-pc-linux-gnu +Running under: Debian GNU/Linux 12 (bookworm) + +Matrix products: default +BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 +LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 + +locale: + [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C + [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8 + [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 + [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C + [9] LC_ADDRESS=C LC_TELEPHONE=C +[11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C + +time zone: Europe/Berlin +tzcode source: system (glibc) + +attached base packages: +[1] parallel stats graphics grDevices utils datasets methods +[8] base + +other attached packages: +[1] rmarkdown_2.29 nvimcom_0.9-167 saemix_3.3 npde_3.5 +[5] knitr_1.49 mkin_1.2.10 + +loaded via a namespace (and not attached): + [1] gtable_0.3.6 jsonlite_1.8.9 dplyr_1.1.4 compiler_4.4.2 + [5] tidyselect_1.2.1 gridExtra_2.3 jquerylib_0.1.4 systemfonts_1.1.0 + [9] scales_1.3.0 textshaping_0.4.1 yaml_2.3.10 fastmap_1.2.0 +[13] lattice_0.22-6 ggplot2_3.5.1 R6_2.5.1 generics_0.1.3 +[17] lmtest_0.9-40 MASS_7.3-61 htmlwidgets_1.6.4 tibble_3.2.1 +[21] desc_1.4.3 munsell_0.5.1 bslib_0.8.0 pillar_1.9.0 +[25] rlang_1.1.4 utf8_1.2.4 cachem_1.1.0 xfun_0.49 +[29] fs_1.6.5 sass_0.4.9 cli_3.6.3 pkgdown_2.1.1 +[33] magrittr_2.0.3 digest_0.6.37 grid_4.4.2 mclust_6.1.1 +[37] lifecycle_1.0.4 nlme_3.1-166 vctrs_0.6.5 evaluate_1.0.1 +[41] glue_1.8.0 codetools_0.2-20 ragg_1.3.3 zoo_1.8-12 +[45] fansi_1.0.6 colorspace_2.1-1 pkgconfig_2.0.3 tools_4.4.2 +[49] htmltools_0.5.8.1</code></pre> +</div> +<div class="section level3"> +<h3 id="hardware-info">Hardware info<a class="anchor" aria-label="anchor" href="#hardware-info"></a> +</h3> +<pre><code>CPU model: AMD Ryzen 9 7950X 16-Core Processor</code></pre> +<pre><code>MemTotal: 64927788 kB</code></pre> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-const-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-const-1.png Binary files differnew file mode 100644 index 00000000..91c027a5 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-const-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-tc-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-tc-1.png Binary files differnew file mode 100644 index 00000000..678b76e2 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-tc-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-tc-no-ranef-k2-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-tc-no-ranef-k2-1.png Binary files differnew file mode 100644 index 00000000..a3bc320e --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-dfop-tc-no-ranef-k2-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-fomc-const-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-fomc-const-1.png Binary files differnew file mode 100644 index 00000000..da63e191 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-fomc-const-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-fomc-tc-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-fomc-tc-1.png Binary files differnew file mode 100644 index 00000000..00958654 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-fomc-tc-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-hs-const-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-hs-const-1.png Binary files differnew file mode 100644 index 00000000..72a996ac --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-hs-const-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-hs-tc-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-hs-tc-1.png Binary files differnew file mode 100644 index 00000000..46cfa3f8 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-hs-tc-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-sfo-const-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-sfo-const-1.png Binary files differnew file mode 100644 index 00000000..6dc7a6e2 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-sfo-const-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-sfo-tc-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-sfo-tc-1.png Binary files differnew file mode 100644 index 00000000..8df26d78 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/convergence-saem-sfo-tc-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-full-par-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-full-par-1.png Binary files differnew file mode 100644 index 00000000..f90b19e7 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-full-par-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-reduced-par-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-reduced-par-1.png Binary files differnew file mode 100644 index 00000000..f6f1e43d --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-reduced-par-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-reduced-par-llquant-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-reduced-par-llquant-1.png Binary files differnew file mode 100644 index 00000000..ef6bc8bd --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/multistart-reduced-par-llquant-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/plot-saem-dfop-tc-no-ranef-k2-1.png b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/plot-saem-dfop-tc-no-ranef-k2-1.png Binary files differnew file mode 100644 index 00000000..cd506f57 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_parent_files/figure-html/plot-saem-dfop-tc-no-ranef-k2-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_pathway.html b/docs/dev/articles/prebuilt/2022_dmta_pathway.html new file mode 100644 index 00000000..92440f1f --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_pathway.html @@ -0,0 +1,2002 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change on 20 April 2023, +last compiled on 14 Februar 2025</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/prebuilt/2022_dmta_pathway.rmd" class="external-link"><code>vignettes/prebuilt/2022_dmta_pathway.rmd</code></a></small> + <div class="d-none name"><code>2022_dmta_pathway.rmd</code></div> + </div> + + + +<div class="section level2"> +<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a> +</h2> +<p>The purpose of this document is to test demonstrate how nonlinear +hierarchical models (NLHM) based on the parent degradation models SFO, +FOMC, DFOP and HS, with parallel formation of two or more metabolites +can be fitted with the mkin package.</p> +<p>It was assembled in the course of work package 1.2 of Project Number +173340 (Application of nonlinear hierarchical models to the kinetic +evaluation of chemical degradation data) of the German Environment +Agency carried out in 2022 and 2023.</p> +<p>The mkin package is used in version 1.2.10, which is currently under +development. It contains the test data, and the functions used in the +evaluations. The <code>saemix</code> package is used as a backend for +fitting the NLHM, but is also loaded to make the convergence plot +function available.</p> +<p>This document is processed with the <code>knitr</code> package, which +also provides the <code>kable</code> function that is used to improve +the display of tabular data in R markdown documents. For parallel +processing, the <code>parallel</code> package is used.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://yihui.org/knitr/" class="external-link">knitr</a></span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">saemix</span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">parallel</span><span class="op">)</span></span> +<span><span class="va">n_cores</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># We need to start a new cluster after defining a compiled model that is</span></span> +<span><span class="co"># saved as a DLL to the user directory, therefore we define a function</span></span> +<span><span class="co"># This is used again after defining the pathway model</span></span> +<span><span class="va">start_cluster</span> <span class="op"><-</span> <span class="kw">function</span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.info.html" class="external-link">Sys.info</a></span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="st">"sysname"</span><span class="op">]</span> <span class="op">==</span> <span class="st">"Windows"</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">ret</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makePSOCKcluster</a></span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span> <span class="op">}</span> <span class="kw">else</span> <span class="op">{</span></span> +<span> <span class="va">ret</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makeForkCluster</a></span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span> <span class="op">}</span></span> +<span> <span class="kw"><a href="https://rdrr.io/r/base/function.html" class="external-link">return</a></span><span class="op">(</span><span class="va">ret</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="data">Data<a class="anchor" aria-label="anchor" href="#data"></a> +</h2> +<p>The test data are available in the mkin package as an object of class +<code>mkindsg</code> (mkin dataset group) under the identifier +<code>dimethenamid_2018</code>. The following preprocessing steps are +done in this document.</p> +<ul> +<li>The data available for the enantiomer dimethenamid-P (DMTAP) are +renamed to have the same substance name as the data for the racemic +mixture dimethenamid (DMTA). The reason for this is that no difference +between their degradation behaviour was identified in the EU risk +assessment.</li> +<li>Unnecessary columns are discarded</li> +<li>The observation times of each dataset are multiplied with the +corresponding normalisation factor also available in the dataset, in +order to make it possible to describe all datasets with a single set of +parameters that are independent of temperature</li> +<li>Finally, datasets observed in the same soil (<code>Elliot 1</code> +and <code>Elliot 2</code>) are combined, resulting in dimethenamid +(DMTA) data from six soils.</li> +</ul> +<p>The following commented R code performs this preprocessing.</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="co"># Apply a function to each of the seven datasets in the mkindsg object to create a list</span></span> +<span><span class="va">dmta_ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">7</span>, <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span><span class="op">[[</span><span class="va">i</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span> <span class="co"># Get a dataset</span></span> +<span> <span class="va">ds_i</span><span class="op">[</span><span class="va">ds_i</span><span class="op">$</span><span class="va">name</span> <span class="op">==</span> <span class="st">"DMTAP"</span>, <span class="st">"name"</span><span class="op">]</span> <span class="op"><-</span> <span class="st">"DMTA"</span> <span class="co"># Rename DMTAP to DMTA</span></span> +<span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">ds_i</span>, select <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"name"</span>, <span class="st">"time"</span>, <span class="st">"value"</span><span class="op">)</span><span class="op">)</span> <span class="co"># Select data</span></span> +<span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op">*</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">f_time_norm</span><span class="op">[</span><span class="va">i</span><span class="op">]</span> <span class="co"># Normalise time</span></span> +<span> <span class="va">ds_i</span> <span class="co"># Return the dataset</span></span> +<span><span class="op">}</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># Use dataset titles as names for the list elements</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="va">ds</span><span class="op">$</span><span class="va">title</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># Combine data for Elliot soil to obtain a named list with six elements</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span>, <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span> <span class="co">#</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span></code></pre></div> +<p>The following tables show the 6 datasets.</p> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">for</span> <span class="op">(</span><span class="va">ds_name</span> <span class="kw">in</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span></span> +<span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="fu"><a href="../../reference/mkin_long_to_wide.html">mkin_long_to_wide</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="va">ds_name</span><span class="op">]</span><span class="op">]</span><span class="op">)</span>,</span> +<span> caption <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Dataset"</span>, <span class="va">ds_name</span><span class="op">)</span>,</span> +<span> booktabs <span class="op">=</span> <span class="cn">TRUE</span>, row.names <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">)</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/cat.html" class="external-link">cat</a></span><span class="op">(</span><span class="st">"\n\\clearpage\n"</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +<table class="table"> +<caption>Dataset Calke</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +<th align="right">M23</th> +<th align="right">M27</th> +<th align="right">M31</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0</td> +<td align="right">95.8</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0</td> +<td align="right">98.7</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">14</td> +<td align="right">60.5</td> +<td align="right">4.1</td> +<td align="right">1.5</td> +<td align="right">2.0</td> +</tr> +<tr class="even"> +<td align="right">30</td> +<td align="right">39.1</td> +<td align="right">5.3</td> +<td align="right">2.4</td> +<td align="right">2.1</td> +</tr> +<tr class="odd"> +<td align="right">59</td> +<td align="right">15.2</td> +<td align="right">6.0</td> +<td align="right">3.2</td> +<td align="right">2.2</td> +</tr> +<tr class="even"> +<td align="right">120</td> +<td align="right">4.8</td> +<td align="right">4.3</td> +<td align="right">3.8</td> +<td align="right">1.8</td> +</tr> +<tr class="odd"> +<td align="right">120</td> +<td align="right">4.6</td> +<td align="right">4.1</td> +<td align="right">3.7</td> +<td align="right">2.1</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Borstel</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +<th align="right">M23</th> +<th align="right">M27</th> +<th align="right">M31</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">100.5</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">99.6</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">1.941295</td> +<td align="right">91.9</td> +<td align="right">0.4</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">1.941295</td> +<td align="right">91.3</td> +<td align="right">0.5</td> +<td align="right">0.3</td> +<td align="right">0.1</td> +</tr> +<tr class="odd"> +<td align="right">6.794534</td> +<td align="right">81.8</td> +<td align="right">1.2</td> +<td align="right">0.8</td> +<td align="right">1.0</td> +</tr> +<tr class="even"> +<td align="right">6.794534</td> +<td align="right">82.1</td> +<td align="right">1.3</td> +<td align="right">0.9</td> +<td align="right">0.9</td> +</tr> +<tr class="odd"> +<td align="right">13.589067</td> +<td align="right">69.1</td> +<td align="right">2.8</td> +<td align="right">1.4</td> +<td align="right">2.0</td> +</tr> +<tr class="even"> +<td align="right">13.589067</td> +<td align="right">68.0</td> +<td align="right">2.0</td> +<td align="right">1.4</td> +<td align="right">2.5</td> +</tr> +<tr class="odd"> +<td align="right">27.178135</td> +<td align="right">51.4</td> +<td align="right">2.9</td> +<td align="right">2.7</td> +<td align="right">4.3</td> +</tr> +<tr class="even"> +<td align="right">27.178135</td> +<td align="right">51.4</td> +<td align="right">4.9</td> +<td align="right">2.6</td> +<td align="right">3.2</td> +</tr> +<tr class="odd"> +<td align="right">56.297565</td> +<td align="right">27.6</td> +<td align="right">12.2</td> +<td align="right">4.4</td> +<td align="right">4.3</td> +</tr> +<tr class="even"> +<td align="right">56.297565</td> +<td align="right">26.8</td> +<td align="right">12.2</td> +<td align="right">4.7</td> +<td align="right">4.8</td> +</tr> +<tr class="odd"> +<td align="right">86.387643</td> +<td align="right">15.7</td> +<td align="right">12.2</td> +<td align="right">5.4</td> +<td align="right">5.0</td> +</tr> +<tr class="even"> +<td align="right">86.387643</td> +<td align="right">15.3</td> +<td align="right">12.0</td> +<td align="right">5.2</td> +<td align="right">5.1</td> +</tr> +<tr class="odd"> +<td align="right">115.507073</td> +<td align="right">7.9</td> +<td align="right">10.4</td> +<td align="right">5.4</td> +<td align="right">4.3</td> +</tr> +<tr class="even"> +<td align="right">115.507073</td> +<td align="right">8.1</td> +<td align="right">11.6</td> +<td align="right">5.4</td> +<td align="right">4.4</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Flaach</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +<th align="right">M23</th> +<th align="right">M27</th> +<th align="right">M31</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">96.5</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0.0000000</td> +<td align="right">96.8</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">97.0</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0.6233856</td> +<td align="right">82.9</td> +<td align="right">0.7</td> +<td align="right">1.1</td> +<td align="right">0.3</td> +</tr> +<tr class="odd"> +<td align="right">0.6233856</td> +<td align="right">86.7</td> +<td align="right">0.7</td> +<td align="right">1.1</td> +<td align="right">0.3</td> +</tr> +<tr class="even"> +<td align="right">0.6233856</td> +<td align="right">87.4</td> +<td align="right">0.2</td> +<td align="right">0.3</td> +<td align="right">0.1</td> +</tr> +<tr class="odd"> +<td align="right">1.8701567</td> +<td align="right">72.8</td> +<td align="right">2.2</td> +<td align="right">2.6</td> +<td align="right">0.7</td> +</tr> +<tr class="even"> +<td align="right">1.8701567</td> +<td align="right">69.9</td> +<td align="right">1.8</td> +<td align="right">2.4</td> +<td align="right">0.6</td> +</tr> +<tr class="odd"> +<td align="right">1.8701567</td> +<td align="right">71.9</td> +<td align="right">1.6</td> +<td align="right">2.3</td> +<td align="right">0.7</td> +</tr> +<tr class="even"> +<td align="right">4.3636989</td> +<td align="right">51.4</td> +<td align="right">4.1</td> +<td align="right">5.0</td> +<td align="right">1.3</td> +</tr> +<tr class="odd"> +<td align="right">4.3636989</td> +<td align="right">52.9</td> +<td align="right">4.2</td> +<td align="right">5.9</td> +<td align="right">1.2</td> +</tr> +<tr class="even"> +<td align="right">4.3636989</td> +<td align="right">48.6</td> +<td align="right">4.2</td> +<td align="right">4.8</td> +<td align="right">1.4</td> +</tr> +<tr class="odd"> +<td align="right">8.7273979</td> +<td align="right">28.5</td> +<td align="right">7.5</td> +<td align="right">8.5</td> +<td align="right">2.4</td> +</tr> +<tr class="even"> +<td align="right">8.7273979</td> +<td align="right">27.3</td> +<td align="right">7.1</td> +<td align="right">8.5</td> +<td align="right">2.1</td> +</tr> +<tr class="odd"> +<td align="right">8.7273979</td> +<td align="right">27.5</td> +<td align="right">7.5</td> +<td align="right">8.3</td> +<td align="right">2.3</td> +</tr> +<tr class="even"> +<td align="right">13.0910968</td> +<td align="right">14.8</td> +<td align="right">8.4</td> +<td align="right">9.3</td> +<td align="right">3.3</td> +</tr> +<tr class="odd"> +<td align="right">13.0910968</td> +<td align="right">13.4</td> +<td align="right">6.8</td> +<td align="right">8.7</td> +<td align="right">2.4</td> +</tr> +<tr class="even"> +<td align="right">13.0910968</td> +<td align="right">14.4</td> +<td align="right">8.0</td> +<td align="right">9.1</td> +<td align="right">2.6</td> +</tr> +<tr class="odd"> +<td align="right">17.4547957</td> +<td align="right">7.7</td> +<td align="right">7.2</td> +<td align="right">8.6</td> +<td align="right">4.0</td> +</tr> +<tr class="even"> +<td align="right">17.4547957</td> +<td align="right">7.3</td> +<td align="right">7.2</td> +<td align="right">8.5</td> +<td align="right">3.6</td> +</tr> +<tr class="odd"> +<td align="right">17.4547957</td> +<td align="right">8.1</td> +<td align="right">6.9</td> +<td align="right">8.9</td> +<td align="right">3.3</td> +</tr> +<tr class="even"> +<td align="right">26.1821936</td> +<td align="right">2.0</td> +<td align="right">4.9</td> +<td align="right">8.1</td> +<td align="right">2.1</td> +</tr> +<tr class="odd"> +<td align="right">26.1821936</td> +<td align="right">1.5</td> +<td align="right">4.3</td> +<td align="right">7.7</td> +<td align="right">1.7</td> +</tr> +<tr class="even"> +<td align="right">26.1821936</td> +<td align="right">1.9</td> +<td align="right">4.5</td> +<td align="right">7.4</td> +<td align="right">1.8</td> +</tr> +<tr class="odd"> +<td align="right">34.9095915</td> +<td align="right">1.3</td> +<td align="right">3.8</td> +<td align="right">5.9</td> +<td align="right">1.6</td> +</tr> +<tr class="even"> +<td align="right">34.9095915</td> +<td align="right">1.0</td> +<td align="right">3.1</td> +<td align="right">6.0</td> +<td align="right">1.6</td> +</tr> +<tr class="odd"> +<td align="right">34.9095915</td> +<td align="right">1.1</td> +<td align="right">3.1</td> +<td align="right">5.9</td> +<td align="right">1.4</td> +</tr> +<tr class="even"> +<td align="right">43.6369893</td> +<td align="right">0.9</td> +<td align="right">2.7</td> +<td align="right">5.6</td> +<td align="right">1.8</td> +</tr> +<tr class="odd"> +<td align="right">43.6369893</td> +<td align="right">0.7</td> +<td align="right">2.3</td> +<td align="right">5.2</td> +<td align="right">1.5</td> +</tr> +<tr class="even"> +<td align="right">43.6369893</td> +<td align="right">0.7</td> +<td align="right">2.1</td> +<td align="right">5.6</td> +<td align="right">1.3</td> +</tr> +<tr class="odd"> +<td align="right">52.3643872</td> +<td align="right">0.6</td> +<td align="right">1.6</td> +<td align="right">4.3</td> +<td align="right">1.2</td> +</tr> +<tr class="even"> +<td align="right">52.3643872</td> +<td align="right">0.4</td> +<td align="right">1.1</td> +<td align="right">3.7</td> +<td align="right">0.9</td> +</tr> +<tr class="odd"> +<td align="right">52.3643872</td> +<td align="right">0.5</td> +<td align="right">1.3</td> +<td align="right">3.9</td> +<td align="right">1.1</td> +</tr> +<tr class="even"> +<td align="right">74.8062674</td> +<td align="right">0.4</td> +<td align="right">0.4</td> +<td align="right">2.5</td> +<td align="right">0.5</td> +</tr> +<tr class="odd"> +<td align="right">74.8062674</td> +<td align="right">0.3</td> +<td align="right">0.4</td> +<td align="right">2.4</td> +<td align="right">0.5</td> +</tr> +<tr class="even"> +<td align="right">74.8062674</td> +<td align="right">0.3</td> +<td align="right">0.3</td> +<td align="right">2.2</td> +<td align="right">0.3</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset BBA 2.2</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +<th align="right">M23</th> +<th align="right">M27</th> +<th align="right">M31</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">98.09</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0.0000000</td> +<td align="right">98.77</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">0.7678922</td> +<td align="right">93.52</td> +<td align="right">0.36</td> +<td align="right">0.42</td> +<td align="right">0.36</td> +</tr> +<tr class="even"> +<td align="right">0.7678922</td> +<td align="right">92.03</td> +<td align="right">0.40</td> +<td align="right">0.47</td> +<td align="right">0.33</td> +</tr> +<tr class="odd"> +<td align="right">2.3036765</td> +<td align="right">88.39</td> +<td align="right">1.03</td> +<td align="right">0.71</td> +<td align="right">0.55</td> +</tr> +<tr class="even"> +<td align="right">2.3036765</td> +<td align="right">87.18</td> +<td align="right">1.07</td> +<td align="right">0.82</td> +<td align="right">0.64</td> +</tr> +<tr class="odd"> +<td align="right">5.3752452</td> +<td align="right">69.38</td> +<td align="right">3.60</td> +<td align="right">2.19</td> +<td align="right">1.94</td> +</tr> +<tr class="even"> +<td align="right">5.3752452</td> +<td align="right">71.06</td> +<td align="right">3.66</td> +<td align="right">2.28</td> +<td align="right">1.62</td> +</tr> +<tr class="odd"> +<td align="right">10.7504904</td> +<td align="right">45.21</td> +<td align="right">6.97</td> +<td align="right">5.45</td> +<td align="right">4.22</td> +</tr> +<tr class="even"> +<td align="right">10.7504904</td> +<td align="right">46.81</td> +<td align="right">7.22</td> +<td align="right">5.19</td> +<td align="right">4.37</td> +</tr> +<tr class="odd"> +<td align="right">16.1257355</td> +<td align="right">30.54</td> +<td align="right">8.65</td> +<td align="right">8.81</td> +<td align="right">6.31</td> +</tr> +<tr class="even"> +<td align="right">16.1257355</td> +<td align="right">30.07</td> +<td align="right">8.38</td> +<td align="right">7.93</td> +<td align="right">6.85</td> +</tr> +<tr class="odd"> +<td align="right">21.5009807</td> +<td align="right">21.60</td> +<td align="right">9.10</td> +<td align="right">10.25</td> +<td align="right">7.05</td> +</tr> +<tr class="even"> +<td align="right">21.5009807</td> +<td align="right">20.41</td> +<td align="right">8.63</td> +<td align="right">10.77</td> +<td align="right">6.84</td> +</tr> +<tr class="odd"> +<td align="right">32.2514711</td> +<td align="right">9.10</td> +<td align="right">7.63</td> +<td align="right">10.89</td> +<td align="right">6.53</td> +</tr> +<tr class="even"> +<td align="right">32.2514711</td> +<td align="right">9.70</td> +<td align="right">8.01</td> +<td align="right">10.85</td> +<td align="right">7.11</td> +</tr> +<tr class="odd"> +<td align="right">43.0019614</td> +<td align="right">6.58</td> +<td align="right">6.40</td> +<td align="right">10.41</td> +<td align="right">6.06</td> +</tr> +<tr class="even"> +<td align="right">43.0019614</td> +<td align="right">6.31</td> +<td align="right">6.35</td> +<td align="right">10.35</td> +<td align="right">6.05</td> +</tr> +<tr class="odd"> +<td align="right">53.7524518</td> +<td align="right">3.47</td> +<td align="right">5.35</td> +<td align="right">9.92</td> +<td align="right">5.50</td> +</tr> +<tr class="even"> +<td align="right">53.7524518</td> +<td align="right">3.52</td> +<td align="right">5.06</td> +<td align="right">9.42</td> +<td align="right">5.07</td> +</tr> +<tr class="odd"> +<td align="right">64.5029421</td> +<td align="right">3.40</td> +<td align="right">5.14</td> +<td align="right">9.15</td> +<td align="right">4.94</td> +</tr> +<tr class="even"> +<td align="right">64.5029421</td> +<td align="right">3.67</td> +<td align="right">5.91</td> +<td align="right">9.25</td> +<td align="right">4.39</td> +</tr> +<tr class="odd"> +<td align="right">91.3791680</td> +<td align="right">1.62</td> +<td align="right">3.35</td> +<td align="right">7.14</td> +<td align="right">3.64</td> +</tr> +<tr class="even"> +<td align="right">91.3791680</td> +<td align="right">1.62</td> +<td align="right">2.87</td> +<td align="right">7.13</td> +<td align="right">3.55</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset BBA 2.3</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +<th align="right">M23</th> +<th align="right">M27</th> +<th align="right">M31</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.0000000</td> +<td align="right">99.33</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0.0000000</td> +<td align="right">97.44</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">0.6733938</td> +<td align="right">93.73</td> +<td align="right">0.18</td> +<td align="right">0.50</td> +<td align="right">0.47</td> +</tr> +<tr class="even"> +<td align="right">0.6733938</td> +<td align="right">93.77</td> +<td align="right">0.18</td> +<td align="right">0.83</td> +<td align="right">0.34</td> +</tr> +<tr class="odd"> +<td align="right">2.0201814</td> +<td align="right">87.84</td> +<td align="right">0.52</td> +<td align="right">1.25</td> +<td align="right">1.00</td> +</tr> +<tr class="even"> +<td align="right">2.0201814</td> +<td align="right">89.82</td> +<td align="right">0.43</td> +<td align="right">1.09</td> +<td align="right">0.89</td> +</tr> +<tr class="odd"> +<td align="right">4.7137565</td> +<td align="right">71.61</td> +<td align="right">1.19</td> +<td align="right">3.28</td> +<td align="right">3.58</td> +</tr> +<tr class="even"> +<td align="right">4.7137565</td> +<td align="right">71.42</td> +<td align="right">1.11</td> +<td align="right">3.24</td> +<td align="right">3.41</td> +</tr> +<tr class="odd"> +<td align="right">9.4275131</td> +<td align="right">45.60</td> +<td align="right">2.26</td> +<td align="right">7.17</td> +<td align="right">8.74</td> +</tr> +<tr class="even"> +<td align="right">9.4275131</td> +<td align="right">45.42</td> +<td align="right">1.99</td> +<td align="right">7.91</td> +<td align="right">8.28</td> +</tr> +<tr class="odd"> +<td align="right">14.1412696</td> +<td align="right">31.12</td> +<td align="right">2.81</td> +<td align="right">10.15</td> +<td align="right">9.67</td> +</tr> +<tr class="even"> +<td align="right">14.1412696</td> +<td align="right">31.68</td> +<td align="right">2.83</td> +<td align="right">9.55</td> +<td align="right">8.95</td> +</tr> +<tr class="odd"> +<td align="right">18.8550262</td> +<td align="right">23.20</td> +<td align="right">3.39</td> +<td align="right">12.09</td> +<td align="right">10.34</td> +</tr> +<tr class="even"> +<td align="right">18.8550262</td> +<td align="right">24.13</td> +<td align="right">3.56</td> +<td align="right">11.89</td> +<td align="right">10.00</td> +</tr> +<tr class="odd"> +<td align="right">28.2825393</td> +<td align="right">9.43</td> +<td align="right">3.49</td> +<td align="right">13.32</td> +<td align="right">7.89</td> +</tr> +<tr class="even"> +<td align="right">28.2825393</td> +<td align="right">9.82</td> +<td align="right">3.28</td> +<td align="right">12.05</td> +<td align="right">8.13</td> +</tr> +<tr class="odd"> +<td align="right">37.7100523</td> +<td align="right">7.08</td> +<td align="right">2.80</td> +<td align="right">10.04</td> +<td align="right">5.06</td> +</tr> +<tr class="even"> +<td align="right">37.7100523</td> +<td align="right">8.64</td> +<td align="right">2.97</td> +<td align="right">10.78</td> +<td align="right">5.54</td> +</tr> +<tr class="odd"> +<td align="right">47.1375654</td> +<td align="right">4.41</td> +<td align="right">2.42</td> +<td align="right">9.32</td> +<td align="right">3.79</td> +</tr> +<tr class="even"> +<td align="right">47.1375654</td> +<td align="right">4.78</td> +<td align="right">2.51</td> +<td align="right">9.62</td> +<td align="right">4.11</td> +</tr> +<tr class="odd"> +<td align="right">56.5650785</td> +<td align="right">4.92</td> +<td align="right">2.22</td> +<td align="right">8.00</td> +<td align="right">3.11</td> +</tr> +<tr class="even"> +<td align="right">56.5650785</td> +<td align="right">5.08</td> +<td align="right">1.95</td> +<td align="right">8.45</td> +<td align="right">2.98</td> +</tr> +<tr class="odd"> +<td align="right">80.1338612</td> +<td align="right">2.13</td> +<td align="right">1.28</td> +<td align="right">5.71</td> +<td align="right">1.78</td> +</tr> +<tr class="even"> +<td align="right">80.1338612</td> +<td align="right">2.23</td> +<td align="right">0.99</td> +<td align="right">3.33</td> +<td align="right">1.55</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Elliot</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">DMTA</th> +<th align="right">M23</th> +<th align="right">M27</th> +<th align="right">M31</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">97.5</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">100.7</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">1.228478</td> +<td align="right">86.4</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">1.228478</td> +<td align="right">88.5</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">1.5</td> +</tr> +<tr class="odd"> +<td align="right">3.685435</td> +<td align="right">69.8</td> +<td align="right">2.8</td> +<td align="right">2.3</td> +<td align="right">5.0</td> +</tr> +<tr class="even"> +<td align="right">3.685435</td> +<td align="right">77.1</td> +<td align="right">1.7</td> +<td align="right">2.1</td> +<td align="right">2.4</td> +</tr> +<tr class="odd"> +<td align="right">8.599349</td> +<td align="right">59.0</td> +<td align="right">4.3</td> +<td align="right">4.0</td> +<td align="right">4.3</td> +</tr> +<tr class="even"> +<td align="right">8.599349</td> +<td align="right">54.2</td> +<td align="right">5.8</td> +<td align="right">3.4</td> +<td align="right">5.0</td> +</tr> +<tr class="odd"> +<td align="right">17.198697</td> +<td align="right">31.3</td> +<td align="right">8.2</td> +<td align="right">6.6</td> +<td align="right">8.0</td> +</tr> +<tr class="even"> +<td align="right">17.198697</td> +<td align="right">33.5</td> +<td align="right">5.2</td> +<td align="right">6.9</td> +<td align="right">7.7</td> +</tr> +<tr class="odd"> +<td align="right">25.798046</td> +<td align="right">19.6</td> +<td align="right">5.1</td> +<td align="right">8.2</td> +<td align="right">7.8</td> +</tr> +<tr class="even"> +<td align="right">25.798046</td> +<td align="right">20.9</td> +<td align="right">6.1</td> +<td align="right">8.8</td> +<td align="right">6.5</td> +</tr> +<tr class="odd"> +<td align="right">34.397395</td> +<td align="right">13.3</td> +<td align="right">6.0</td> +<td align="right">9.7</td> +<td align="right">8.0</td> +</tr> +<tr class="even"> +<td align="right">34.397395</td> +<td align="right">15.8</td> +<td align="right">6.0</td> +<td align="right">8.8</td> +<td align="right">7.4</td> +</tr> +<tr class="odd"> +<td align="right">51.596092</td> +<td align="right">6.7</td> +<td align="right">5.0</td> +<td align="right">8.3</td> +<td align="right">6.9</td> +</tr> +<tr class="even"> +<td align="right">51.596092</td> +<td align="right">8.7</td> +<td align="right">4.2</td> +<td align="right">9.2</td> +<td align="right">9.0</td> +</tr> +<tr class="odd"> +<td align="right">68.794789</td> +<td align="right">8.8</td> +<td align="right">3.9</td> +<td align="right">9.3</td> +<td align="right">5.5</td> +</tr> +<tr class="even"> +<td align="right">68.794789</td> +<td align="right">8.7</td> +<td align="right">2.9</td> +<td align="right">8.5</td> +<td align="right">6.1</td> +</tr> +<tr class="odd"> +<td align="right">103.192184</td> +<td align="right">6.0</td> +<td align="right">1.9</td> +<td align="right">8.6</td> +<td align="right">6.1</td> +</tr> +<tr class="even"> +<td align="right">103.192184</td> +<td align="right">4.4</td> +<td align="right">1.5</td> +<td align="right">6.0</td> +<td align="right">4.0</td> +</tr> +<tr class="odd"> +<td align="right">146.188928</td> +<td align="right">3.3</td> +<td align="right">2.0</td> +<td align="right">5.6</td> +<td align="right">3.1</td> +</tr> +<tr class="even"> +<td align="right">146.188928</td> +<td align="right">2.8</td> +<td align="right">2.3</td> +<td align="right">4.5</td> +<td align="right">2.9</td> +</tr> +<tr class="odd"> +<td align="right">223.583066</td> +<td align="right">1.4</td> +<td align="right">1.2</td> +<td align="right">4.1</td> +<td align="right">1.8</td> +</tr> +<tr class="even"> +<td align="right">223.583066</td> +<td align="right">1.8</td> +<td align="right">1.9</td> +<td align="right">3.9</td> +<td align="right">2.6</td> +</tr> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">93.4</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="even"> +<td align="right">0.000000</td> +<td align="right">103.2</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">1.228478</td> +<td align="right">89.2</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">1.3</td> +</tr> +<tr class="even"> +<td align="right">1.228478</td> +<td align="right">86.6</td> +<td align="right">NA</td> +<td align="right">NA</td> +<td align="right">NA</td> +</tr> +<tr class="odd"> +<td align="right">3.685435</td> +<td align="right">78.2</td> +<td align="right">2.6</td> +<td align="right">1.0</td> +<td align="right">3.1</td> +</tr> +<tr class="even"> +<td align="right">3.685435</td> +<td align="right">78.1</td> +<td align="right">2.4</td> +<td align="right">2.6</td> +<td align="right">2.3</td> +</tr> +<tr class="odd"> +<td align="right">8.599349</td> +<td align="right">55.6</td> +<td align="right">5.5</td> +<td align="right">4.5</td> +<td align="right">3.4</td> +</tr> +<tr class="even"> +<td align="right">8.599349</td> +<td align="right">53.0</td> +<td align="right">5.6</td> +<td align="right">4.6</td> +<td align="right">4.3</td> +</tr> +<tr class="odd"> +<td align="right">17.198697</td> +<td align="right">33.7</td> +<td align="right">7.3</td> +<td align="right">7.6</td> +<td align="right">7.8</td> +</tr> +<tr class="even"> +<td align="right">17.198697</td> +<td align="right">33.2</td> +<td align="right">6.5</td> +<td align="right">6.7</td> +<td align="right">8.7</td> +</tr> +<tr class="odd"> +<td align="right">25.798046</td> +<td align="right">20.9</td> +<td align="right">5.8</td> +<td align="right">8.7</td> +<td align="right">7.7</td> +</tr> +<tr class="even"> +<td align="right">25.798046</td> +<td align="right">19.9</td> +<td align="right">7.7</td> +<td align="right">7.6</td> +<td align="right">6.5</td> +</tr> +<tr class="odd"> +<td align="right">34.397395</td> +<td align="right">18.2</td> +<td align="right">7.8</td> +<td align="right">8.0</td> +<td align="right">6.3</td> +</tr> +<tr class="even"> +<td align="right">34.397395</td> +<td align="right">12.7</td> +<td align="right">7.3</td> +<td align="right">8.6</td> +<td align="right">8.7</td> +</tr> +<tr class="odd"> +<td align="right">51.596092</td> +<td align="right">7.8</td> +<td align="right">7.0</td> +<td align="right">7.4</td> +<td align="right">5.7</td> +</tr> +<tr class="even"> +<td align="right">51.596092</td> +<td align="right">9.0</td> +<td align="right">6.3</td> +<td align="right">7.2</td> +<td align="right">4.2</td> +</tr> +<tr class="odd"> +<td align="right">68.794789</td> +<td align="right">11.4</td> +<td align="right">4.3</td> +<td align="right">10.3</td> +<td align="right">3.2</td> +</tr> +<tr class="even"> +<td align="right">68.794789</td> +<td align="right">9.0</td> +<td align="right">3.8</td> +<td align="right">9.4</td> +<td align="right">4.2</td> +</tr> +<tr class="odd"> +<td align="right">103.192184</td> +<td align="right">3.9</td> +<td align="right">2.6</td> +<td align="right">6.5</td> +<td align="right">3.8</td> +</tr> +<tr class="even"> +<td align="right">103.192184</td> +<td align="right">4.4</td> +<td align="right">2.8</td> +<td align="right">6.9</td> +<td align="right">4.0</td> +</tr> +<tr class="odd"> +<td align="right">146.188928</td> +<td align="right">2.6</td> +<td align="right">1.6</td> +<td align="right">4.6</td> +<td align="right">4.5</td> +</tr> +<tr class="even"> +<td align="right">146.188928</td> +<td align="right">3.4</td> +<td align="right">1.1</td> +<td align="right">4.5</td> +<td align="right">4.5</td> +</tr> +<tr class="odd"> +<td align="right">223.583066</td> +<td align="right">2.0</td> +<td align="right">1.4</td> +<td align="right">4.3</td> +<td align="right">3.8</td> +</tr> +<tr class="even"> +<td align="right">223.583066</td> +<td align="right">1.7</td> +<td align="right">1.3</td> +<td align="right">4.2</td> +<td align="right">2.3</td> +</tr> +</tbody> +</table> +</div> +<div class="section level2"> +<h2 id="separate-evaluations">Separate evaluations<a class="anchor" aria-label="anchor" href="#separate-evaluations"></a> +</h2> +<p>As a first step to obtain suitable starting parameters for the NLHM +fits, we do separate fits of several variants of the pathway model used +previously <span class="citation">(Ranke et al. 2021)</span>, varying +the kinetic model for the parent compound. Because the SFORB model often +provides faster convergence than the DFOP model, and can sometimes be +fitted where the DFOP model results in errors, it is included in the set +of parent models tested here.</p> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">if</span> <span class="op">(</span><span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/files2.html" class="external-link">dir.exists</a></span><span class="op">(</span><span class="st">"dmta_dlls"</span><span class="op">)</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/files2.html" class="external-link">dir.create</a></span><span class="op">(</span><span class="st">"dmta_dlls"</span><span class="op">)</span></span> +<span><span class="va">m_sfo_path_1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> DMTA <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M23"</span>, <span class="st">"M27"</span>, <span class="st">"M31"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> M23 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M27 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M31 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M27"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> name <span class="op">=</span> <span class="st">"m_sfo_path"</span>, dll_dir <span class="op">=</span> <span class="st">"dmta_dlls"</span>,</span> +<span> unload <span class="op">=</span> <span class="cn">TRUE</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span> +<span><span class="va">m_fomc_path_1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> DMTA <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M23"</span>, <span class="st">"M27"</span>, <span class="st">"M31"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> M23 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M27 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M31 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M27"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> name <span class="op">=</span> <span class="st">"m_fomc_path"</span>, dll_dir <span class="op">=</span> <span class="st">"dmta_dlls"</span>,</span> +<span> unload <span class="op">=</span> <span class="cn">TRUE</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span> +<span><span class="va">m_dfop_path_1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> DMTA <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M23"</span>, <span class="st">"M27"</span>, <span class="st">"M31"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> M23 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M27 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M31 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M27"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> name <span class="op">=</span> <span class="st">"m_dfop_path"</span>, dll_dir <span class="op">=</span> <span class="st">"dmta_dlls"</span>,</span> +<span> unload <span class="op">=</span> <span class="cn">TRUE</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span> +<span><span class="va">m_sforb_path_1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> DMTA <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M23"</span>, <span class="st">"M27"</span>, <span class="st">"M31"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> M23 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M27 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M31 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M27"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> name <span class="op">=</span> <span class="st">"m_sforb_path"</span>, dll_dir <span class="op">=</span> <span class="st">"dmta_dlls"</span>,</span> +<span> unload <span class="op">=</span> <span class="cn">TRUE</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span> +<span><span class="va">m_hs_path_1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> DMTA <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"HS"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M23"</span>, <span class="st">"M27"</span>, <span class="st">"M31"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> M23 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M27 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M31 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M27"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> name <span class="op">=</span> <span class="st">"m_hs_path"</span>, dll_dir <span class="op">=</span> <span class="st">"dmta_dlls"</span>,</span> +<span> unload <span class="op">=</span> <span class="cn">TRUE</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span> +<span><span class="va">cl</span> <span class="op"><-</span> <span class="fu">start_cluster</span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span></span> +<span><span class="va">deg_mods_1</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span></span> +<span> sfo_path_1 <span class="op">=</span> <span class="va">m_sfo_path_1</span>,</span> +<span> fomc_path_1 <span class="op">=</span> <span class="va">m_fomc_path_1</span>,</span> +<span> dfop_path_1 <span class="op">=</span> <span class="va">m_dfop_path_1</span>,</span> +<span> sforb_path_1 <span class="op">=</span> <span class="va">m_sforb_path_1</span>,</span> +<span> hs_path_1 <span class="op">=</span> <span class="va">m_hs_path_1</span><span class="op">)</span></span> +<span></span> +<span><span class="va">sep_1_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span></span> +<span> <span class="va">deg_mods_1</span>,</span> +<span> <span class="va">dmta_ds</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"const"</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">sep_1_const</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Calke</th> +<th align="left">Borstel</th> +<th align="left">Flaach</th> +<th align="left">BBA 2.2</th> +<th align="left">BBA 2.3</th> +<th align="left">Elliot</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">C</td> +</tr> +</tbody> +</table> +<p>All separate pathway fits with SFO or FOMC for the parent and +constant variance converged (status OK). Most fits with DFOP or SFORB +for the parent converged as well. The fits with HS for the parent did +not converge with default settings.</p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">sep_1_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">sep_1_const</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">sep_1_tc</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Calke</th> +<th align="left">Borstel</th> +<th align="left">Flaach</th> +<th align="left">BBA 2.2</th> +<th align="left">BBA 2.3</th> +<th align="left">Elliot</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">C</td> +</tr> +</tbody> +</table> +<p>With the two-component error model, the set of fits with convergence +problems is slightly different, with convergence problems appearing for +different data sets when applying the DFOP and SFORB model and some +additional convergence problems when using the FOMC model for the +parent.</p> +</div> +<div class="section level2"> +<h2 id="hierarchichal-model-fits">Hierarchichal model fits<a class="anchor" aria-label="anchor" href="#hierarchichal-model-fits"></a> +</h2> +<p>The following code fits two sets of the corresponding hierarchical +models to the data, one assuming constant variance, and one assuming +two-component error.</p> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">saem_1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mhmkin.html">mhmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">sep_1_const</span>, <span class="va">sep_1_tc</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<p>The run time for these fits was around two hours on five year old +hardware. After a recent hardware upgrade these fits complete in less +than twenty minutes.</p> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>According to the <code>status</code> function, all fits terminated +successfully.</p> +<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1 const</td> +<td align="right">17</td> +<td align="right">2291.8</td> +<td align="right">2288.3</td> +<td align="right">-1128.9</td> +</tr> +<tr class="even"> +<td align="left">sfo_path_1 tc</td> +<td align="right">18</td> +<td align="right">2276.4</td> +<td align="right">2272.7</td> +<td align="right">-1120.2</td> +</tr> +<tr class="odd"> +<td align="left">fomc_path_1 const</td> +<td align="right">19</td> +<td align="right">2095.9</td> +<td align="right">2091.9</td> +<td align="right">-1028.9</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1 tc</td> +<td align="right">20</td> +<td align="right">1939.0</td> +<td align="right">1934.8</td> +<td align="right">-949.5</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1 const</td> +<td align="right">21</td> +<td align="right">2039.7</td> +<td align="right">2035.3</td> +<td align="right">-998.8</td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1 const</td> +<td align="right">21</td> +<td align="right">2017.7</td> +<td align="right">2013.4</td> +<td align="right">-987.9</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1 const</td> +<td align="right">21</td> +<td align="right">2023.7</td> +<td align="right">2019.3</td> +<td align="right">-990.9</td> +</tr> +<tr class="even"> +<td align="left">dfop_path_1 tc</td> +<td align="right">22</td> +<td align="right">1881.7</td> +<td align="right">1877.1</td> +<td align="right">-918.9</td> +</tr> +<tr class="odd"> +<td align="left">sforb_path_1 tc</td> +<td align="right">22</td> +<td align="right">1832.7</td> +<td align="right">1828.1</td> +<td align="right">-894.3</td> +</tr> +<tr class="even"> +<td align="left">hs_path_1 tc</td> +<td align="right">22</td> +<td align="right">1831.6</td> +<td align="right">1827.0</td> +<td align="right">-893.8</td> +</tr> +</tbody> +</table> +<p>When the goodness-of-fit of the models is compared, a warning is +obtained, indicating that the likelihood of the pathway fit with SFORB +for the parent compound and constant variance could not be calculated +with importance sampling (method ‘is’). As this is the default method on +which all AIC and BIC comparisons are based, this variant is not +included in the model comparison table. Comparing the goodness-of-fit of +the remaining models, HS model model with two-component error provides +the best fit. However, for batch experiments performed with constant +conditions such as the experiments evaluated here, there is no reason to +assume a discontinuity, so the SFORB model is preferable from a +mechanistic viewpoint. In addition, the information criteria AIC and BIC +are very similar for HS and SFORB. Therefore, the SFORB model is +selected here for further refinements.</p> +<div class="section level3"> +<h3 id="parameter-identifiability-based-on-the-fisher-information-matrix">Parameter identifiability based on the Fisher Information +Matrix<a class="anchor" aria-label="anchor" href="#parameter-identifiability-based-on-the-fisher-information-matrix"></a> +</h3> +<p>Using the <code>illparms</code> function, ill-defined statistical +model parameters such as standard deviations of the degradation +parameters in the population and error model parameters can be +found.</p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_path_1</td> +<td align="left"></td> +<td align="left">sd(DMTA_0)</td> +</tr> +<tr class="even"> +<td align="left">fomc_path_1</td> +<td align="left"></td> +<td align="left">sd(DMTA_0)</td> +</tr> +<tr class="odd"> +<td align="left">dfop_path_1</td> +<td align="left"></td> +<td align="left"></td> +</tr> +<tr class="even"> +<td align="left">sforb_path_1</td> +<td align="left">sd(log_k_DMTA_bound_free)</td> +<td align="left">sd(log_k_DMTA_bound_free)</td> +</tr> +<tr class="odd"> +<td align="left">hs_path_1</td> +<td align="left"></td> +<td align="left">sd(log_tb)</td> +</tr> +</tbody> +</table> +<p>When using constant variance, no ill-defined variance parameters are +identified with the <code>illparms</code> function in any of the +degradation models. When using the two-component error model, there is +one ill-defined variance parameter in all variants except for the +variant using DFOP for the parent compound.</p> +<p>For the selected combination of the SFORB pathway model with +two-component error, the random effect for the rate constant from +reversibly bound DMTA to the free DMTA (<code>k_DMTA_bound_free</code>) +is not well-defined. Therefore, the fit is updated without assuming a +random effect for this parameter.</p> +<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">saem_sforb_path_1_tc_reduced</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">[[</span><span class="st">"sforb_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="st">"log_k_DMTA_bound_free"</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">saem_sforb_path_1_tc_reduced</span><span class="op">)</span></span></code></pre></div> +<p>As expected, no ill-defined parameters remain. The model comparison +below shows that the reduced model is preferable.</p> +<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">[[</span><span class="st">"sforb_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span>, <span class="va">saem_sforb_path_1_tc_reduced</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">saem_sforb_path_1_tc_reduced</td> +<td align="right">21</td> +<td align="right">1830.4</td> +<td align="right">1826.0</td> +<td align="right">-894.2</td> +</tr> +<tr class="even"> +<td align="left">saem_1[[“sforb_path_1”, “tc”]]</td> +<td align="right">22</td> +<td align="right">1832.7</td> +<td align="right">1828.1</td> +<td align="right">-894.3</td> +</tr> +</tbody> +</table> +<p>The convergence plot of the refined fit is shown below.</p> +<div class="sourceCode" id="cb12"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">saem_sforb_path_1_tc_reduced</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"convergence"</span><span class="op">)</span></span></code></pre></div> +<p><img src="2022_dmta_pathway_files/figure-html/saem-sforb-path-1-tc-reduced-convergence-1.png" width="700" style="display: block; margin: auto;"></p> +<p>For some parameters, for example for <code>f_DMTA_ilr_1</code> and +<code>f_DMTA_ilr_2</code>, i.e. for two of the parameters determining +the formation fractions of the parallel formation of the three +metabolites, some movement of the parameters is still visible in the +second phase of the algorithm. However, the amplitude of this movement +is in the range of the amplitude towards the end of the first phase. +Therefore, it is likely that an increase in iterations would not improve +the parameter estimates very much, and it is proposed that the fit is +acceptable. No numeric convergence criterion is implemented in +saemix.</p> +</div> +<div class="section level3"> +<h3 id="alternative-check-of-parameter-identifiability">Alternative check of parameter identifiability<a class="anchor" aria-label="anchor" href="#alternative-check-of-parameter-identifiability"></a> +</h3> +<p>As an alternative check of parameter identifiability <span class="citation">(Duchesne et al. 2021)</span>, multistart runs were +performed on the basis of the refined fit shown above.</p> +<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">saem_sforb_path_1_tc_reduced_multi</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/multistart.html">multistart</a></span><span class="op">(</span><span class="va">saem_sforb_path_1_tc_reduced</span>,</span> +<span> n <span class="op">=</span> <span class="fl">32</span>, cores <span class="op">=</span> <span class="fl">10</span><span class="op">)</span></span></code></pre></div> +<pre><code> + (subscript) logical subscript too long</code></pre> +<div class="sourceCode" id="cb15"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">saem_sforb_path_1_tc_reduced_multi</span><span class="op">)</span></span></code></pre></div> +<pre><code><multistart> object with 32 fits: + E OK + 7 25 +OK: Fit terminated successfully +E: Error</code></pre> +<p>Out of the 32 fits that were initiated, only 17 terminated without an +error. The reason for this is that the wide variation of starting +parameters in combination with the parameter variation that is used in +the SAEM algorithm leads to parameter combinations for the degradation +model that the numerical integration routine cannot cope with. Because +of this variation of initial parameters, some of the model fits take up +to two times more time than the original fit.</p> +<div class="sourceCode" id="cb17"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/graphics/par.html" class="external-link">par</a></span><span class="op">(</span>mar <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">12.1</span>, <span class="fl">4.1</span>, <span class="fl">2.1</span>, <span class="fl">2.1</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/parplot.html">parplot</a></span><span class="op">(</span><span class="va">saem_sforb_path_1_tc_reduced_multi</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.5</span>, <span class="fl">2</span><span class="op">)</span>, las <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_pathway_files/figure-html/unnamed-chunk-2-1.png" alt="Parameter boxplots for the multistart runs that succeeded" width="960"><p class="caption"> +Parameter boxplots for the multistart runs that succeeded +</p> +</div> +<p>However, visual analysis of the boxplot of the parameters obtained in +the successful fits confirms that the results are sufficiently +independent of the starting parameters, and there are no remaining +ill-defined parameters.</p> +</div> +</div> +<div class="section level2"> +<h2 id="plots-of-selected-fits">Plots of selected fits<a class="anchor" aria-label="anchor" href="#plots-of-selected-fits"></a> +</h2> +<p>The SFORB pathway fits with full and reduced parameter distribution +model are shown below.</p> +<div class="sourceCode" id="cb18"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">[[</span><span class="st">"sforb_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_pathway_files/figure-html/unnamed-chunk-3-1.png" alt="SFORB pathway fit with two-component error" width="700"><p class="caption"> +SFORB pathway fit with two-component error +</p> +</div> +<div class="sourceCode" id="cb19"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">saem_sforb_path_1_tc_reduced</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_pathway_files/figure-html/unnamed-chunk-4-1.png" alt="SFORB pathway fit with two-component error, reduced parameter model" width="700"><p class="caption"> +SFORB pathway fit with two-component error, reduced parameter model +</p> +</div> +<p>Plots of the remaining fits and listings for all successful fits are +shown in the Appendix.</p> +<div class="sourceCode" id="cb20"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">stopCluster</a></span><span class="op">(</span><span class="va">cl</span><span class="op">)</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="conclusions">Conclusions<a class="anchor" aria-label="anchor" href="#conclusions"></a> +</h2> +<p>Pathway fits with SFO, FOMC, DFOP, SFORB and HS models for the parent +compound could be successfully performed.</p> +</div> +<div class="section level2"> +<h2 id="acknowledgements">Acknowledgements<a class="anchor" aria-label="anchor" href="#acknowledgements"></a> +</h2> +<p>The helpful comments by Janina Wöltjen of the German Environment +Agency on earlier versions of this document are gratefully +acknowledged.</p> +</div> +<div class="section level2"> +<h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a> +</h2> +<div id="refs" class="references csl-bib-body hanging-indent"> +<div id="ref-duchesne_2021" class="csl-entry"> +Duchesne, Ronan, Anissa Guillemin, Olivier Gandrillon, and Fabien +Crauste. 2021. <span>“Practical Identifiability in the Frame of +Nonlinear Mixed Effects Models: The Example of the in Vitro +Erythropoiesis.”</span> <em>BMC Bioinformatics</em> 22 (478). <a href="https://doi.org/10.1186/s12859-021-04373-4" class="external-link">https://doi.org/10.1186/s12859-021-04373-4</a>. +</div> +<div id="ref-ranke2021" class="csl-entry"> +Ranke, Johannes, Janina Wöltjen, Jana Schmidt, and Emmanuelle Comets. +2021. <span>“Taking Kinetic Evaluations of Degradation Data to the Next +Level with Nonlinear Mixed-Effects Models.”</span> <em>Environments</em> +8 (8). <a href="https://doi.org/10.3390/environments8080071" class="external-link">https://doi.org/10.3390/environments8080071</a>. +</div> +</div> +</div> +<div class="section level2"> +<h2 id="appendix">Appendix<a class="anchor" aria-label="anchor" href="#appendix"></a> +</h2> +<div class="section level3"> +<h3 id="plots-of-hierarchical-fits-not-selected-for-refinement">Plots of hierarchical fits not selected for refinement<a class="anchor" aria-label="anchor" href="#plots-of-hierarchical-fits-not-selected-for-refinement"></a> +</h3> +<div class="sourceCode" id="cb21"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">[[</span><span class="st">"sfo_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_pathway_files/figure-html/unnamed-chunk-6-1.png" alt="SFO pathway fit with two-component error" width="700"><p class="caption"> +SFO pathway fit with two-component error +</p> +</div> +<div class="sourceCode" id="cb22"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">[[</span><span class="st">"fomc_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_pathway_files/figure-html/unnamed-chunk-7-1.png" alt="FOMC pathway fit with two-component error" width="700"><p class="caption"> +FOMC pathway fit with two-component error +</p> +</div> +<div class="sourceCode" id="cb23"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">saem_1</span><span class="op">[[</span><span class="st">"sforb_path_1"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<div class="figure" style="text-align: center"> +<img src="2022_dmta_pathway_files/figure-html/unnamed-chunk-8-1.png" alt="HS pathway fit with two-component error" width="700"><p class="caption"> +HS pathway fit with two-component error +</p> +</div> +</div> +<div class="section level3"> +<h3 id="hierarchical-model-fit-listings">Hierarchical model fit listings<a class="anchor" aria-label="anchor" href="#hierarchical-model-fit-listings"></a> +</h3> +<div class="section level4"> +<h4 id="fits-with-random-effects-for-all-degradation-parameters">Fits with random effects for all degradation parameters<a class="anchor" aria-label="anchor" href="#fits-with-random-effects-for-all-degradation-parameters"></a> +</h4> + +</div> +<div class="section level4"> +<h4 id="improved-fit-of-the-sforb-pathway-model-with-two-component-error">Improved fit of the SFORB pathway model with two-component +error<a class="anchor" aria-label="anchor" href="#improved-fit-of-the-sforb-pathway-model-with-two-component-error"></a> +</h4> + +</div> +</div> +<div class="section level3"> +<h3 id="session-info">Session info<a class="anchor" aria-label="anchor" href="#session-info"></a> +</h3> +<pre><code>R version 4.4.2 (2024-10-31) +Platform: x86_64-pc-linux-gnu +Running under: Debian GNU/Linux 12 (bookworm) + +Matrix products: default +BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 +LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 + +locale: + [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C + [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8 + [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 + [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C + [9] LC_ADDRESS=C LC_TELEPHONE=C +[11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C + +time zone: Europe/Berlin +tzcode source: system (glibc) + +attached base packages: +[1] parallel stats graphics grDevices utils datasets methods +[8] base + +other attached packages: +[1] rmarkdown_2.29 nvimcom_0.9-167 saemix_3.3 npde_3.5 +[5] knitr_1.49 mkin_1.2.10 + +loaded via a namespace (and not attached): + [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3 lattice_0.22-6 + [5] digest_0.6.37 magrittr_2.0.3 evaluate_1.0.1 grid_4.4.2 + [9] fastmap_1.2.0 jsonlite_1.8.9 processx_3.8.4 pkgbuild_1.4.5 +[13] deSolve_1.40 mclust_6.1.1 ps_1.8.1 gridExtra_2.3 +[17] fansi_1.0.6 scales_1.3.0 codetools_0.2-20 textshaping_0.4.1 +[21] jquerylib_0.1.4 cli_3.6.3 rlang_1.1.4 munsell_0.5.1 +[25] cachem_1.1.0 yaml_2.3.10 inline_0.3.20 tools_4.4.2 +[29] dplyr_1.1.4 colorspace_2.1-1 ggplot2_3.5.1 vctrs_0.6.5 +[33] R6_2.5.1 zoo_1.8-12 lifecycle_1.0.4 fs_1.6.5 +[37] htmlwidgets_1.6.4 MASS_7.3-61 ragg_1.3.3 pkgconfig_2.0.3 +[41] desc_1.4.3 callr_3.7.6 pkgdown_2.1.1 pillar_1.9.0 +[45] bslib_0.8.0 gtable_0.3.6 glue_1.8.0 systemfonts_1.1.0 +[49] xfun_0.49 tibble_3.2.1 lmtest_0.9-40 tidyselect_1.2.1 +[53] htmltools_0.5.8.1 nlme_3.1-166 compiler_4.4.2 </code></pre> +</div> +<div class="section level3"> +<h3 id="hardware-info">Hardware info<a class="anchor" aria-label="anchor" href="#hardware-info"></a> +</h3> +<pre><code>CPU model: AMD Ryzen 9 7950X 16-Core Processor</code></pre> +<pre><code>MemTotal: 64927788 kB</code></pre> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/saem-sforb-path-1-tc-reduced-convergence-1.png b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/saem-sforb-path-1-tc-reduced-convergence-1.png Binary files differnew file mode 100644 index 00000000..0facfbe5 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/saem-sforb-path-1-tc-reduced-convergence-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-2-1.png b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-2-1.png Binary files differnew file mode 100644 index 00000000..4e363872 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-2-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-3-1.png b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-3-1.png Binary files differnew file mode 100644 index 00000000..562d8d9d --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-3-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-4-1.png b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-4-1.png Binary files differnew file mode 100644 index 00000000..7bf4aa4a --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-4-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-6-1.png b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-6-1.png Binary files differnew file mode 100644 index 00000000..602c1138 --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-6-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-7-1.png b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-7-1.png Binary files differnew file mode 100644 index 00000000..8db8e11c --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-7-1.png diff --git a/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-8-1.png b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-8-1.png Binary files differnew file mode 100644 index 00000000..562d8d9d --- /dev/null +++ b/docs/dev/articles/prebuilt/2022_dmta_pathway_files/figure-html/unnamed-chunk-8-1.png diff --git a/docs/dev/articles/prebuilt/2023_mesotrione_parent.html b/docs/dev/articles/prebuilt/2023_mesotrione_parent.html new file mode 100644 index 00000000..86c7c2dd --- /dev/null +++ b/docs/dev/articles/prebuilt/2023_mesotrione_parent.html @@ -0,0 +1,2500 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change on 4 August 2023, +last compiled on 14 Februar 2025</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/prebuilt/2023_mesotrione_parent.rmd" class="external-link"><code>vignettes/prebuilt/2023_mesotrione_parent.rmd</code></a></small> + <div class="d-none name"><code>2023_mesotrione_parent.rmd</code></div> + </div> + + + +<div class="section level2"> +<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a> +</h2> +<p>The purpose of this document is to test demonstrate how nonlinear +hierarchical models (NLHM) based on the parent degradation models SFO, +FOMC, DFOP and HS can be fitted with the mkin package, also considering +the influence of covariates like soil pH on different degradation +parameters. Because in some other case studies, the SFORB +parameterisation of biexponential decline has shown some advantages over +the DFOP parameterisation, SFORB was included in the list of tested +models as well.</p> +<p>The mkin package is used in version 1.2.10, which is contains the +functions that were used for the evaluations. The <code>saemix</code> +package is used as a backend for fitting the NLHM, but is also loaded to +make the convergence plot function available.</p> +<p>This document is processed with the <code>knitr</code> package, which +also provides the <code>kable</code> function that is used to improve +the display of tabular data in R markdown documents. For parallel +processing, the <code>parallel</code> package is used.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://yihui.org/knitr/" class="external-link">knitr</a></span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">saemix</span><span class="op">)</span></span> +<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">parallel</span><span class="op">)</span></span> +<span><span class="va">n_cores</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span></span> +<span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.info.html" class="external-link">Sys.info</a></span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="st">"sysname"</span><span class="op">]</span> <span class="op">==</span> <span class="st">"Windows"</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">cl</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makePSOCKcluster</a></span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span><span class="op">}</span> <span class="kw">else</span> <span class="op">{</span></span> +<span> <span class="va">cl</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makeForkCluster</a></span><span class="op">(</span><span class="va">n_cores</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +<div class="section level3"> +<h3 id="test-data">Test data<a class="anchor" aria-label="anchor" href="#test-data"></a> +</h3> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">data_file</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.file.html" class="external-link">system.file</a></span><span class="op">(</span></span> +<span> <span class="st">"testdata"</span>, <span class="st">"mesotrione_soil_efsa_2016.xlsx"</span>, package <span class="op">=</span> <span class="st">"mkin"</span><span class="op">)</span></span> +<span><span class="va">meso_ds</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/read_spreadsheet.html">read_spreadsheet</a></span><span class="op">(</span><span class="va">data_file</span>, parent_only <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<p>The following tables show the covariate data and the 18 datasets that +were read in from the spreadsheet file.</p> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">pH</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/attr.html" class="external-link">attr</a></span><span class="op">(</span><span class="va">meso_ds</span>, <span class="st">"covariates"</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="va">pH</span>, caption <span class="op">=</span> <span class="st">"Covariate data"</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<caption>Covariate data</caption> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">pH</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Richmond</td> +<td align="right">6.2</td> +</tr> +<tr class="even"> +<td align="left">Richmond 2</td> +<td align="right">6.2</td> +</tr> +<tr class="odd"> +<td align="left">ERTC</td> +<td align="right">6.4</td> +</tr> +<tr class="even"> +<td align="left">Toulouse</td> +<td align="right">7.7</td> +</tr> +<tr class="odd"> +<td align="left">Picket Piece</td> +<td align="right">7.1</td> +</tr> +<tr class="even"> +<td align="left">721</td> +<td align="right">5.6</td> +</tr> +<tr class="odd"> +<td align="left">722</td> +<td align="right">5.7</td> +</tr> +<tr class="even"> +<td align="left">723</td> +<td align="right">5.4</td> +</tr> +<tr class="odd"> +<td align="left">724</td> +<td align="right">4.8</td> +</tr> +<tr class="even"> +<td align="left">725</td> +<td align="right">5.8</td> +</tr> +<tr class="odd"> +<td align="left">727</td> +<td align="right">5.1</td> +</tr> +<tr class="even"> +<td align="left">728</td> +<td align="right">5.9</td> +</tr> +<tr class="odd"> +<td align="left">729</td> +<td align="right">5.6</td> +</tr> +<tr class="even"> +<td align="left">730</td> +<td align="right">5.3</td> +</tr> +<tr class="odd"> +<td align="left">731</td> +<td align="right">6.1</td> +</tr> +<tr class="even"> +<td align="left">732</td> +<td align="right">5.0</td> +</tr> +<tr class="odd"> +<td align="left">741</td> +<td align="right">5.7</td> +</tr> +<tr class="even"> +<td align="left">742</td> +<td align="right">7.2</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">for</span> <span class="op">(</span><span class="va">ds_name</span> <span class="kw">in</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">meso_ds</span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span></span> +<span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="fu"><a href="../../reference/mkin_long_to_wide.html">mkin_long_to_wide</a></span><span class="op">(</span><span class="va">meso_ds</span><span class="op">[[</span><span class="va">ds_name</span><span class="op">]</span><span class="op">]</span><span class="op">)</span>,</span> +<span> caption <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Dataset"</span>, <span class="va">ds_name</span><span class="op">)</span>,</span> +<span> booktabs <span class="op">=</span> <span class="cn">TRUE</span>, row.names <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +<table class="table"> +<caption>Dataset Richmond</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">91.00</td> +</tr> +<tr class="even"> +<td align="right">1.179050</td> +<td align="right">86.70</td> +</tr> +<tr class="odd"> +<td align="right">3.537149</td> +<td align="right">73.60</td> +</tr> +<tr class="even"> +<td align="right">7.074299</td> +<td align="right">61.50</td> +</tr> +<tr class="odd"> +<td align="right">10.611448</td> +<td align="right">55.70</td> +</tr> +<tr class="even"> +<td align="right">15.327647</td> +<td align="right">47.70</td> +</tr> +<tr class="odd"> +<td align="right">17.685747</td> +<td align="right">39.50</td> +</tr> +<tr class="even"> +<td align="right">24.760046</td> +<td align="right">29.80</td> +</tr> +<tr class="odd"> +<td align="right">35.371494</td> +<td align="right">19.60</td> +</tr> +<tr class="even"> +<td align="right">68.384889</td> +<td align="right">5.67</td> +</tr> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">97.90</td> +</tr> +<tr class="even"> +<td align="right">1.179050</td> +<td align="right">96.40</td> +</tr> +<tr class="odd"> +<td align="right">3.537149</td> +<td align="right">89.10</td> +</tr> +<tr class="even"> +<td align="right">7.074299</td> +<td align="right">74.40</td> +</tr> +<tr class="odd"> +<td align="right">10.611448</td> +<td align="right">57.40</td> +</tr> +<tr class="even"> +<td align="right">15.327647</td> +<td align="right">46.30</td> +</tr> +<tr class="odd"> +<td align="right">18.864797</td> +<td align="right">35.50</td> +</tr> +<tr class="even"> +<td align="right">27.118146</td> +<td align="right">27.20</td> +</tr> +<tr class="odd"> +<td align="right">35.371494</td> +<td align="right">19.10</td> +</tr> +<tr class="even"> +<td align="right">74.280138</td> +<td align="right">6.50</td> +</tr> +<tr class="odd"> +<td align="right">108.472582</td> +<td align="right">3.40</td> +</tr> +<tr class="even"> +<td align="right">142.665027</td> +<td align="right">2.20</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Richmond 2</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">96.0</td> +</tr> +<tr class="even"> +<td align="right">2.422004</td> +<td align="right">82.4</td> +</tr> +<tr class="odd"> +<td align="right">5.651343</td> +<td align="right">71.2</td> +</tr> +<tr class="even"> +<td align="right">8.073348</td> +<td align="right">53.1</td> +</tr> +<tr class="odd"> +<td align="right">11.302687</td> +<td align="right">48.5</td> +</tr> +<tr class="even"> +<td align="right">16.954030</td> +<td align="right">33.4</td> +</tr> +<tr class="odd"> +<td align="right">22.605373</td> +<td align="right">24.2</td> +</tr> +<tr class="even"> +<td align="right">45.210746</td> +<td align="right">11.9</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset ERTC</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">99.9</td> +</tr> +<tr class="even"> +<td align="right">2.755193</td> +<td align="right">80.0</td> +</tr> +<tr class="odd"> +<td align="right">6.428782</td> +<td align="right">42.1</td> +</tr> +<tr class="even"> +<td align="right">9.183975</td> +<td align="right">50.1</td> +</tr> +<tr class="odd"> +<td align="right">12.857565</td> +<td align="right">28.4</td> +</tr> +<tr class="even"> +<td align="right">19.286347</td> +<td align="right">39.8</td> +</tr> +<tr class="odd"> +<td align="right">25.715130</td> +<td align="right">29.9</td> +</tr> +<tr class="even"> +<td align="right">51.430259</td> +<td align="right">2.5</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Toulouse</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">96.8</td> +</tr> +<tr class="even"> +<td align="right">2.897983</td> +<td align="right">63.3</td> +</tr> +<tr class="odd"> +<td align="right">6.761960</td> +<td align="right">22.3</td> +</tr> +<tr class="even"> +<td align="right">9.659942</td> +<td align="right">16.6</td> +</tr> +<tr class="odd"> +<td align="right">13.523919</td> +<td align="right">16.1</td> +</tr> +<tr class="even"> +<td align="right">20.285879</td> +<td align="right">17.2</td> +</tr> +<tr class="odd"> +<td align="right">27.047838</td> +<td align="right">1.8</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset Picket Piece</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">102.0</td> +</tr> +<tr class="even"> +<td align="right">2.841195</td> +<td align="right">73.7</td> +</tr> +<tr class="odd"> +<td align="right">6.629454</td> +<td align="right">35.5</td> +</tr> +<tr class="even"> +<td align="right">9.470649</td> +<td align="right">31.8</td> +</tr> +<tr class="odd"> +<td align="right">13.258909</td> +<td align="right">18.0</td> +</tr> +<tr class="even"> +<td align="right">19.888364</td> +<td align="right">3.7</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 721</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">86.4</td> +</tr> +<tr class="even"> +<td align="right">11.24366</td> +<td align="right">61.4</td> +</tr> +<tr class="odd"> +<td align="right">22.48733</td> +<td align="right">49.8</td> +</tr> +<tr class="even"> +<td align="right">33.73099</td> +<td align="right">41.0</td> +</tr> +<tr class="odd"> +<td align="right">44.97466</td> +<td align="right">35.1</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 722</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">90.3</td> +</tr> +<tr class="even"> +<td align="right">11.24366</td> +<td align="right">52.1</td> +</tr> +<tr class="odd"> +<td align="right">22.48733</td> +<td align="right">37.4</td> +</tr> +<tr class="even"> +<td align="right">33.73099</td> +<td align="right">21.2</td> +</tr> +<tr class="odd"> +<td align="right">44.97466</td> +<td align="right">14.3</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 723</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">89.3</td> +</tr> +<tr class="even"> +<td align="right">11.24366</td> +<td align="right">70.8</td> +</tr> +<tr class="odd"> +<td align="right">22.48733</td> +<td align="right">51.1</td> +</tr> +<tr class="even"> +<td align="right">33.73099</td> +<td align="right">42.7</td> +</tr> +<tr class="odd"> +<td align="right">44.97466</td> +<td align="right">26.7</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 724</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.000000</td> +<td align="right">89.4</td> +</tr> +<tr class="even"> +<td align="right">9.008208</td> +<td align="right">65.2</td> +</tr> +<tr class="odd"> +<td align="right">18.016415</td> +<td align="right">55.8</td> +</tr> +<tr class="even"> +<td align="right">27.024623</td> +<td align="right">46.0</td> +</tr> +<tr class="odd"> +<td align="right">36.032831</td> +<td align="right">41.7</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 725</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">89.0</td> +</tr> +<tr class="even"> +<td align="right">10.99058</td> +<td align="right">35.4</td> +</tr> +<tr class="odd"> +<td align="right">21.98116</td> +<td align="right">18.6</td> +</tr> +<tr class="even"> +<td align="right">32.97174</td> +<td align="right">11.6</td> +</tr> +<tr class="odd"> +<td align="right">43.96232</td> +<td align="right">7.6</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 727</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">91.3</td> +</tr> +<tr class="even"> +<td align="right">10.96104</td> +<td align="right">63.2</td> +</tr> +<tr class="odd"> +<td align="right">21.92209</td> +<td align="right">51.1</td> +</tr> +<tr class="even"> +<td align="right">32.88313</td> +<td align="right">42.0</td> +</tr> +<tr class="odd"> +<td align="right">43.84417</td> +<td align="right">40.8</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 728</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">91.8</td> +</tr> +<tr class="even"> +<td align="right">11.24366</td> +<td align="right">43.6</td> +</tr> +<tr class="odd"> +<td align="right">22.48733</td> +<td align="right">22.0</td> +</tr> +<tr class="even"> +<td align="right">33.73099</td> +<td align="right">15.9</td> +</tr> +<tr class="odd"> +<td align="right">44.97466</td> +<td align="right">8.8</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 729</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">91.6</td> +</tr> +<tr class="even"> +<td align="right">11.24366</td> +<td align="right">60.5</td> +</tr> +<tr class="odd"> +<td align="right">22.48733</td> +<td align="right">43.5</td> +</tr> +<tr class="even"> +<td align="right">33.73099</td> +<td align="right">28.4</td> +</tr> +<tr class="odd"> +<td align="right">44.97466</td> +<td align="right">20.5</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 730</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">92.7</td> +</tr> +<tr class="even"> +<td align="right">11.07446</td> +<td align="right">58.9</td> +</tr> +<tr class="odd"> +<td align="right">22.14893</td> +<td align="right">44.0</td> +</tr> +<tr class="even"> +<td align="right">33.22339</td> +<td align="right">46.0</td> +</tr> +<tr class="odd"> +<td align="right">44.29785</td> +<td align="right">29.3</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 731</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">92.1</td> +</tr> +<tr class="even"> +<td align="right">11.24366</td> +<td align="right">64.4</td> +</tr> +<tr class="odd"> +<td align="right">22.48733</td> +<td align="right">45.3</td> +</tr> +<tr class="even"> +<td align="right">33.73099</td> +<td align="right">33.6</td> +</tr> +<tr class="odd"> +<td align="right">44.97466</td> +<td align="right">23.5</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 732</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">90.3</td> +</tr> +<tr class="even"> +<td align="right">11.24366</td> +<td align="right">58.2</td> +</tr> +<tr class="odd"> +<td align="right">22.48733</td> +<td align="right">40.1</td> +</tr> +<tr class="even"> +<td align="right">33.73099</td> +<td align="right">33.1</td> +</tr> +<tr class="odd"> +<td align="right">44.97466</td> +<td align="right">25.8</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 741</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">90.3</td> +</tr> +<tr class="even"> +<td align="right">10.84712</td> +<td align="right">68.7</td> +</tr> +<tr class="odd"> +<td align="right">21.69424</td> +<td align="right">58.0</td> +</tr> +<tr class="even"> +<td align="right">32.54136</td> +<td align="right">52.2</td> +</tr> +<tr class="odd"> +<td align="right">43.38848</td> +<td align="right">48.0</td> +</tr> +</tbody> +</table> +<table class="table"> +<caption>Dataset 742</caption> +<thead><tr class="header"> +<th align="right">time</th> +<th align="right">meso</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="right">0.00000</td> +<td align="right">92.0</td> +</tr> +<tr class="even"> +<td align="right">11.24366</td> +<td align="right">60.9</td> +</tr> +<tr class="odd"> +<td align="right">22.48733</td> +<td align="right">36.2</td> +</tr> +<tr class="even"> +<td align="right">33.73099</td> +<td align="right">18.3</td> +</tr> +<tr class="odd"> +<td align="right">44.97466</td> +<td align="right">8.7</td> +</tr> +</tbody> +</table> +</div> +</div> +<div class="section level2"> +<h2 id="separate-evaluations">Separate evaluations<a class="anchor" aria-label="anchor" href="#separate-evaluations"></a> +</h2> +<p>In order to obtain suitable starting parameters for the NLHM fits, +separate fits of the five models to the data for each soil are generated +using the <code>mmkin</code> function from the mkin package. In a first +step, constant variance is assumed. Convergence is checked with the +<code>status</code> function.</p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">deg_mods</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span>, <span class="st">"SFORB"</span>, <span class="st">"HS"</span><span class="op">)</span></span> +<span><span class="va">f_sep_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span></span> +<span> <span class="va">deg_mods</span>,</span> +<span> <span class="va">meso_ds</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"const"</span>,</span> +<span> cluster <span class="op">=</span> <span class="va">cl</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">[</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">5</span><span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Richmond</th> +<th align="left">Richmond 2</th> +<th align="left">ERTC</th> +<th align="left">Toulouse</th> +<th align="left">Picket Piece</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">[</span>, <span class="fl">6</span><span class="op">:</span><span class="fl">18</span><span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<colgroup> +<col width="10%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +</colgroup> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">721</th> +<th align="left">722</th> +<th align="left">723</th> +<th align="left">724</th> +<th align="left">725</th> +<th align="left">727</th> +<th align="left">728</th> +<th align="left">729</th> +<th align="left">730</th> +<th align="left">731</th> +<th align="left">732</th> +<th align="left">741</th> +<th align="left">742</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>In the tables above, OK indicates convergence and C indicates failure +to converge. Most separate fits with constant variance converged, with +the exception of two FOMC fits, one SFORB fit and one HS fit.</p> +<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_sep_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_sep_const</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_tc</span><span class="op">[</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">5</span><span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">Richmond</th> +<th align="left">Richmond 2</th> +<th align="left">ERTC</th> +<th align="left">Toulouse</th> +<th align="left">Picket Piece</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_sep_tc</span><span class="op">[</span>, <span class="fl">6</span><span class="op">:</span><span class="fl">18</span><span class="op">]</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<colgroup> +<col width="10%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +<col width="6%"> +</colgroup> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">721</th> +<th align="left">722</th> +<th align="left">723</th> +<th align="left">724</th> +<th align="left">725</th> +<th align="left">727</th> +<th align="left">728</th> +<th align="left">729</th> +<th align="left">730</th> +<th align="left">731</th> +<th align="left">732</th> +<th align="left">741</th> +<th align="left">742</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">C</td> +<td align="left">OK</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>With the two-component error model, the set of fits that did not +converge is larger, with convergence problems appearing for a number of +non-SFO fits.</p> +</div> +<div class="section level2"> +<h2 id="hierarchical-model-fits-without-covariate-effect">Hierarchical model fits without covariate effect<a class="anchor" aria-label="anchor" href="#hierarchical-model-fits-without-covariate-effect"></a> +</h2> +<p>The following code fits hierarchical kinetic models for the ten +combinations of the five different degradation models with the two +different error models in parallel.</p> +<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mhmkin.html">mhmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">f_sep_const</span>, <span class="va">f_sep_tc</span><span class="op">)</span>, cluster <span class="op">=</span> <span class="va">cl</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>All fits terminate without errors (status OK).</p> +<div class="sourceCode" id="cb12"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO const</td> +<td align="right">5</td> +<td align="right">800.0</td> +<td align="right">804.5</td> +<td align="right">-395.0</td> +</tr> +<tr class="even"> +<td align="left">SFO tc</td> +<td align="right">6</td> +<td align="right">801.9</td> +<td align="right">807.2</td> +<td align="right">-394.9</td> +</tr> +<tr class="odd"> +<td align="left">FOMC const</td> +<td align="right">7</td> +<td align="right">787.4</td> +<td align="right">793.6</td> +<td align="right">-386.7</td> +</tr> +<tr class="even"> +<td align="left">FOMC tc</td> +<td align="right">8</td> +<td align="right">788.9</td> +<td align="right">796.1</td> +<td align="right">-386.5</td> +</tr> +<tr class="odd"> +<td align="left">DFOP const</td> +<td align="right">9</td> +<td align="right">787.6</td> +<td align="right">795.6</td> +<td align="right">-384.8</td> +</tr> +<tr class="even"> +<td align="left">SFORB const</td> +<td align="right">9</td> +<td align="right">787.4</td> +<td align="right">795.4</td> +<td align="right">-384.7</td> +</tr> +<tr class="odd"> +<td align="left">HS const</td> +<td align="right">9</td> +<td align="right">781.9</td> +<td align="right">789.9</td> +<td align="right">-382.0</td> +</tr> +<tr class="even"> +<td align="left">DFOP tc</td> +<td align="right">10</td> +<td align="right">787.4</td> +<td align="right">796.3</td> +<td align="right">-383.7</td> +</tr> +<tr class="odd"> +<td align="left">SFORB tc</td> +<td align="right">10</td> +<td align="right">795.8</td> +<td align="right">804.7</td> +<td align="right">-387.9</td> +</tr> +<tr class="even"> +<td align="left">HS tc</td> +<td align="right">10</td> +<td align="right">783.7</td> +<td align="right">792.7</td> +<td align="right">-381.9</td> +</tr> +</tbody> +</table> +<p>The model comparisons show that the fits with constant variance are +consistently preferable to the corresponding fits with two-component +error for these data. This is confirmed by the fact that the parameter +<code>b.1</code> (the relative standard deviation in the fits obtained +with the saemix package), is ill-defined in all fits.</p> +<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<colgroup> +<col width="6%"> +<col width="44%"> +<col width="49%"> +</colgroup> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">sd(meso_0)</td> +<td align="left">sd(meso_0), b.1</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">sd(meso_0), sd(log_beta)</td> +<td align="left">sd(meso_0), sd(log_beta), b.1</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">sd(meso_0), sd(log_k1)</td> +<td align="left">sd(meso_0), sd(g_qlogis), b.1</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">sd(meso_free_0), sd(log_k_meso_free_bound)</td> +<td align="left">sd(meso_free_0), sd(log_k_meso_free_bound), b.1</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">sd(meso_0)</td> +<td align="left">sd(meso_0), b.1</td> +</tr> +</tbody> +</table> +<p>For obtaining fits with only well-defined random effects, we update +the set of fits, excluding random effects that were ill-defined +according to the <code>illparms</code> function.</p> +<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_1</span>, no_random_effect <span class="op">=</span> <span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/status.html">status</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left">OK</td> +<td align="left">OK</td> +</tr> +</tbody> +</table> +<p>The updated fits terminate without errors.</p> +<div class="sourceCode" id="cb15"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="left">const</th> +<th align="left">tc</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left"></td> +<td align="left">b.1</td> +</tr> +<tr class="even"> +<td align="left">FOMC</td> +<td align="left"></td> +<td align="left">b.1</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left"></td> +<td align="left">b.1</td> +</tr> +<tr class="even"> +<td align="left">SFORB</td> +<td align="left"></td> +<td align="left">b.1</td> +</tr> +<tr class="odd"> +<td align="left">HS</td> +<td align="left"></td> +<td align="left">b.1</td> +</tr> +</tbody> +</table> +<p>No ill-defined errors remain in the fits with constant variance.</p> +</div> +<div class="section level2"> +<h2 id="hierarchical-model-fits-with-covariate-effect">Hierarchical model fits with covariate effect<a class="anchor" aria-label="anchor" href="#hierarchical-model-fits-with-covariate-effect"></a> +</h2> +<p>In the following sections, hierarchical fits including a model for +the influence of pH on selected degradation parameters are shown for all +parent models. Constant variance is selected as the error model based on +the fits without covariate effects. Random effects that were ill-defined +in the fits without pH influence are excluded. A potential influence of +the soil pH is only included for parameters with a well-defined random +effect, because experience has shown that only for such parameters a +significant pH effect could be found.</p> +<div class="section level3"> +<h3 id="sfo">SFO<a class="anchor" aria-label="anchor" href="#sfo"></a> +</h3> +<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">sfo_pH</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span>, no_random_effect <span class="op">=</span> <span class="st">"meso_0"</span>, covariates <span class="op">=</span> <span class="va">pH</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">log_k_meso</span> <span class="op">~</span> <span class="va">pH</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb17"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">sfo_pH</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_0</td> +<td align="right">91.35</td> +<td align="right">89.27</td> +<td align="right">93.43</td> +</tr> +<tr class="even"> +<td align="left">log_k_meso</td> +<td align="right">-6.66</td> +<td align="right">-7.97</td> +<td align="right">-5.35</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_k_meso)</td> +<td align="right">0.59</td> +<td align="right">0.37</td> +<td align="right">0.81</td> +</tr> +<tr class="even"> +<td align="left">a.1</td> +<td align="right">5.48</td> +<td align="right">4.71</td> +<td align="right">6.24</td> +</tr> +<tr class="odd"> +<td align="left">SD.log_k_meso</td> +<td align="right">0.35</td> +<td align="right">0.23</td> +<td align="right">0.47</td> +</tr> +</tbody> +</table> +<p>The parameter showing the pH influence in the above table is +<code>beta_pH(log_k_meso)</code>. Its confidence interval does not +include zero, indicating that the influence of soil pH on the log of the +degradation rate constant is significantly greater than zero.</p> +<div class="sourceCode" id="cb18"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"SFO"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span>, <span class="va">sfo_pH</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code>Data: 116 observations of 1 variable(s) grouped in 18 datasets + + npar AIC BIC Lik Chisq Df Pr(>Chisq) +f_saem_2[["SFO", "const"]] 4 797.56 801.12 -394.78 +sfo_pH 5 783.09 787.54 -386.54 16.473 1 4.934e-05 *** +--- +Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1</code></pre> +<p>The comparison with the SFO fit without covariate effect confirms +that considering the soil pH improves the model, both by comparison of +AIC and BIC and by the likelihood ratio test.</p> +<div class="sourceCode" id="cb20"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">sfo_pH</span><span class="op">)</span></span></code></pre></div> +<p><img src="2023_mesotrione_parent_files/figure-html/unnamed-chunk-8-1.png" width="700" style="display: block; margin: auto;"></p> +<p>Endpoints for a model with covariates are by default calculated for +the median of the covariate values. This quantile can be adapted, or a +specific covariate value can be given as shown below.</p> +<div class="sourceCode" id="cb21"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">sfo_pH</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +50% 5.75 + +$distimes + DT50 DT90 +meso 18.52069 61.52441</code></pre> +<div class="sourceCode" id="cb23"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">sfo_pH</span>, covariate_quantile <span class="op">=</span> <span class="fl">0.9</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +90% 7.13 + +$distimes + DT50 DT90 +meso 8.237019 27.36278</code></pre> +<div class="sourceCode" id="cb25"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">sfo_pH</span>, covariates <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>pH <span class="op">=</span> <span class="fl">7.0</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +User 7 + +$distimes + DT50 DT90 +meso 8.89035 29.5331</code></pre> +</div> +<div class="section level3"> +<h3 id="fomc">FOMC<a class="anchor" aria-label="anchor" href="#fomc"></a> +</h3> +<div class="sourceCode" id="cb27"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">fomc_pH</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">[</span><span class="st">"FOMC"</span>, <span class="op">]</span>, no_random_effect <span class="op">=</span> <span class="st">"meso_0"</span>, covariates <span class="op">=</span> <span class="va">pH</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">log_alpha</span> <span class="op">~</span> <span class="va">pH</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb28"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fomc_pH</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_0</td> +<td align="right">92.84</td> +<td align="right">90.75</td> +<td align="right">94.93</td> +</tr> +<tr class="even"> +<td align="left">log_alpha</td> +<td align="right">-2.21</td> +<td align="right">-3.49</td> +<td align="right">-0.92</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_alpha)</td> +<td align="right">0.58</td> +<td align="right">0.37</td> +<td align="right">0.79</td> +</tr> +<tr class="even"> +<td align="left">log_beta</td> +<td align="right">4.21</td> +<td align="right">3.44</td> +<td align="right">4.99</td> +</tr> +<tr class="odd"> +<td align="left">a.1</td> +<td align="right">5.03</td> +<td align="right">4.32</td> +<td align="right">5.73</td> +</tr> +<tr class="even"> +<td align="left">SD.log_alpha</td> +<td align="right">0.00</td> +<td align="right">-23.77</td> +<td align="right">23.78</td> +</tr> +<tr class="odd"> +<td align="left">SD.log_beta</td> +<td align="right">0.37</td> +<td align="right">0.01</td> +<td align="right">0.74</td> +</tr> +</tbody> +</table> +<p>As in the case of SFO, the confidence interval of the slope parameter +(here <code>beta_pH(log_alpha)</code>) quantifying the influence of soil +pH does not include zero, and the model comparison clearly indicates +that the model with covariate influence is preferable. However, the +random effect for <code>alpha</code> is not well-defined any more after +inclusion of the covariate effect (the confidence interval of +<code>SD.log_alpha</code> includes zero).</p> +<div class="sourceCode" id="cb29"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">fomc_pH</span><span class="op">)</span></span></code></pre></div> +<pre><code>[1] "sd(log_alpha)"</code></pre> +<p>Therefore, the model is updated without this random effect, and no +ill-defined parameters remain.</p> +<div class="sourceCode" id="cb31"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">fomc_pH_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">fomc_pH</span>, no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"meso_0"</span>, <span class="st">"log_alpha"</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">fomc_pH_2</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb32"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"FOMC"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span>, <span class="va">fomc_pH</span>, <span class="va">fomc_pH_2</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code>Data: 116 observations of 1 variable(s) grouped in 18 datasets + + npar AIC BIC Lik Chisq Df Pr(>Chisq) +f_saem_2[["FOMC", "const"]] 5 783.25 787.71 -386.63 +fomc_pH_2 6 767.49 772.83 -377.75 17.762 1 2.503e-05 *** +fomc_pH 7 770.07 776.30 -378.04 0.000 1 1 +--- +Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1</code></pre> +<p>Model comparison indicates that including pH dependence significantly +improves the fit, and that the reduced model with covariate influence +results in the most preferable FOMC fit.</p> +<div class="sourceCode" id="cb34"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fomc_pH_2</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_0</td> +<td align="right">93.05</td> +<td align="right">90.98</td> +<td align="right">95.13</td> +</tr> +<tr class="even"> +<td align="left">log_alpha</td> +<td align="right">-2.91</td> +<td align="right">-4.18</td> +<td align="right">-1.63</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_alpha)</td> +<td align="right">0.66</td> +<td align="right">0.44</td> +<td align="right">0.87</td> +</tr> +<tr class="even"> +<td align="left">log_beta</td> +<td align="right">3.95</td> +<td align="right">3.29</td> +<td align="right">4.62</td> +</tr> +<tr class="odd"> +<td align="left">a.1</td> +<td align="right">4.98</td> +<td align="right">4.28</td> +<td align="right">5.68</td> +</tr> +<tr class="even"> +<td align="left">SD.log_beta</td> +<td align="right">0.40</td> +<td align="right">0.26</td> +<td align="right">0.54</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb35"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fomc_pH_2</span><span class="op">)</span></span></code></pre></div> +<p><img src="2023_mesotrione_parent_files/figure-html/unnamed-chunk-14-1.png" width="700" style="display: block; margin: auto;"></p> +<div class="sourceCode" id="cb36"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fomc_pH_2</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +50% 5.75 + +$distimes + DT50 DT90 DT50back +meso 17.30248 82.91343 24.95943</code></pre> +<div class="sourceCode" id="cb38"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fomc_pH_2</span>, covariates <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>pH <span class="op">=</span> <span class="fl">7</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +User 7 + +$distimes + DT50 DT90 DT50back +meso 6.986239 27.02927 8.136621</code></pre> +</div> +<div class="section level3"> +<h3 id="dfop">DFOP<a class="anchor" aria-label="anchor" href="#dfop"></a> +</h3> +<p>In the DFOP fits without covariate effects, random effects for two +degradation parameters (<code>k2</code> and <code>g</code>) were +identifiable.</p> +<div class="sourceCode" id="cb40"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"DFOP"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_0</td> +<td align="right">93.61</td> +<td align="right">91.58</td> +<td align="right">95.63</td> +</tr> +<tr class="even"> +<td align="left">log_k1</td> +<td align="right">-1.53</td> +<td align="right">-2.27</td> +<td align="right">-0.79</td> +</tr> +<tr class="odd"> +<td align="left">log_k2</td> +<td align="right">-3.42</td> +<td align="right">-3.73</td> +<td align="right">-3.11</td> +</tr> +<tr class="even"> +<td align="left">g_qlogis</td> +<td align="right">-1.67</td> +<td align="right">-2.57</td> +<td align="right">-0.77</td> +</tr> +<tr class="odd"> +<td align="left">a.1</td> +<td align="right">4.74</td> +<td align="right">4.02</td> +<td align="right">5.45</td> +</tr> +<tr class="even"> +<td align="left">SD.log_k2</td> +<td align="right">0.60</td> +<td align="right">0.38</td> +<td align="right">0.81</td> +</tr> +<tr class="odd"> +<td align="left">SD.g_qlogis</td> +<td align="right">0.94</td> +<td align="right">0.33</td> +<td align="right">1.54</td> +</tr> +</tbody> +</table> +<p>A fit with pH dependent degradation parameters was obtained by +excluding the same random effects as in the refined DFOP fit without +covariate influence, and including covariate models for the two +identifiable parameters <code>k2</code> and <code>g</code>.</p> +<div class="sourceCode" id="cb41"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">dfop_pH</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span>, no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"meso_0"</span>, <span class="st">"log_k1"</span><span class="op">)</span>,</span> +<span> covariates <span class="op">=</span> <span class="va">pH</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">log_k2</span> <span class="op">~</span> <span class="va">pH</span>, <span class="va">g_qlogis</span> <span class="op">~</span> <span class="va">pH</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<p>The corresponding parameters for the influence of soil pH are +<code>beta_pH(log_k2)</code> for the influence of soil pH on +<code>k2</code>, and <code>beta_pH(g_qlogis)</code> for its influence on +<code>g</code>.</p> +<div class="sourceCode" id="cb42"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">dfop_pH</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_0</td> +<td align="right">92.84</td> +<td align="right">90.85</td> +<td align="right">94.84</td> +</tr> +<tr class="even"> +<td align="left">log_k1</td> +<td align="right">-2.82</td> +<td align="right">-3.09</td> +<td align="right">-2.54</td> +</tr> +<tr class="odd"> +<td align="left">log_k2</td> +<td align="right">-11.48</td> +<td align="right">-15.32</td> +<td align="right">-7.64</td> +</tr> +<tr class="even"> +<td align="left">beta_pH(log_k2)</td> +<td align="right">1.31</td> +<td align="right">0.69</td> +<td align="right">1.92</td> +</tr> +<tr class="odd"> +<td align="left">g_qlogis</td> +<td align="right">3.13</td> +<td align="right">0.47</td> +<td align="right">5.80</td> +</tr> +<tr class="even"> +<td align="left">beta_pH(g_qlogis)</td> +<td align="right">-0.57</td> +<td align="right">-1.04</td> +<td align="right">-0.09</td> +</tr> +<tr class="odd"> +<td align="left">a.1</td> +<td align="right">4.96</td> +<td align="right">4.26</td> +<td align="right">5.65</td> +</tr> +<tr class="even"> +<td align="left">SD.log_k2</td> +<td align="right">0.76</td> +<td align="right">0.47</td> +<td align="right">1.05</td> +</tr> +<tr class="odd"> +<td align="left">SD.g_qlogis</td> +<td align="right">0.01</td> +<td align="right">-9.96</td> +<td align="right">9.97</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb43"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">dfop_pH</span><span class="op">)</span></span></code></pre></div> +<pre><code>[1] "sd(g_qlogis)"</code></pre> +<p>Confidence intervals for neither of them include zero, indicating a +significant difference from zero. However, the random effect for +<code>g</code> is now ill-defined. The fit is updated without this +ill-defined random effect.</p> +<div class="sourceCode" id="cb45"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">dfop_pH_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">dfop_pH</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"meso_0"</span>, <span class="st">"log_k1"</span>, <span class="st">"g_qlogis"</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">dfop_pH_2</span><span class="op">)</span></span></code></pre></div> +<pre><code>[1] "beta_pH(g_qlogis)"</code></pre> +<p>Now, the slope parameter for the pH effect on <code>g</code> is +ill-defined. Therefore, another attempt is made without the +corresponding covariate model.</p> +<div class="sourceCode" id="cb47"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">dfop_pH_3</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span>, no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"meso_0"</span>, <span class="st">"log_k1"</span><span class="op">)</span>,</span> +<span> covariates <span class="op">=</span> <span class="va">pH</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">log_k2</span> <span class="op">~</span> <span class="va">pH</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">dfop_pH_3</span><span class="op">)</span></span></code></pre></div> +<pre><code>[1] "sd(g_qlogis)"</code></pre> +<p>As the random effect for <code>g</code> is again ill-defined, the fit +is repeated without it.</p> +<div class="sourceCode" id="cb49"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">dfop_pH_4</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">dfop_pH_3</span>, no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"meso_0"</span>, <span class="st">"log_k1"</span>, <span class="st">"g_qlogis"</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">dfop_pH_4</span><span class="op">)</span></span></code></pre></div> +<p>While no ill-defined parameters remain, model comparison suggests +that the previous model <code>dfop_pH_2</code> with two pH dependent +parameters is preferable, based on information criteria as well as based +on the likelihood ratio test.</p> +<div class="sourceCode" id="cb50"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"DFOP"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span>, <span class="va">dfop_pH</span>, <span class="va">dfop_pH_2</span>, <span class="va">dfop_pH_3</span>, <span class="va">dfop_pH_4</span><span class="op">)</span></span></code></pre></div> +<pre><code>Data: 116 observations of 1 variable(s) grouped in 18 datasets + + npar AIC BIC Lik +f_saem_2[["DFOP", "const"]] 7 782.94 789.18 -384.47 +dfop_pH_4 7 767.35 773.58 -376.68 +dfop_pH_2 8 765.14 772.26 -374.57 +dfop_pH_3 8 769.00 776.12 -376.50 +dfop_pH 9 769.10 777.11 -375.55</code></pre> +<div class="sourceCode" id="cb52"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">dfop_pH_2</span>, <span class="va">dfop_pH_4</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code>Data: 116 observations of 1 variable(s) grouped in 18 datasets + + npar AIC BIC Lik Chisq Df Pr(>Chisq) +dfop_pH_4 7 767.35 773.58 -376.68 +dfop_pH_2 8 765.14 772.26 -374.57 4.2153 1 0.04006 * +--- +Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1</code></pre> +<p>When focussing on parameter identifiability using the test if the +confidence interval includes zero, <code>dfop_pH_4</code> would still be +the preferred model. However, it should be kept in mind that parameter +confidence intervals are constructed using a simple linearisation of the +likelihood. As the confidence interval of the random effect for +<code>g</code> only marginally includes zero, it is suggested that this +is acceptable, and that <code>dfop_pH_2</code> can be considered the +most preferable model.</p> +<div class="sourceCode" id="cb54"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">dfop_pH_2</span><span class="op">)</span></span></code></pre></div> +<p><img src="2023_mesotrione_parent_files/figure-html/unnamed-chunk-19-1.png" width="700" style="display: block; margin: auto;"></p> +<div class="sourceCode" id="cb55"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">dfop_pH_2</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +50% 5.75 + +$distimes + DT50 DT90 DT50back DT50_k1 DT50_k2 +meso 18.36876 73.51841 22.13125 4.191901 23.98672</code></pre> +<div class="sourceCode" id="cb57"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">dfop_pH_2</span>, covariates <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>pH <span class="op">=</span> <span class="fl">7</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +User 7 + +$distimes + DT50 DT90 DT50back DT50_k1 DT50_k2 +meso 8.346428 28.34437 8.532507 4.191901 8.753618</code></pre> +</div> +<div class="section level3"> +<h3 id="sforb">SFORB<a class="anchor" aria-label="anchor" href="#sforb"></a> +</h3> +<div class="sourceCode" id="cb59"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">sforb_pH</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">[</span><span class="st">"SFORB"</span>, <span class="op">]</span>, no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"meso_free_0"</span>, <span class="st">"log_k_meso_free_bound"</span><span class="op">)</span>,</span> +<span> covariates <span class="op">=</span> <span class="va">pH</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">log_k_meso_free</span> <span class="op">~</span> <span class="va">pH</span>, <span class="va">log_k_meso_bound_free</span> <span class="op">~</span> <span class="va">pH</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb60"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">sforb_pH</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_free_0</td> +<td align="right">93.42</td> +<td align="right">91.32</td> +<td align="right">95.52</td> +</tr> +<tr class="even"> +<td align="left">log_k_meso_free</td> +<td align="right">-5.37</td> +<td align="right">-6.94</td> +<td align="right">-3.81</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_k_meso_free)</td> +<td align="right">0.42</td> +<td align="right">0.18</td> +<td align="right">0.67</td> +</tr> +<tr class="even"> +<td align="left">log_k_meso_free_bound</td> +<td align="right">-3.49</td> +<td align="right">-4.92</td> +<td align="right">-2.05</td> +</tr> +<tr class="odd"> +<td align="left">log_k_meso_bound_free</td> +<td align="right">-9.98</td> +<td align="right">-19.22</td> +<td align="right">-0.74</td> +</tr> +<tr class="even"> +<td align="left">beta_pH(log_k_meso_bound_free)</td> +<td align="right">1.23</td> +<td align="right">-0.21</td> +<td align="right">2.67</td> +</tr> +<tr class="odd"> +<td align="left">a.1</td> +<td align="right">4.90</td> +<td align="right">4.18</td> +<td align="right">5.63</td> +</tr> +<tr class="even"> +<td align="left">SD.log_k_meso_free</td> +<td align="right">0.35</td> +<td align="right">0.23</td> +<td align="right">0.47</td> +</tr> +<tr class="odd"> +<td align="left">SD.log_k_meso_bound_free</td> +<td align="right">0.13</td> +<td align="right">-1.95</td> +<td align="right">2.20</td> +</tr> +</tbody> +</table> +<p>The confidence interval of +<code>beta_pH(log_k_meso_bound_free)</code> includes zero, indicating +that the influence of soil pH on <code>k_meso_bound_free</code> cannot +reliably be quantified. Also, the confidence interval for the random +effect on this parameter (<code>SD.log_k_meso_bound_free</code>) +includes zero.</p> +<p>Using the <code>illparms</code> function, these ill-defined +parameters can be found more conveniently.</p> +<div class="sourceCode" id="cb61"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">sforb_pH</span><span class="op">)</span></span></code></pre></div> +<pre><code>[1] "sd(log_k_meso_bound_free)" "beta_pH(log_k_meso_bound_free)"</code></pre> +<p>To remove the ill-defined parameters, a second variant of the SFORB +model with pH influence is fitted. No ill-defined parameters remain.</p> +<div class="sourceCode" id="cb63"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">sforb_pH_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">sforb_pH</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"meso_free_0"</span>, <span class="st">"log_k_meso_free_bound"</span>, <span class="st">"log_k_meso_bound_free"</span><span class="op">)</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">log_k_meso_free</span> <span class="op">~</span> <span class="va">pH</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">sforb_pH_2</span><span class="op">)</span></span></code></pre></div> +<p>The model comparison of the SFORB fits includes the refined model +without covariate effect, and both versions of the SFORB fit with +covariate effect.</p> +<div class="sourceCode" id="cb64"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"SFORB"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span>, <span class="va">sforb_pH</span>, <span class="va">sforb_pH_2</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code>Data: 116 observations of 1 variable(s) grouped in 18 datasets + + npar AIC BIC Lik Chisq Df Pr(>Chisq) +f_saem_2[["SFORB", "const"]] 7 783.40 789.63 -384.70 +sforb_pH_2 7 770.94 777.17 -378.47 12.4616 0 +sforb_pH 9 768.81 776.83 -375.41 6.1258 2 0.04675 * +--- +Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1</code></pre> +<p>The first model including pH influence is preferable based on +information criteria and the likelihood ratio test. However, as it is +not fully identifiable, the second model is selected.</p> +<div class="sourceCode" id="cb66"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">sforb_pH_2</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_free_0</td> +<td align="right">93.32</td> +<td align="right">91.16</td> +<td align="right">95.48</td> +</tr> +<tr class="even"> +<td align="left">log_k_meso_free</td> +<td align="right">-6.15</td> +<td align="right">-7.43</td> +<td align="right">-4.86</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_k_meso_free)</td> +<td align="right">0.54</td> +<td align="right">0.33</td> +<td align="right">0.75</td> +</tr> +<tr class="even"> +<td align="left">log_k_meso_free_bound</td> +<td align="right">-3.80</td> +<td align="right">-5.20</td> +<td align="right">-2.40</td> +</tr> +<tr class="odd"> +<td align="left">log_k_meso_bound_free</td> +<td align="right">-2.95</td> +<td align="right">-4.26</td> +<td align="right">-1.64</td> +</tr> +<tr class="even"> +<td align="left">a.1</td> +<td align="right">5.08</td> +<td align="right">4.38</td> +<td align="right">5.79</td> +</tr> +<tr class="odd"> +<td align="left">SD.log_k_meso_free</td> +<td align="right">0.33</td> +<td align="right">0.22</td> +<td align="right">0.45</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb67"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">sforb_pH_2</span><span class="op">)</span></span></code></pre></div> +<p><img src="2023_mesotrione_parent_files/figure-html/unnamed-chunk-25-1.png" width="700" style="display: block; margin: auto;"></p> +<div class="sourceCode" id="cb68"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">sforb_pH_2</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +50% 5.75 + +$ff +meso_free + 1 + +$SFORB + meso_b1 meso_b2 meso_g +0.09735824 0.02631699 0.31602120 + +$distimes + DT50 DT90 DT50back DT50_meso_b1 DT50_meso_b2 +meso 16.86549 73.15824 22.02282 7.119554 26.33839</code></pre> +<div class="sourceCode" id="cb70"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">sforb_pH_2</span>, covariates <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>pH <span class="op">=</span> <span class="fl">7</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +User 7 + +$ff +meso_free + 1 + +$SFORB + meso_b1 meso_b2 meso_g +0.13315233 0.03795988 0.61186191 + +$distimes + DT50 DT90 DT50back DT50_meso_b1 DT50_meso_b2 +meso 7.932495 36.93311 11.11797 5.205671 18.26</code></pre> +</div> +<div class="section level3"> +<h3 id="hs">HS<a class="anchor" aria-label="anchor" href="#hs"></a> +</h3> +<div class="sourceCode" id="cb72"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">hs_pH</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_sep_const</span><span class="op">[</span><span class="st">"HS"</span>, <span class="op">]</span>, no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"meso_0"</span><span class="op">)</span>,</span> +<span> covariates <span class="op">=</span> <span class="va">pH</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">log_k1</span> <span class="op">~</span> <span class="va">pH</span>, <span class="va">log_k2</span> <span class="op">~</span> <span class="va">pH</span>, <span class="va">log_tb</span> <span class="op">~</span> <span class="va">pH</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb73"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">hs_pH</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_0</td> +<td align="right">93.33</td> +<td align="right">91.47</td> +<td align="right">95.19</td> +</tr> +<tr class="even"> +<td align="left">log_k1</td> +<td align="right">-5.81</td> +<td align="right">-7.27</td> +<td align="right">-4.36</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_k1)</td> +<td align="right">0.47</td> +<td align="right">0.23</td> +<td align="right">0.72</td> +</tr> +<tr class="even"> +<td align="left">log_k2</td> +<td align="right">-6.80</td> +<td align="right">-8.76</td> +<td align="right">-4.83</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_k2)</td> +<td align="right">0.54</td> +<td align="right">0.21</td> +<td align="right">0.87</td> +</tr> +<tr class="even"> +<td align="left">log_tb</td> +<td align="right">3.25</td> +<td align="right">1.25</td> +<td align="right">5.25</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_tb)</td> +<td align="right">-0.10</td> +<td align="right">-0.43</td> +<td align="right">0.23</td> +</tr> +<tr class="even"> +<td align="left">a.1</td> +<td align="right">4.49</td> +<td align="right">3.78</td> +<td align="right">5.21</td> +</tr> +<tr class="odd"> +<td align="left">SD.log_k1</td> +<td align="right">0.37</td> +<td align="right">0.24</td> +<td align="right">0.51</td> +</tr> +<tr class="even"> +<td align="left">SD.log_k2</td> +<td align="right">0.29</td> +<td align="right">0.10</td> +<td align="right">0.48</td> +</tr> +<tr class="odd"> +<td align="left">SD.log_tb</td> +<td align="right">0.25</td> +<td align="right">-0.07</td> +<td align="right">0.57</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb74"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">hs_pH</span><span class="op">)</span></span></code></pre></div> +<pre><code>[1] "sd(log_tb)" "beta_pH(log_tb)"</code></pre> +<p>According to the output of the <code>illparms</code> function, the +random effect on the break time <code>tb</code> cannot reliably be +quantified, neither can the influence of soil pH on <code>tb</code>. The +fit is repeated without the corresponding covariate model, and no +ill-defined parameters remain.</p> +<div class="sourceCode" id="cb76"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">hs_pH_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">hs_pH</span>, covariate_models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">log_k1</span> <span class="op">~</span> <span class="va">pH</span>, <span class="va">log_k2</span> <span class="op">~</span> <span class="va">pH</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">hs_pH_2</span><span class="op">)</span></span></code></pre></div> +<p>Model comparison confirms that this model is preferable to the fit +without covariate influence, and also to the first version with +covariate influence.</p> +<div class="sourceCode" id="cb77"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"HS"</span>, <span class="st">"const"</span><span class="op">]</span><span class="op">]</span>, <span class="va">hs_pH</span>, <span class="va">hs_pH_2</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code>Data: 116 observations of 1 variable(s) grouped in 18 datasets + + npar AIC BIC Lik Chisq Df Pr(>Chisq) +f_saem_2[["HS", "const"]] 8 780.08 787.20 -382.04 +hs_pH_2 10 766.47 775.37 -373.23 17.606 2 0.0001503 *** +hs_pH 11 769.80 779.59 -373.90 0.000 1 1.0000000 +--- +Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1</code></pre> +<div class="sourceCode" id="cb79"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">hs_pH_2</span><span class="op">)</span><span class="op">$</span><span class="va">confint_trans</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>digits <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">est.</th> +<th align="right">lower</th> +<th align="right">upper</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">meso_0</td> +<td align="right">93.33</td> +<td align="right">91.50</td> +<td align="right">95.15</td> +</tr> +<tr class="even"> +<td align="left">log_k1</td> +<td align="right">-5.68</td> +<td align="right">-7.09</td> +<td align="right">-4.27</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_k1)</td> +<td align="right">0.46</td> +<td align="right">0.22</td> +<td align="right">0.69</td> +</tr> +<tr class="even"> +<td align="left">log_k2</td> +<td align="right">-6.61</td> +<td align="right">-8.34</td> +<td align="right">-4.88</td> +</tr> +<tr class="odd"> +<td align="left">beta_pH(log_k2)</td> +<td align="right">0.50</td> +<td align="right">0.21</td> +<td align="right">0.79</td> +</tr> +<tr class="even"> +<td align="left">log_tb</td> +<td align="right">2.70</td> +<td align="right">2.33</td> +<td align="right">3.08</td> +</tr> +<tr class="odd"> +<td align="left">a.1</td> +<td align="right">4.45</td> +<td align="right">3.74</td> +<td align="right">5.16</td> +</tr> +<tr class="even"> +<td align="left">SD.log_k1</td> +<td align="right">0.36</td> +<td align="right">0.22</td> +<td align="right">0.49</td> +</tr> +<tr class="odd"> +<td align="left">SD.log_k2</td> +<td align="right">0.23</td> +<td align="right">0.02</td> +<td align="right">0.43</td> +</tr> +<tr class="even"> +<td align="left">SD.log_tb</td> +<td align="right">0.55</td> +<td align="right">0.25</td> +<td align="right">0.85</td> +</tr> +</tbody> +</table> +<div class="sourceCode" id="cb80"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">hs_pH_2</span><span class="op">)</span></span></code></pre></div> +<p><img src="2023_mesotrione_parent_files/figure-html/unnamed-chunk-30-1.png" width="700" style="display: block; margin: auto;"></p> +<div class="sourceCode" id="cb81"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">hs_pH_2</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +50% 5.75 + +$distimes + DT50 DT90 DT50back DT50_k1 DT50_k2 +meso 14.68725 82.45287 24.82079 14.68725 29.29299</code></pre> +<div class="sourceCode" id="cb83"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">hs_pH_2</span>, covariates <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>pH <span class="op">=</span> <span class="fl">7</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +User 7 + +$distimes + DT50 DT90 DT50back DT50_k1 DT50_k2 +meso 8.298536 38.85371 11.69613 8.298536 15.71561</code></pre> +</div> +<div class="section level3"> +<h3 id="comparison-across-parent-models">Comparison across parent models<a class="anchor" aria-label="anchor" href="#comparison-across-parent-models"></a> +</h3> +<p>After model reduction for all models with pH influence, they are +compared with each other.</p> +<div class="sourceCode" id="cb85"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">sfo_pH</span>, <span class="va">fomc_pH_2</span>, <span class="va">dfop_pH_2</span>, <span class="va">dfop_pH_4</span>, <span class="va">sforb_pH_2</span>, <span class="va">hs_pH_2</span><span class="op">)</span></span></code></pre></div> +<pre><code>Data: 116 observations of 1 variable(s) grouped in 18 datasets + + npar AIC BIC Lik +sfo_pH 5 783.09 787.54 -386.54 +fomc_pH_2 6 767.49 772.83 -377.75 +dfop_pH_4 7 767.35 773.58 -376.68 +sforb_pH_2 7 770.94 777.17 -378.47 +dfop_pH_2 8 765.14 772.26 -374.57 +hs_pH_2 10 766.47 775.37 -373.23</code></pre> +<p>The DFOP model with pH influence on <code>k2</code> and +<code>g</code> and a random effect only on <code>k2</code> is finally +selected as the best fit.</p> +<p>The endpoints resulting from this model are listed below. Please +refer to the Appendix for a detailed listing.</p> +<div class="sourceCode" id="cb87"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">dfop_pH_2</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +50% 5.75 + +$distimes + DT50 DT90 DT50back DT50_k1 DT50_k2 +meso 18.36876 73.51841 22.13125 4.191901 23.98672</code></pre> +<div class="sourceCode" id="cb89"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">dfop_pH_2</span>, covariates <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>pH <span class="op">=</span> <span class="fl">7</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code>$covariates + pH +User 7 + +$distimes + DT50 DT90 DT50back DT50_k1 DT50_k2 +meso 8.346428 28.34437 8.532507 4.191901 8.753618</code></pre> +</div> +</div> +<div class="section level2"> +<h2 id="conclusions">Conclusions<a class="anchor" aria-label="anchor" href="#conclusions"></a> +</h2> +<p>These evaluations demonstrate that covariate effects can be included +for all types of parent degradation models. These models can then be +further refined to make them fully identifiable.</p> +</div> +<div class="section level2"> +<h2 id="appendix">Appendix<a class="anchor" aria-label="anchor" href="#appendix"></a> +</h2> +<div class="section level3"> +<h3 id="hierarchical-fit-listings">Hierarchical fit listings<a class="anchor" aria-label="anchor" href="#hierarchical-fit-listings"></a> +</h3> +<div class="section level4"> +<h4 id="fits-without-covariate-effects">Fits without covariate effects<a class="anchor" aria-label="anchor" href="#fits-without-covariate-effects"></a> +</h4> + +</div> +<div class="section level4"> +<h4 id="fits-with-covariate-effects">Fits with covariate effects<a class="anchor" aria-label="anchor" href="#fits-with-covariate-effects"></a> +</h4> + +</div> +</div> +<div class="section level3"> +<h3 id="session-info">Session info<a class="anchor" aria-label="anchor" href="#session-info"></a> +</h3> +<pre><code>R version 4.4.2 (2024-10-31) +Platform: x86_64-pc-linux-gnu +Running under: Debian GNU/Linux 12 (bookworm) + +Matrix products: default +BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 +LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 + +locale: + [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C + [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8 + [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 + [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C + [9] LC_ADDRESS=C LC_TELEPHONE=C +[11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C + +time zone: Europe/Berlin +tzcode source: system (glibc) + +attached base packages: +[1] parallel stats graphics grDevices utils datasets methods +[8] base + +other attached packages: +[1] rmarkdown_2.29 nvimcom_0.9-167 saemix_3.3 npde_3.5 +[5] knitr_1.49 mkin_1.2.10 + +loaded via a namespace (and not attached): + [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3 lattice_0.22-6 + [5] digest_0.6.37 magrittr_2.0.3 evaluate_1.0.1 grid_4.4.2 + [9] fastmap_1.2.0 cellranger_1.1.0 jsonlite_1.8.9 mclust_6.1.1 +[13] gridExtra_2.3 fansi_1.0.6 scales_1.3.0 codetools_0.2-20 +[17] textshaping_0.4.1 jquerylib_0.1.4 cli_3.6.3 rlang_1.1.4 +[21] munsell_0.5.1 cachem_1.1.0 yaml_2.3.10 tools_4.4.2 +[25] dplyr_1.1.4 colorspace_2.1-1 ggplot2_3.5.1 vctrs_0.6.5 +[29] R6_2.5.1 zoo_1.8-12 lifecycle_1.0.4 fs_1.6.5 +[33] htmlwidgets_1.6.4 MASS_7.3-61 ragg_1.3.3 pkgconfig_2.0.3 +[37] desc_1.4.3 pkgdown_2.1.1 pillar_1.9.0 bslib_0.8.0 +[41] gtable_0.3.6 glue_1.8.0 systemfonts_1.1.0 xfun_0.49 +[45] tibble_3.2.1 lmtest_0.9-40 tidyselect_1.2.1 htmltools_0.5.8.1 +[49] nlme_3.1-166 compiler_4.4.2 readxl_1.4.3 </code></pre> +</div> +<div class="section level3"> +<h3 id="hardware-info">Hardware info<a class="anchor" aria-label="anchor" href="#hardware-info"></a> +</h3> +<pre><code>CPU model: AMD Ryzen 9 7950X 16-Core Processor</code></pre> +<pre><code>MemTotal: 64927788 kB</code></pre> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-14-1.png b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-14-1.png Binary files differnew file mode 100644 index 00000000..719bf0e9 --- /dev/null +++ b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-14-1.png diff --git a/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-19-1.png b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-19-1.png Binary files differnew file mode 100644 index 00000000..6afcac48 --- /dev/null +++ b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-19-1.png diff --git a/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-25-1.png b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-25-1.png Binary files differnew file mode 100644 index 00000000..50253fb1 --- /dev/null +++ b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-25-1.png diff --git a/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-30-1.png b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-30-1.png Binary files differnew file mode 100644 index 00000000..c8b77724 --- /dev/null +++ b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-30-1.png diff --git a/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-8-1.png b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-8-1.png Binary files differnew file mode 100644 index 00000000..8fa204a3 --- /dev/null +++ b/docs/dev/articles/prebuilt/2023_mesotrione_parent_files/figure-html/unnamed-chunk-8-1.png diff --git a/docs/dev/articles/twa.html b/docs/dev/articles/twa.html new file mode 100644 index 00000000..1dea5c51 --- /dev/null +++ b/docs/dev/articles/twa.html @@ -0,0 +1,181 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Calculation of time weighted average concentrations with mkin • mkin</title> +<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Calculation of time weighted average concentrations with mkin"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Calculation of time weighted average concentrations with mkin</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 18 September 2019 +(rebuilt 2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/twa.rmd" class="external-link"><code>vignettes/twa.rmd</code></a></small> + <div class="d-none name"><code>twa.rmd</code></div> + </div> + + + +<p>Since version 0.9.45.1 of the ‘mkin’ package, a function for +calculating time weighted average concentrations for decline kinetics +(<em>i.e.</em> only for the compound applied in the experiment) is +included. Strictly speaking, they are maximum moving window time +weighted average concentrations, <em>i.e.</em> the maximum time weighted +average concentration that can be found when moving a time window of a +specified width over the decline curve.</p> +<p>Time weighted average concentrations for the SFO, FOMC and the DFOP +model are calculated using the formulas given in the FOCUS kinetics +guidance <span class="citation">(FOCUS Work Group on Degradation +Kinetics 2014, 251)</span>:</p> +<p>SFO:</p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>c</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><msub><mi>c</mi><mn>0</mn></msub><mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><mi>k</mi><mi>t</mi></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mrow><mi>k</mi><mi>t</mi></mrow></mfrac></mrow><annotation encoding="application/x-tex">c_\textrm{twa} = c_0 \frac{\left( 1 - e^{- k t} \right)}{ k t} </annotation></semantics></math></p> +<p>FOMC:</p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>c</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><msub><mi>c</mi><mn>0</mn></msub><mfrac><mi>β</mi><mrow><mi>t</mi><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="true" form="postfix">)</mo></mrow></mrow></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><msup><mrow><mo stretchy="true" form="prefix">(</mo><mfrac><mi>t</mi><mi>β</mi></mfrac><mo>+</mo><mn>1</mn><mo stretchy="true" form="postfix">)</mo></mrow><mrow><mn>1</mn><mo>−</mo><mi>α</mi></mrow></msup><mo>−</mo><mn>1</mn><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">c_\textrm{twa} = c_0 \frac{\beta}{t (1 - \alpha)} + \left( \left(\frac{t}{\beta} + 1 \right)^{1 - \alpha} - 1 \right) </annotation></semantics></math></p> +<p>DFOP:</p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>c</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><mfrac><msub><mi>c</mi><mn>0</mn></msub><mi>t</mi></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mfrac><mi>g</mi><msub><mi>k</mi><mn>1</mn></msub></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>1</mn></msub><mi>t</mi></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mo>+</mo><mfrac><mrow><mn>1</mn><mo>−</mo><mi>g</mi></mrow><msub><mi>k</mi><mn>2</mn></msub></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>2</mn></msub><mi>t</mi></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">c_\textrm{twa} = \frac{c_0}{t} \left( + \frac{g}{k_1} \left( 1 - e^{- k_1 t} \right) + + \frac{1-g}{k_2} \left( 1 - e^{- k_2 t} \right) \right) </annotation></semantics></math></p> +<p>HS for +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mo>></mo><msub><mi>t</mi><mi>b</mi></msub></mrow><annotation encoding="application/x-tex">t > t_b</annotation></semantics></math>:</p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>c</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><mfrac><msub><mi>c</mi><mn>0</mn></msub><mi>t</mi></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mfrac><mn>1</mn><msub><mi>k</mi><mn>1</mn></msub></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>1</mn></msub><msub><mi>t</mi><mi>b</mi></msub></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mo>+</mo><mfrac><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>1</mn></msub><msub><mi>t</mi><mi>b</mi></msub></mrow></msup><msub><mi>k</mi><mn>2</mn></msub></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>2</mn></msub><mrow><mo stretchy="true" form="prefix">(</mo><mi>t</mi><mo>−</mo><msub><mi>t</mi><mi>b</mi></msub><mo stretchy="true" form="postfix">)</mo></mrow></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">c_\textrm{twa} = \frac{c_0}{t} \left( + \frac{1}{k_1} \left( 1 - e^{- k_1 t_b} \right) + + \frac{e^{- k_1 t_b}}{k_2} \left( 1 - e^{- k_2 (t - t_b)} \right) \right) </annotation></semantics></math></p> +<p>Often, the ratio between the time weighted average concentration +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>c</mi><mtext mathvariant="normal">twa</mtext></msub><annotation encoding="application/x-tex">c_\textrm{twa}</annotation></semantics></math> +and the initial concentration +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>c</mi><mn>0</mn></msub><annotation encoding="application/x-tex">c_0</annotation></semantics></math></p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><mfrac><msub><mi>c</mi><mtext mathvariant="normal">twa</mtext></msub><msub><mi>c</mi><mn>0</mn></msub></mfrac></mrow><annotation encoding="application/x-tex">f_\textrm{twa} = \frac{c_\textrm{twa}}{c_0}</annotation></semantics></math></p> +<p>is needed. This can be calculated from the fitted initial +concentration +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>c</mi><mn>0</mn></msub><annotation encoding="application/x-tex">c_0</annotation></semantics></math> +and the time weighted average concentration +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>c</mi><mtext mathvariant="normal">twa</mtext></msub><annotation encoding="application/x-tex">c_\textrm{twa}</annotation></semantics></math>, +or directly from the model parameters using the following formulas:</p> +<p>SFO:</p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><mi>k</mi><mi>t</mi></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mrow><mi>k</mi><mi>t</mi></mrow></mfrac></mrow><annotation encoding="application/x-tex">f_\textrm{twa} = \frac{\left( 1 - e^{- k t} \right)}{k t} </annotation></semantics></math></p> +<p>FOMC:</p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><mfrac><mi>β</mi><mrow><mi>t</mi><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="true" form="postfix">)</mo></mrow></mrow></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><msup><mrow><mo stretchy="true" form="prefix">(</mo><mfrac><mi>t</mi><mi>β</mi></mfrac><mo>+</mo><mn>1</mn><mo stretchy="true" form="postfix">)</mo></mrow><mrow><mn>1</mn><mo>−</mo><mi>α</mi></mrow></msup><mo>−</mo><mn>1</mn><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">f_\textrm{twa} = \frac{\beta}{t (1 - \alpha)} + \left( \left(\frac{t}{\beta} + 1 \right)^{1 - \alpha} - 1 \right) </annotation></semantics></math></p> +<p>DFOP:</p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><mfrac><mn>1</mn><mi>t</mi></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mfrac><mi>g</mi><msub><mi>k</mi><mn>1</mn></msub></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>1</mn></msub><mi>t</mi></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mo>+</mo><mfrac><mrow><mn>1</mn><mo>−</mo><mi>g</mi></mrow><msub><mi>k</mi><mn>2</mn></msub></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>2</mn></msub><mi>t</mi></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">f_\textrm{twa} = \frac{1}{t} \left( + \frac{g}{k_1} \left( 1 - e^{- k_1 t} \right) + + \frac{1-g}{k_2} \left( 1 - e^{- k_2 t} \right) \right) </annotation></semantics></math></p> +<p>HS for +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mo>></mo><msub><mi>t</mi><mi>b</mi></msub></mrow><annotation encoding="application/x-tex">t > t_b</annotation></semantics></math>:</p> +<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mtext mathvariant="normal">twa</mtext></msub><mo>=</mo><mfrac><mn>1</mn><mi>t</mi></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mfrac><mn>1</mn><msub><mi>k</mi><mn>1</mn></msub></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>1</mn></msub><msub><mi>t</mi><mi>b</mi></msub></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mo>+</mo><mfrac><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>1</mn></msub><msub><mi>t</mi><mi>b</mi></msub></mrow></msup><msub><mi>k</mi><mn>2</mn></msub></mfrac><mrow><mo stretchy="true" form="prefix">(</mo><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mo>−</mo><msub><mi>k</mi><mn>2</mn></msub><mrow><mo stretchy="true" form="prefix">(</mo><mi>t</mi><mo>−</mo><msub><mi>t</mi><mi>b</mi></msub><mo stretchy="true" form="postfix">)</mo></mrow></mrow></msup><mo stretchy="true" form="postfix">)</mo></mrow><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">f_\textrm{twa} = \frac{1}{t} \left( + \frac{1}{k_1} \left( 1 - e^{- k_1 t_b} \right) + + \frac{e^{- k_1 t_b}}{k_2} \left( 1 - e^{- k_2 (t - t_b)} \right) \right) </annotation></semantics></math></p> +<p>Note that a method for calculating maximum moving window time +weighted average concentrations for a model fitted by ‘mkinfit’ or from +parent decline model parameters is included in the +<code><a href="../reference/max_twa_parent.html">max_twa_parent()</a></code> function. If the same is needed for +metabolites, the function <code><a href="https://pkgdown.jrwb.de/pfm/reference/max_twa.html" class="external-link">pfm::max_twa()</a></code> from the ‘pfm’ +package can be used.</p> +<div id="refs" class="references csl-bib-body hanging-indent"> +<div id="ref-FOCUSkinetics2014" class="csl-entry"> +FOCUS Work Group on Degradation Kinetics. 2014. <em>Generic Guidance for +Estimating Persistence and Degradation Kinetics from Environmental Fate +Studies on Pesticides in EU Registration</em>. 1.1 ed. <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a>. +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/web_only/FOCUS_Z.html b/docs/dev/articles/web_only/FOCUS_Z.html new file mode 100644 index 00000000..40ce9e01 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z.html @@ -0,0 +1,446 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Example evaluation of FOCUS dataset Z • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Example evaluation of FOCUS dataset Z"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Example evaluation of FOCUS dataset Z</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 16 January 2018 +(rebuilt 2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/web_only/FOCUS_Z.rmd" class="external-link"><code>vignettes/web_only/FOCUS_Z.rmd</code></a></small> + <div class="d-none name"><code>FOCUS_Z.rmd</code></div> + </div> + + + +<p><a href="http://www.jrwb.de" class="external-link">Wissenschaftlicher Berater, Kronacher +Str. 12, 79639 Grenzach-Wyhlen, Germany</a><br><a href="http://chem.uft.uni-bremen.de/ranke" class="external-link">Privatdozent at the +University of Bremen</a></p> +<div class="section level2"> +<h2 id="the-data">The data<a class="anchor" aria-label="anchor" href="#the-data"></a> +</h2> +<p>The following code defines the example dataset from Appendix 7 to the +FOCUS kinetics report <span class="citation">(FOCUS Work Group on +Degradation Kinetics 2014, 354)</span>.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span>, quietly <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="va">LOD</span> <span class="op">=</span> <span class="fl">0.5</span></span> +<span><span class="va">FOCUS_2006_Z</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span> +<span> t <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">0.04</span>, <span class="fl">0.125</span>, <span class="fl">0.29</span>, <span class="fl">0.54</span>, <span class="fl">1</span>, <span class="fl">2</span>, <span class="fl">3</span>, <span class="fl">4</span>, <span class="fl">7</span>, <span class="fl">10</span>, <span class="fl">14</span>, <span class="fl">21</span>,</span> +<span> <span class="fl">42</span>, <span class="fl">61</span>, <span class="fl">96</span>, <span class="fl">124</span><span class="op">)</span>,</span> +<span> Z0 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">100</span>, <span class="fl">81.7</span>, <span class="fl">70.4</span>, <span class="fl">51.1</span>, <span class="fl">41.2</span>, <span class="fl">6.6</span>, <span class="fl">4.6</span>, <span class="fl">3.9</span>, <span class="fl">4.6</span>, <span class="fl">4.3</span>, <span class="fl">6.8</span>,</span> +<span> <span class="fl">2.9</span>, <span class="fl">3.5</span>, <span class="fl">5.3</span>, <span class="fl">4.4</span>, <span class="fl">1.2</span>, <span class="fl">0.7</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">18.3</span>, <span class="fl">29.6</span>, <span class="fl">46.3</span>, <span class="fl">55.1</span>, <span class="fl">65.7</span>, <span class="fl">39.1</span>, <span class="fl">36</span>, <span class="fl">15.3</span>, <span class="fl">5.6</span>, <span class="fl">1.1</span>,</span> +<span> <span class="fl">1.6</span>, <span class="fl">0.6</span>, <span class="fl">0.5</span> <span class="op">*</span> <span class="va">LOD</span>, <span class="cn">NA</span>, <span class="cn">NA</span>, <span class="cn">NA</span><span class="op">)</span>,</span> +<span> Z2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="cn">NA</span>, <span class="fl">0.5</span> <span class="op">*</span> <span class="va">LOD</span>, <span class="fl">2.6</span>, <span class="fl">3.8</span>, <span class="fl">15.3</span>, <span class="fl">37.2</span>, <span class="fl">31.7</span>, <span class="fl">35.6</span>, <span class="fl">14.5</span>,</span> +<span> <span class="fl">0.8</span>, <span class="fl">2.1</span>, <span class="fl">1.9</span>, <span class="fl">0.5</span> <span class="op">*</span> <span class="va">LOD</span>, <span class="cn">NA</span>, <span class="cn">NA</span>, <span class="cn">NA</span><span class="op">)</span>,</span> +<span> Z3 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="cn">NA</span>, <span class="cn">NA</span>, <span class="cn">NA</span>, <span class="cn">NA</span>, <span class="fl">0.5</span> <span class="op">*</span> <span class="va">LOD</span>, <span class="fl">9.2</span>, <span class="fl">13.1</span>, <span class="fl">22.3</span>, <span class="fl">28.4</span>, <span class="fl">32.5</span>,</span> +<span> <span class="fl">25.2</span>, <span class="fl">17.2</span>, <span class="fl">4.8</span>, <span class="fl">4.5</span>, <span class="fl">2.8</span>, <span class="fl">4.4</span><span class="op">)</span><span class="op">)</span></span> +<span></span> +<span><span class="va">FOCUS_2006_Z_mkin</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">FOCUS_2006_Z</span><span class="op">)</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="parent-and-one-metabolite">Parent and one metabolite<a class="anchor" aria-label="anchor" href="#parent-and-one-metabolite"></a> +</h2> +<p>The next step is to set up the models used for the kinetic analysis. +As the simultaneous fit of parent and the first metabolite is usually +straightforward, Step 1 (SFO for parent only) is skipped here. We start +with the model 2a, with formation and decline of metabolite Z1 and the +pathway from parent directly to sink included (default in mkin).</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.2a</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z1"</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.2a</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.2a</span>, <span class="va">FOCUS_2006_Z_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.2a, FOCUS_2006_Z_mkin, quiet = TRUE): Observations with</span></span> +<span><span class="co">## value of zero were removed from the data</span></span></code></pre> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.2a</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_1-1.png" width="700"></p> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.Z.2a</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></code></pre></div> +<pre><code><span><span class="co">## Estimate se_notrans t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## Z0_0 97.01488 3.301084 29.3888 3.2971e-21 91.66556 102.3642</span></span> +<span><span class="co">## k_Z0 2.23601 0.207078 10.7979 3.3309e-11 1.95303 2.5600</span></span> +<span><span class="co">## k_Z1 0.48212 0.063265 7.6207 2.8154e-08 0.40341 0.5762</span></span> +<span><span class="co">## f_Z0_to_Z1 1.00000 0.094764 10.5525 5.3560e-11 0.00000 1.0000</span></span> +<span><span class="co">## sigma 4.80411 0.635638 7.5579 3.2592e-08 3.52677 6.0815</span></span></code></pre> +<p>As obvious from the parameter summary (the component of the summary), +the kinetic rate constant from parent compound Z to sink is very small +and the t-test for this parameter suggests that it is not significantly +different from zero. This suggests, in agreement with the analysis in +the FOCUS kinetics report, to simplify the model by removing the pathway +to sink.</p> +<p>A similar result can be obtained when formation fractions are used in +the model formulation:</p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.2a.ff</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z1"</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.2a.ff</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.2a.ff</span>, <span class="va">FOCUS_2006_Z_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.2a.ff, FOCUS_2006_Z_mkin, quiet = TRUE): Observations with</span></span> +<span><span class="co">## value of zero were removed from the data</span></span></code></pre> +<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.2a.ff</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_2-1.png" width="700"></p> +<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.Z.2a.ff</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></code></pre></div> +<pre><code><span><span class="co">## Estimate se_notrans t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## Z0_0 97.01488 3.301084 29.3888 3.2971e-21 91.66556 102.3642</span></span> +<span><span class="co">## k_Z0 2.23601 0.207078 10.7979 3.3309e-11 1.95303 2.5600</span></span> +<span><span class="co">## k_Z1 0.48212 0.063265 7.6207 2.8154e-08 0.40341 0.5762</span></span> +<span><span class="co">## f_Z0_to_Z1 1.00000 0.094764 10.5525 5.3560e-11 0.00000 1.0000</span></span> +<span><span class="co">## sigma 4.80411 0.635638 7.5579 3.2592e-08 3.52677 6.0815</span></span></code></pre> +<p>Here, the ilr transformed formation fraction fitted in the model +takes a very large value, and the backtransformed formation fraction +from parent Z to Z1 is practically unity. Here, the covariance matrix +used for the calculation of confidence intervals is not returned as the +model is overparameterised.</p> +<p>A simplified model is obtained by removing the pathway to the sink. +</p> +<p>In the following, we use the parameterisation with formation +fractions in order to be able to compare with the results in the FOCUS +guidance, and as it makes it easier to use parameters obtained in a +previous fit when adding a further metabolite.</p> +<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.3</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z1"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb18"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.3</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.3</span>, <span class="va">FOCUS_2006_Z_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.3, FOCUS_2006_Z_mkin, quiet = TRUE): Observations with</span></span> +<span><span class="co">## value of zero were removed from the data</span></span></code></pre> +<div class="sourceCode" id="cb20"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.3</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_3-1.png" width="700"></p> +<div class="sourceCode" id="cb21"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.Z.3</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></code></pre></div> +<pre><code><span><span class="co">## Estimate se_notrans t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## Z0_0 97.01488 2.597342 37.352 2.0106e-24 91.67597 102.3538</span></span> +<span><span class="co">## k_Z0 2.23601 0.146904 15.221 9.1477e-15 1.95354 2.5593</span></span> +<span><span class="co">## k_Z1 0.48212 0.041727 11.554 4.8268e-12 0.40355 0.5760</span></span> +<span><span class="co">## sigma 4.80411 0.620208 7.746 1.6110e-08 3.52925 6.0790</span></span></code></pre> +<p>As there is only one transformation product for Z0 and no pathway to +sink, the formation fraction is internally fixed to unity.</p> +</div> +<div class="section level2"> +<h2 id="metabolites-z2-and-z3">Metabolites Z2 and Z3<a class="anchor" aria-label="anchor" href="#metabolites-z2-and-z3"></a> +</h2> +<p>As suggested in the FOCUS report, the pathway to sink was removed for +metabolite Z1 as well in the next step. While this step appears +questionable on the basis of the above results, it is followed here for +the purpose of comparison. Also, in the FOCUS report, it is assumed that +there is additional empirical evidence that Z1 quickly and exclusively +hydrolyses to Z2.</p> +<div class="sourceCode" id="cb23"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.5</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z1"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z2"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb25"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.5</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.5</span>, <span class="va">FOCUS_2006_Z_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.5, FOCUS_2006_Z_mkin, quiet = TRUE): Observations with</span></span> +<span><span class="co">## value of zero were removed from the data</span></span></code></pre> +<div class="sourceCode" id="cb27"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.5</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_5-1.png" width="700"></p> +<p>Finally, metabolite Z3 is added to the model. We use the optimised +differential equation parameter values from the previous fit in order to +accelerate the optimization.</p> +<div class="sourceCode" id="cb28"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.FOCUS</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z1"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z2"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z3"</span><span class="op">)</span>,</span> +<span> Z3 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb30"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.FOCUS</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.FOCUS</span>, <span class="va">FOCUS_2006_Z_mkin</span>,</span> +<span> parms.ini <span class="op">=</span> <span class="va">m.Z.5</span><span class="op">$</span><span class="va">bparms.ode</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.FOCUS, FOCUS_2006_Z_mkin, parms.ini = m.Z.5$bparms.ode, :</span></span> +<span><span class="co">## Observations with value of zero were removed from the data</span></span></code></pre> +<pre><code><span><span class="co">## Warning in mkinfit(Z.FOCUS, FOCUS_2006_Z_mkin, parms.ini = m.Z.5$bparms.ode, : Optimisation did not converge:</span></span> +<span><span class="co">## false convergence (8)</span></span></code></pre> +<div class="sourceCode" id="cb33"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.FOCUS</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_6-1.png" width="700"></p> +<div class="sourceCode" id="cb34"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.Z.FOCUS</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></code></pre></div> +<pre><code><span><span class="co">## Estimate se_notrans t value Pr(>t) Lower Upper</span></span> +<span><span class="co">## Z0_0 96.842440 1.994291 48.5598 4.0226e-42 92.830421 100.854459</span></span> +<span><span class="co">## k_Z0 2.215425 0.118457 18.7023 1.0404e-23 1.989490 2.467019</span></span> +<span><span class="co">## k_Z1 0.478307 0.028257 16.9272 6.2332e-22 0.424709 0.538669</span></span> +<span><span class="co">## k_Z2 0.451642 0.042139 10.7178 1.6304e-14 0.374348 0.544894</span></span> +<span><span class="co">## k_Z3 0.058692 0.015245 3.8499 1.7803e-04 0.034804 0.098975</span></span> +<span><span class="co">## f_Z2_to_Z3 0.471483 0.058348 8.0806 9.6585e-11 0.357720 0.588287</span></span> +<span><span class="co">## sigma 3.984431 0.383402 10.3923 4.5576e-14 3.213126 4.755737</span></span></code></pre> +<div class="sourceCode" id="cb36"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">m.Z.FOCUS</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## $ff</span></span> +<span><span class="co">## Z2_Z3 Z2_sink </span></span> +<span><span class="co">## 0.47148 0.52852 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $distimes</span></span> +<span><span class="co">## DT50 DT90</span></span> +<span><span class="co">## Z0 0.31287 1.0393</span></span> +<span><span class="co">## Z1 1.44917 4.8140</span></span> +<span><span class="co">## Z2 1.53473 5.0983</span></span> +<span><span class="co">## Z3 11.80991 39.2317</span></span></code></pre> +<p>This fit corresponds to the final result chosen in Appendix 7 of the +FOCUS report. Confidence intervals returned by mkin are based on +internally transformed parameters, however.</p> +</div> +<div class="section level2"> +<h2 id="using-the-sforb-model">Using the SFORB model<a class="anchor" aria-label="anchor" href="#using-the-sforb-model"></a> +</h2> +<p>As the FOCUS report states, there is a certain tailing of the time +course of metabolite Z3. Also, the time course of the parent compound is +not fitted very well using the SFO model, as residues at a certain low +level remain.</p> +<p>Therefore, an additional model is offered here, using the single +first-order reversible binding (SFORB) model for metabolite Z3. As +expected, the +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level is lower for metabolite Z3 using this model and the +graphical fit for Z3 is improved. However, the covariance matrix is not +returned.</p> +<div class="sourceCode" id="cb38"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.mkin.1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z1"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z2"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z3"</span><span class="op">)</span>,</span> +<span> Z3 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb40"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.mkin.1</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.mkin.1</span>, <span class="va">FOCUS_2006_Z_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.mkin.1, FOCUS_2006_Z_mkin, quiet = TRUE): Observations</span></span> +<span><span class="co">## with value of zero were removed from the data</span></span></code></pre> +<div class="sourceCode" id="cb42"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.mkin.1</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_7-1.png" width="700"></p> +<div class="sourceCode" id="cb43"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m.Z.mkin.1</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">$</span><span class="va">cov.unscaled</span></span></code></pre></div> +<pre><code><span><span class="co">## NULL</span></span></code></pre> +<p>Therefore, a further stepwise model building is performed starting +from the stage of parent and two metabolites, starting from the +assumption that the model fit for the parent compound can be improved by +using the SFORB model.</p> +<div class="sourceCode" id="cb45"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.mkin.3</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="st">"Z1"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z2"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb47"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.mkin.3</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.mkin.3</span>, <span class="va">FOCUS_2006_Z_mkin</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.mkin.3, FOCUS_2006_Z_mkin, quiet = TRUE): Observations</span></span> +<span><span class="co">## with value of zero were removed from the data</span></span></code></pre> +<div class="sourceCode" id="cb49"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.mkin.3</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_9-1.png" width="700"></p> +<p>This results in a much better representation of the behaviour of the +parent compound Z0.</p> +<p>Finally, Z3 is added as well. These models appear overparameterised +(no covariance matrix returned) if the sink for Z1 is left in the +models.</p> +<div class="sourceCode" id="cb50"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.mkin.4</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="st">"Z1"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z2"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z3"</span><span class="op">)</span>,</span> +<span> Z3 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb52"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.mkin.4</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.mkin.4</span>, <span class="va">FOCUS_2006_Z_mkin</span>,</span> +<span> parms.ini <span class="op">=</span> <span class="va">m.Z.mkin.3</span><span class="op">$</span><span class="va">bparms.ode</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.mkin.4, FOCUS_2006_Z_mkin, parms.ini =</span></span> +<span><span class="co">## m.Z.mkin.3$bparms.ode, : Observations with value of zero were removed from the</span></span> +<span><span class="co">## data</span></span></code></pre> +<div class="sourceCode" id="cb54"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.mkin.4</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_10-1.png" width="700"></p> +<p>The error level of the fit, but especially of metabolite Z3, can be +improved if the SFORB model is chosen for this metabolite, as this model +is capable of representing the tailing of the metabolite decline +phase.</p> +<div class="sourceCode" id="cb55"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">Z.mkin.5</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>Z0 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="st">"Z1"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z2"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> Z2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"Z3"</span><span class="op">)</span>,</span> +<span> Z3 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb57"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.mkin.5</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.mkin.5</span>, <span class="va">FOCUS_2006_Z_mkin</span>,</span> +<span> parms.ini <span class="op">=</span> <span class="va">m.Z.mkin.4</span><span class="op">$</span><span class="va">bparms.ode</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">4</span><span class="op">]</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.mkin.5, FOCUS_2006_Z_mkin, parms.ini =</span></span> +<span><span class="co">## m.Z.mkin.4$bparms.ode[1:4], : Observations with value of zero were removed from</span></span> +<span><span class="co">## the data</span></span></code></pre> +<div class="sourceCode" id="cb59"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.mkin.5</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11-1.png" width="700"></p> +<p>The summary view of the backtransformed parameters shows that we get +no confidence intervals due to overparameterisation. As the optimized is +excessively small, it seems reasonable to fix it to zero.</p> +<div class="sourceCode" id="cb60"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m.Z.mkin.5a</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">Z.mkin.5</span>, <span class="va">FOCUS_2006_Z_mkin</span>,</span> +<span> parms.ini <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="va">m.Z.mkin.5</span><span class="op">$</span><span class="va">bparms.ode</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">7</span><span class="op">]</span>,</span> +<span> k_Z3_bound_free <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span> +<span> fixed_parms <span class="op">=</span> <span class="st">"k_Z3_bound_free"</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in mkinfit(Z.mkin.5, FOCUS_2006_Z_mkin, parms.ini =</span></span> +<span><span class="co">## c(m.Z.mkin.5$bparms.ode[1:7], : Observations with value of zero were removed</span></span> +<span><span class="co">## from the data</span></span></code></pre> +<div class="sourceCode" id="cb62"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m.Z.mkin.5a</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11a-1.png" width="700"></p> +<p>As expected, the residual plots for Z0 and Z3 are more random than in +the case of the all SFO model for which they were shown above. In +conclusion, the model is proposed as the best-fit model for the dataset +from Appendix 7 of the FOCUS report.</p> +<p>A graphical representation of the confidence intervals can finally be +obtained.</p> +<div class="sourceCode" id="cb63"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/mkinparplot.html">mkinparplot</a></span><span class="op">(</span><span class="va">m.Z.mkin.5a</span><span class="op">)</span></span></code></pre></div> +<p><img src="FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11b-1.png" width="700"></p> +<p>The endpoints obtained with this model are</p> +<div class="sourceCode" id="cb64"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">m.Z.mkin.5a</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## $ff</span></span> +<span><span class="co">## Z0_free Z2_Z3 Z2_sink Z3_free </span></span> +<span><span class="co">## 1.00000 0.53656 0.46344 1.00000 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $SFORB</span></span> +<span><span class="co">## Z0_b1 Z0_b2 Z0_g Z3_b1 Z3_b2 Z3_g </span></span> +<span><span class="co">## 2.4471342 0.0075124 0.9519866 0.0800071 0.0000000 0.9347816 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $distimes</span></span> +<span><span class="co">## DT50 DT90 DT50back DT50_Z0_b1 DT50_Z0_b2 DT50_Z3_b1 DT50_Z3_b2</span></span> +<span><span class="co">## Z0 0.3043 1.1848 0.35666 0.28325 92.267 NA NA</span></span> +<span><span class="co">## Z1 1.5148 5.0320 NA NA NA NA NA</span></span> +<span><span class="co">## Z2 1.6414 5.4526 NA NA NA NA NA</span></span> +<span><span class="co">## Z3 NA NA NA NA NA 8.6636 Inf</span></span></code></pre> +<p>It is clear the degradation rate of Z3 towards the end of the +experiment is very low as DT50_Z3_b2 (the second Eigenvalue of the +system of two differential equations representing the SFORB system for +Z3, corresponding to the slower rate constant of the DFOP model) is +reported to be infinity. However, this appears to be a feature of the +data.</p> +</div> +<div class="section level2"> +<h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a> +</h2> +<!-- vim: set foldmethod=syntax: --> +<div id="refs" class="references csl-bib-body hanging-indent"> +<div id="ref-FOCUSkinetics2014" class="csl-entry"> +FOCUS Work Group on Degradation Kinetics. 2014. <em>Generic Guidance for +Estimating Persistence and Degradation Kinetics from Environmental Fate +Studies on Pesticides in EU Registration</em>. 1.1 ed. <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a>. +</div> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_1-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_1-1.png Binary files differnew file mode 100644 index 00000000..98bc135b --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_1-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_10-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_10-1.png Binary files differnew file mode 100644 index 00000000..c1011a35 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_10-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11-1.png Binary files differnew file mode 100644 index 00000000..dfd2dd50 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11a-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11a-1.png Binary files differnew file mode 100644 index 00000000..74173f36 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11a-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11b-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11b-1.png Binary files differnew file mode 100644 index 00000000..1c5793cc --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_11b-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_2-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_2-1.png Binary files differnew file mode 100644 index 00000000..98bc135b --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_2-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_3-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_3-1.png Binary files differnew file mode 100644 index 00000000..0380ba43 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_3-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_5-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_5-1.png Binary files differnew file mode 100644 index 00000000..8c594ec9 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_5-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_6-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_6-1.png Binary files differnew file mode 100644 index 00000000..84d473d6 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_6-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_7-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_7-1.png Binary files differnew file mode 100644 index 00000000..87af8874 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_7-1.png diff --git a/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_9-1.png b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_9-1.png Binary files differnew file mode 100644 index 00000000..492cdcc8 --- /dev/null +++ b/docs/dev/articles/web_only/FOCUS_Z_files/figure-html/FOCUS_2006_Z_fits_9-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples.html b/docs/dev/articles/web_only/NAFTA_examples.html new file mode 100644 index 00000000..6bf39b2c --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples.html @@ -0,0 +1,1049 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">26 February 2019 (rebuilt +2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/web_only/NAFTA_examples.rmd" class="external-link"><code>vignettes/web_only/NAFTA_examples.rmd</code></a></small> + <div class="d-none name"><code>NAFTA_examples.rmd</code></div> + </div> + + + +<div class="section level2"> +<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a> +</h2> +<p>In this document, the example evaluations provided in Attachment 1 to +the SOP of US EPA for using the NAFTA guidance <span class="citation">(US EPA 2015)</span> are repeated using mkin. The +original evaluations reported in the attachment were performed using +PestDF in version 0.8.4. Note that PestDF 0.8.13 is the version +distributed at the US EPA website today (2019-02-26).</p> +<p>The datasets are now distributed with the mkin package.</p> +</div> +<div class="section level2"> +<h2 id="examples-where-dfop-did-not-converge-with-pestdf-0-8-4">Examples where DFOP did not converge with PestDF 0.8.4<a class="anchor" aria-label="anchor" href="#examples-where-dfop-did-not-converge-with-pestdf-0-8-4"></a> +</h2> +<p>In attachment 1, it is reported that the DFOP model does not converge +for these datasets when PestDF 0.8.4 was used. For all four datasets, +the DFOP model can be fitted with mkin (see below). The negative +half-life given by PestDF 0.8.4 for these fits appears to be the result +of a bug. The results for the other two models (SFO and IORE) are the +same.</p> +<div class="section level3"> +<h3 id="example-on-page-5-upper-panel">Example on page 5, upper panel<a class="anchor" aria-label="anchor" href="#example-on-page-5-upper-panel"></a> +</h3> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p5a</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p5a"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p5a</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p5a-1.png" width="700"></p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p5a</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 465.21753 56.27506 32.06401 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 64.4304</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 95.8401 4.67e-21 92.245 99.4357</span></span> +<span><span class="co">## k_parent 0.0102 3.92e-12 0.009 0.0117</span></span> +<span><span class="co">## sigma 4.8230 3.81e-06 3.214 6.4318</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 1.01e+02 NA 9.91e+01 1.02e+02</span></span> +<span><span class="co">## k__iore_parent 1.54e-05 NA 4.08e-06 5.84e-05</span></span> +<span><span class="co">## N_parent 2.57e+00 NA 2.25e+00 2.89e+00</span></span> +<span><span class="co">## sigma 1.68e+00 NA 1.12e+00 2.24e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.99e+01 1.41e-26 98.8116 101.0810</span></span> +<span><span class="co">## k1 2.67e-02 5.05e-06 0.0243 0.0295</span></span> +<span><span class="co">## k2 3.41e-12 5.00e-01 0.0000 Inf</span></span> +<span><span class="co">## g 6.47e-01 3.67e-06 0.6248 0.6677</span></span> +<span><span class="co">## sigma 1.27e+00 8.91e-06 0.8395 1.6929</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 67.7 2.25e+02 6.77e+01</span></span> +<span><span class="co">## IORE 58.2 1.07e+03 3.22e+02</span></span> +<span><span class="co">## DFOP 55.5 3.70e+11 2.03e+11</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 321.51</span></span></code></pre> +</div> +<div class="section level3"> +<h3 id="example-on-page-5-lower-panel">Example on page 5, lower panel<a class="anchor" aria-label="anchor" href="#example-on-page-5-lower-panel"></a> +</h3> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p5b</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p5b"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p5b</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p5b-1.png" width="700"></p> +<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p5b</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 94.81123 10.10936 7.55871 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 11.77879</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 96.497 2.32e-24 94.85271 98.14155</span></span> +<span><span class="co">## k_parent 0.008 3.42e-14 0.00737 0.00869</span></span> +<span><span class="co">## sigma 2.295 1.22e-05 1.47976 3.11036</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.85e+01 1.17e-28 9.79e+01 9.92e+01</span></span> +<span><span class="co">## k__iore_parent 1.53e-04 6.50e-03 7.21e-05 3.26e-04</span></span> +<span><span class="co">## N_parent 1.94e+00 5.88e-13 1.76e+00 2.12e+00</span></span> +<span><span class="co">## sigma 7.49e-01 1.63e-05 4.82e-01 1.02e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.84e+01 1.24e-27 97.8078 98.9187</span></span> +<span><span class="co">## k1 1.55e-02 4.10e-04 0.0143 0.0167</span></span> +<span><span class="co">## k2 9.07e-12 5.00e-01 0.0000 Inf</span></span> +<span><span class="co">## g 6.89e-01 2.92e-03 0.6626 0.7142</span></span> +<span><span class="co">## sigma 6.48e-01 2.38e-05 0.4147 0.8813</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 86.6 2.88e+02 8.66e+01</span></span> +<span><span class="co">## IORE 85.5 7.17e+02 2.16e+02</span></span> +<span><span class="co">## DFOP 83.6 1.25e+11 7.64e+10</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 215.87</span></span></code></pre> +</div> +<div class="section level3"> +<h3 id="example-on-page-6">Example on page 6<a class="anchor" aria-label="anchor" href="#example-on-page-6"></a> +</h3> +<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p6</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p6"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p6</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p6-1.png" width="700"></p> +<div class="sourceCode" id="cb17"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p6</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 188.45361 51.00699 42.46931 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 58.39888</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 94.7759 7.29e-24 92.3478 97.2039</span></span> +<span><span class="co">## k_parent 0.0179 8.02e-16 0.0166 0.0194</span></span> +<span><span class="co">## sigma 3.0696 3.81e-06 2.0456 4.0936</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 97.12446 2.63e-26 95.62461 98.62431</span></span> +<span><span class="co">## k__iore_parent 0.00252 1.95e-03 0.00134 0.00472</span></span> +<span><span class="co">## N_parent 1.49587 4.07e-13 1.33896 1.65279</span></span> +<span><span class="co">## sigma 1.59698 5.05e-06 1.06169 2.13227</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.66e+01 1.57e-25 95.3476 97.8979</span></span> +<span><span class="co">## k1 2.55e-02 7.33e-06 0.0233 0.0278</span></span> +<span><span class="co">## k2 3.84e-11 5.00e-01 0.0000 Inf</span></span> +<span><span class="co">## g 8.61e-01 7.55e-06 0.8314 0.8867</span></span> +<span><span class="co">## sigma 1.46e+00 6.93e-06 0.9661 1.9483</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 38.6 1.28e+02 3.86e+01</span></span> +<span><span class="co">## IORE 34.0 1.77e+02 5.32e+01</span></span> +<span><span class="co">## DFOP 34.1 8.50e+09 1.80e+10</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 53.17</span></span></code></pre> +</div> +<div class="section level3"> +<h3 id="example-on-page-7">Example on page 7<a class="anchor" aria-label="anchor" href="#example-on-page-7"></a> +</h3> +<div class="sourceCode" id="cb19"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p7</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p7"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb22"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p7</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p7-1.png" width="700"></p> +<div class="sourceCode" id="cb23"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p7</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 3661.661 3195.030 3174.145 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 3334.194</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 96.41796 4.80e-53 93.32245 99.51347</span></span> +<span><span class="co">## k_parent 0.00735 7.64e-21 0.00641 0.00843</span></span> +<span><span class="co">## sigma 7.94557 1.83e-15 6.46713 9.42401</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.92e+01 NA 9.55e+01 1.03e+02</span></span> +<span><span class="co">## k__iore_parent 1.60e-05 NA 1.45e-07 1.77e-03</span></span> +<span><span class="co">## N_parent 2.45e+00 NA 1.35e+00 3.54e+00</span></span> +<span><span class="co">## sigma 7.42e+00 NA 6.04e+00 8.80e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.89e+01 9.44e-49 95.4640 102.2573</span></span> +<span><span class="co">## k1 1.81e-02 1.75e-01 0.0116 0.0281</span></span> +<span><span class="co">## k2 3.62e-10 5.00e-01 0.0000 Inf</span></span> +<span><span class="co">## g 6.06e-01 2.19e-01 0.4826 0.7178</span></span> +<span><span class="co">## sigma 7.40e+00 2.97e-15 6.0201 8.7754</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 94.3 3.13e+02 9.43e+01</span></span> +<span><span class="co">## IORE 96.7 1.51e+03 4.55e+02</span></span> +<span><span class="co">## DFOP 96.4 3.79e+09 1.92e+09</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 454.55</span></span></code></pre> +</div> +</div> +<div class="section level2"> +<h2 id="examples-where-the-representative-half-life-deviates-from-the-observed-dt50">Examples where the representative half-life deviates from the +observed DT50<a class="anchor" aria-label="anchor" href="#examples-where-the-representative-half-life-deviates-from-the-observed-dt50"></a> +</h2> +<div class="section level3"> +<h3 id="example-on-page-8">Example on page 8<a class="anchor" aria-label="anchor" href="#example-on-page-8"></a> +</h3> +<p>For this dataset, the IORE fit does not converge when the default +starting values used by mkin for the IORE model are used. Therefore, a +lower value for the rate constant is used here.</p> +<div class="sourceCode" id="cb25"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p8</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p8"</span><span class="op">]</span><span class="op">]</span>, parms.ini <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k__iore_parent <span class="op">=</span> <span class="fl">1e-3</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb28"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p8</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p8-1.png" width="700"></p> +<div class="sourceCode" id="cb29"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p8</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 1996.9408 444.9237 547.5616 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 477.4924</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 88.16549 6.53e-29 83.37344 92.95754</span></span> +<span><span class="co">## k_parent 0.00803 1.67e-13 0.00674 0.00957</span></span> +<span><span class="co">## sigma 7.44786 4.17e-10 5.66209 9.23363</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.77e+01 7.03e-35 9.44e+01 1.01e+02</span></span> +<span><span class="co">## k__iore_parent 6.14e-05 3.20e-02 2.12e-05 1.78e-04</span></span> +<span><span class="co">## N_parent 2.27e+00 4.23e-18 2.00e+00 2.54e+00</span></span> +<span><span class="co">## sigma 3.52e+00 5.36e-10 2.67e+00 4.36e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 95.70619 8.99e-32 91.87941 99.53298</span></span> +<span><span class="co">## k1 0.02500 5.25e-04 0.01422 0.04394</span></span> +<span><span class="co">## k2 0.00273 6.84e-03 0.00125 0.00597</span></span> +<span><span class="co">## g 0.58835 2.84e-06 0.36595 0.77970</span></span> +<span><span class="co">## sigma 3.90001 6.94e-10 2.96260 4.83741</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 86.3 287 86.3</span></span> +<span><span class="co">## IORE 53.4 668 201.0</span></span> +<span><span class="co">## DFOP 55.6 517 253.0</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 201.03</span></span></code></pre> +</div> +</div> +<div class="section level2"> +<h2 id="examples-where-sfo-was-not-selected-for-an-abiotic-study">Examples where SFO was not selected for an abiotic study<a class="anchor" aria-label="anchor" href="#examples-where-sfo-was-not-selected-for-an-abiotic-study"></a> +</h2> +<div class="section level3"> +<h3 id="example-on-page-9-upper-panel">Example on page 9, upper panel<a class="anchor" aria-label="anchor" href="#example-on-page-9-upper-panel"></a> +</h3> +<div class="sourceCode" id="cb31"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p9a</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p9a"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb34"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p9a</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p9a-1.png" width="700"></p> +<div class="sourceCode" id="cb35"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p9a</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 839.35238 88.57064 9.93363 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 105.5678</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 88.1933 3.06e-12 79.9447 96.4419</span></span> +<span><span class="co">## k_parent 0.0409 2.07e-07 0.0324 0.0516</span></span> +<span><span class="co">## sigma 7.2429 3.92e-05 4.4768 10.0090</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.89e+01 1.12e-16 9.54e+01 1.02e+02</span></span> +<span><span class="co">## k__iore_parent 1.93e-05 1.13e-01 3.49e-06 1.06e-04</span></span> +<span><span class="co">## N_parent 2.91e+00 1.45e-09 2.50e+00 3.32e+00</span></span> +<span><span class="co">## sigma 2.35e+00 5.31e-05 1.45e+00 3.26e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 9.85e+01 2.54e-20 97.390 99.672</span></span> +<span><span class="co">## k1 1.38e-01 3.52e-05 0.131 0.146</span></span> +<span><span class="co">## k2 9.02e-13 5.00e-01 0.000 Inf</span></span> +<span><span class="co">## g 6.52e-01 8.13e-06 0.642 0.661</span></span> +<span><span class="co">## sigma 7.88e-01 6.13e-02 0.481 1.095</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 16.9 5.63e+01 1.69e+01</span></span> +<span><span class="co">## IORE 11.6 3.37e+02 1.01e+02</span></span> +<span><span class="co">## DFOP 10.5 1.38e+12 7.68e+11</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 101.43</span></span></code></pre> +<p>In this example, the residuals of the SFO indicate a lack of fit of +this model, so even if it was an abiotic experiment, the data do not +suggest a simple exponential decline.</p> +</div> +<div class="section level3"> +<h3 id="example-on-page-9-lower-panel">Example on page 9, lower panel<a class="anchor" aria-label="anchor" href="#example-on-page-9-lower-panel"></a> +</h3> +<div class="sourceCode" id="cb37"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p9b</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p9b"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb40"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p9b</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p9b-1.png" width="700"></p> +<div class="sourceCode" id="cb41"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p9b</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 35.64867 23.22334 35.64867 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 28.54188</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 94.7123 2.15e-19 93.178 96.2464</span></span> +<span><span class="co">## k_parent 0.0389 4.47e-14 0.037 0.0408</span></span> +<span><span class="co">## sigma 1.5957 1.28e-04 0.932 2.2595</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 93.863 2.32e-18 92.4565 95.269</span></span> +<span><span class="co">## k__iore_parent 0.127 1.85e-02 0.0504 0.321</span></span> +<span><span class="co">## N_parent 0.711 1.88e-05 0.4843 0.937</span></span> +<span><span class="co">## sigma 1.288 1.76e-04 0.7456 1.830</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 94.7123 1.61e-16 93.1355 96.2891</span></span> +<span><span class="co">## k1 0.0389 1.08e-04 0.0266 0.0569</span></span> +<span><span class="co">## k2 0.0389 2.24e-04 0.0255 0.0592</span></span> +<span><span class="co">## g 0.5256 5.00e-01 0.0000 1.0000</span></span> +<span><span class="co">## sigma 1.5957 2.50e-04 0.9135 2.2779</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 17.8 59.2 17.8</span></span> +<span><span class="co">## IORE 18.4 49.2 14.8</span></span> +<span><span class="co">## DFOP 17.8 59.2 17.8</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 14.8</span></span></code></pre> +<p>Here, mkin gives a longer slow DT50 for the DFOP model (17.8 days) +than PestDF (13.5 days). Presumably, this is related to the fact that +PestDF gives a negative value for the proportion of the fast degradation +which should be between 0 and 1, inclusive. This parameter is called f +in PestDF and g in mkin. In mkin, it is restricted to the interval from +0 to 1.</p> +</div> +<div class="section level3"> +<h3 id="example-on-page-10">Example on page 10<a class="anchor" aria-label="anchor" href="#example-on-page-10"></a> +</h3> +<div class="sourceCode" id="cb43"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p10</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p10"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in sqrt(diag(covar_notrans)): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb47"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p10</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p10-1.png" width="700"></p> +<div class="sourceCode" id="cb48"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p10</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 899.4089 336.4348 899.4089 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 413.4841</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 101.7315 6.42e-11 91.9259 111.5371</span></span> +<span><span class="co">## k_parent 0.0495 1.70e-07 0.0404 0.0607</span></span> +<span><span class="co">## sigma 8.0152 1.28e-04 4.6813 11.3491</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 96.86 3.32e-12 90.848 102.863</span></span> +<span><span class="co">## k__iore_parent 2.96 7.91e-02 0.687 12.761</span></span> +<span><span class="co">## N_parent 0.00 5.00e-01 -0.372 0.372</span></span> +<span><span class="co">## sigma 4.90 1.77e-04 2.837 6.968</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 101.7315 1.41e-09 91.6534 111.810</span></span> +<span><span class="co">## k1 0.0495 3.04e-03 0.0188 0.131</span></span> +<span><span class="co">## k2 0.0495 4.92e-04 0.0197 0.124</span></span> +<span><span class="co">## g 0.4487 NaN 0.0000 1.000</span></span> +<span><span class="co">## sigma 8.0152 2.50e-04 4.5886 11.442</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 14.0 46.5 14.00</span></span> +<span><span class="co">## IORE 16.4 29.4 8.86</span></span> +<span><span class="co">## DFOP 14.0 46.5 14.00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 8.86</span></span></code></pre> +<p>Here, a value below N is given for the IORE model, because the data +suggests a faster decline towards the end of the experiment, which +appears physically rather unlikely in the case of a photolysis study. It +seems PestDF does not constrain N to values above zero, thus the slight +difference in IORE model parameters between PestDF and mkin.</p> +</div> +</div> +<div class="section level2"> +<h2 id="the-dt50-was-not-observed-during-the-study">The DT50 was not observed during the study<a class="anchor" aria-label="anchor" href="#the-dt50-was-not-observed-during-the-study"></a> +</h2> +<div class="section level3"> +<h3 id="example-on-page-11">Example on page 11<a class="anchor" aria-label="anchor" href="#example-on-page-11"></a> +</h3> +<div class="sourceCode" id="cb50"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p11</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p11"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb53"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p11</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p11-1.png" width="700"></p> +<div class="sourceCode" id="cb54"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p11</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 579.6805 204.7932 144.7783 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 251.6944</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 96.15820 4.83e-13 90.24934 1.02e+02</span></span> +<span><span class="co">## k_parent 0.00321 4.71e-05 0.00222 4.64e-03</span></span> +<span><span class="co">## sigma 6.43473 1.28e-04 3.75822 9.11e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 1.05e+02 NA 9.90e+01 1.10e+02</span></span> +<span><span class="co">## k__iore_parent 3.11e-17 NA 1.35e-20 7.18e-14</span></span> +<span><span class="co">## N_parent 8.36e+00 NA 6.62e+00 1.01e+01</span></span> +<span><span class="co">## sigma 3.82e+00 NA 2.21e+00 5.44e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 1.05e+02 9.47e-13 99.9990 109.1224</span></span> +<span><span class="co">## k1 4.41e-02 5.95e-03 0.0296 0.0658</span></span> +<span><span class="co">## k2 9.94e-13 5.00e-01 0.0000 Inf</span></span> +<span><span class="co">## g 3.22e-01 1.45e-03 0.2814 0.3650</span></span> +<span><span class="co">## sigma 3.22e+00 3.52e-04 1.8410 4.5906</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 2.16e+02 7.18e+02 2.16e+02</span></span> +<span><span class="co">## IORE 9.73e+02 1.37e+08 4.11e+07</span></span> +<span><span class="co">## DFOP 3.07e+11 1.93e+12 6.98e+11</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 41148169</span></span></code></pre> +<p>In this case, the DFOP fit reported for PestDF resulted in a negative +value for the slower rate constant, which is not possible in mkin. The +other results are in agreement.</p> +</div> +</div> +<div class="section level2"> +<h2 id="n-is-less-than-1-and-the-dfop-rate-constants-are-like-the-sfo-rate-constant">N is less than 1 and the DFOP rate constants are like the SFO rate +constant<a class="anchor" aria-label="anchor" href="#n-is-less-than-1-and-the-dfop-rate-constants-are-like-the-sfo-rate-constant"></a> +</h2> +<p>In the following three examples, the same results are obtained with +mkin as reported for PestDF. As in the case on page 10, the N values +below 1 are deemed unrealistic and appear to be the result of an +overparameterisation.</p> +<div class="section level3"> +<h3 id="example-on-page-12-upper-panel">Example on page 12, upper panel<a class="anchor" aria-label="anchor" href="#example-on-page-12-upper-panel"></a> +</h3> +<div class="sourceCode" id="cb56"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p12a</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p12a"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in summary.mkinfit(x): Could not calculate correlation; no covariance</span></span> +<span><span class="co">## matrix</span></span></code></pre> +<pre><code><span><span class="co">## Warning in sqrt(diag(covar_notrans)): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb61"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p12a</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p12a-1.png" width="700"></p> +<div class="sourceCode" id="cb62"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p12a</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 695.4440 220.0685 695.4440 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 270.4679</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 100.521 8.75e-12 92.461 108.581</span></span> +<span><span class="co">## k_parent 0.124 3.61e-08 0.104 0.148</span></span> +<span><span class="co">## sigma 7.048 1.28e-04 4.116 9.980</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 96.823 NA NA NA</span></span> +<span><span class="co">## k__iore_parent 2.436 NA NA NA</span></span> +<span><span class="co">## N_parent 0.263 NA NA NA</span></span> +<span><span class="co">## sigma 3.965 NA NA NA</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 100.521 2.74e-10 92.2366 108.805</span></span> +<span><span class="co">## k1 0.124 2.53e-05 0.0908 0.170</span></span> +<span><span class="co">## k2 0.124 2.52e-02 0.0456 0.339</span></span> +<span><span class="co">## g 0.793 NaN 0.0000 1.000</span></span> +<span><span class="co">## sigma 7.048 2.50e-04 4.0349 10.061</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 5.58 18.5 5.58</span></span> +<span><span class="co">## IORE 6.49 13.2 3.99</span></span> +<span><span class="co">## DFOP 5.58 18.5 5.58</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 3.99</span></span></code></pre> +</div> +<div class="section level3"> +<h3 id="example-on-page-12-lower-panel">Example on page 12, lower panel<a class="anchor" aria-label="anchor" href="#example-on-page-12-lower-panel"></a> +</h3> +<div class="sourceCode" id="cb64"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p12b</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p12b"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in sqrt(diag(covar)): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## Warning in qt(alpha/2, rdf): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## Warning in qt(1 - alpha/2, rdf): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## Warning in pt(abs(tval), rdf, lower.tail = FALSE): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## Warning in cov2cor(ans$covar): diag(V) had non-positive or NA entries; the</span></span> +<span><span class="co">## non-finite result may be dubious</span></span></code></pre> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb72"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p12b</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p12b-1.png" width="700"></p> +<div class="sourceCode" id="cb73"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p12b</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 58.90242 19.06353 58.90242 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 51.51756</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 97.6840 0.00039 85.9388 109.4292</span></span> +<span><span class="co">## k_parent 0.0589 0.00261 0.0431 0.0805</span></span> +<span><span class="co">## sigma 3.4323 0.04356 -1.2377 8.1023</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 95.523 0.0055 74.539157 116.51</span></span> +<span><span class="co">## k__iore_parent 0.333 0.1433 0.000717 154.57</span></span> +<span><span class="co">## N_parent 0.568 0.0677 -0.989464 2.13</span></span> +<span><span class="co">## sigma 1.953 0.0975 -5.893100 9.80</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 97.6840 NaN NaN NaN</span></span> +<span><span class="co">## k1 0.0589 NaN NA NA</span></span> +<span><span class="co">## k2 0.0589 NaN NA NA</span></span> +<span><span class="co">## g 0.6473 NaN NA NA</span></span> +<span><span class="co">## sigma 3.4323 NaN NaN NaN</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 11.8 39.1 11.80</span></span> +<span><span class="co">## IORE 12.9 31.4 9.46</span></span> +<span><span class="co">## DFOP 11.8 39.1 11.80</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 9.46</span></span></code></pre> +</div> +<div class="section level3"> +<h3 id="example-on-page-13">Example on page 13<a class="anchor" aria-label="anchor" href="#example-on-page-13"></a> +</h3> +<div class="sourceCode" id="cb75"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p13</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p13"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb78"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p13</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p13-1.png" width="700"></p> +<div class="sourceCode" id="cb79"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p13</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 174.5971 142.3951 174.5971 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 172.131</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 92.73500 5.99e-17 89.61936 95.85065</span></span> +<span><span class="co">## k_parent 0.00258 2.42e-09 0.00223 0.00299</span></span> +<span><span class="co">## sigma 3.41172 7.07e-05 2.05455 4.76888</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 91.6016 6.34e-16 88.53086 94.672</span></span> +<span><span class="co">## k__iore_parent 0.0396 2.36e-01 0.00207 0.759</span></span> +<span><span class="co">## N_parent 0.3541 1.46e-01 -0.35153 1.060</span></span> +<span><span class="co">## sigma 3.0811 9.64e-05 1.84296 4.319</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 92.73500 NA 8.95e+01 95.92118</span></span> +<span><span class="co">## k1 0.00258 NA 4.18e-04 0.01592</span></span> +<span><span class="co">## k2 0.00258 NA 1.75e-03 0.00381</span></span> +<span><span class="co">## g 0.16452 NA 0.00e+00 1.00000</span></span> +<span><span class="co">## sigma 3.41172 NA 2.02e+00 4.79960</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 269 892 269</span></span> +<span><span class="co">## IORE 261 560 169</span></span> +<span><span class="co">## DFOP 269 892 269</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 168.51</span></span></code></pre> +</div> +</div> +<div class="section level2"> +<h2 id="dt50-not-observed-in-the-study-and-dfop-problems-in-pestdf">DT50 not observed in the study and DFOP problems in PestDF<a class="anchor" aria-label="anchor" href="#dt50-not-observed-in-the-study-and-dfop-problems-in-pestdf"></a> +</h2> +<div class="sourceCode" id="cb81"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p14</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p14"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in sqrt(diag(covar)): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## Warning in cov2cor(ans$covar): diag(V) had non-positive or NA entries; the</span></span> +<span><span class="co">## non-finite result may be dubious</span></span></code></pre> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb86"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p14</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p14-1.png" width="700"></p> +<div class="sourceCode" id="cb87"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p14</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 48.43249 28.67746 27.26248 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 32.83337</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 99.47124 2.06e-30 98.42254 1.01e+02</span></span> +<span><span class="co">## k_parent 0.00279 3.75e-15 0.00256 3.04e-03</span></span> +<span><span class="co">## sigma 1.55616 3.81e-06 1.03704 2.08e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 1.00e+02 NA NaN NaN</span></span> +<span><span class="co">## k__iore_parent 9.44e-08 NA NaN NaN</span></span> +<span><span class="co">## N_parent 3.31e+00 NA NaN NaN</span></span> +<span><span class="co">## sigma 1.20e+00 NA 0.796 1.6</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 1.00e+02 2.96e-28 99.40280 101.2768</span></span> +<span><span class="co">## k1 9.53e-03 1.20e-01 0.00638 0.0143</span></span> +<span><span class="co">## k2 5.21e-12 5.00e-01 0.00000 Inf</span></span> +<span><span class="co">## g 3.98e-01 2.19e-01 0.30481 0.4998</span></span> +<span><span class="co">## sigma 1.17e+00 7.68e-06 0.77406 1.5610</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 2.48e+02 8.25e+02 2.48e+02</span></span> +<span><span class="co">## IORE 4.34e+02 2.22e+04 6.70e+03</span></span> +<span><span class="co">## DFOP 3.55e+10 3.44e+11 1.33e+11</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 6697.44</span></span></code></pre> +<p>The slower rate constant reported by PestDF is negative, which is not +physically realistic, and not possible in mkin. The other fits give the +same results in mkin and PestDF.</p> +</div> +<div class="section level2"> +<h2 id="n-is-less-than-1-and-dfop-fraction-parameter-is-below-zero">N is less than 1 and DFOP fraction parameter is below zero<a class="anchor" aria-label="anchor" href="#n-is-less-than-1-and-dfop-fraction-parameter-is-below-zero"></a> +</h2> +<div class="sourceCode" id="cb89"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p15a</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p15a"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in sqrt(diag(covar)): NaNs produced</span></span></code></pre> +<pre><code><span><span class="co">## Warning in cov2cor(ans$covar): diag(V) had non-positive or NA entries; the</span></span> +<span><span class="co">## non-finite result may be dubious</span></span></code></pre> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb94"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p15a</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p15a-1.png" width="700"></p> +<div class="sourceCode" id="cb95"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p15a</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 245.5248 135.0132 245.5248 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 165.9335</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 97.96751 2.00e-15 94.32049 101.615</span></span> +<span><span class="co">## k_parent 0.00952 4.93e-09 0.00824 0.011</span></span> +<span><span class="co">## sigma 4.18778 1.28e-04 2.44588 5.930</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 95.874 2.94e-15 92.937 98.811</span></span> +<span><span class="co">## k__iore_parent 0.629 2.11e-01 0.044 8.982</span></span> +<span><span class="co">## N_parent 0.000 5.00e-01 -0.642 0.642</span></span> +<span><span class="co">## sigma 3.105 1.78e-04 1.795 4.416</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 97.96751 2.85e-13 94.21913 101.7159</span></span> +<span><span class="co">## k1 0.00952 6.28e-02 0.00260 0.0349</span></span> +<span><span class="co">## k2 0.00952 1.27e-04 0.00652 0.0139</span></span> +<span><span class="co">## g 0.21241 5.00e-01 NA NA</span></span> +<span><span class="co">## sigma 4.18778 2.50e-04 2.39747 5.9781</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 72.8 242 72.8</span></span> +<span><span class="co">## IORE 76.3 137 41.3</span></span> +<span><span class="co">## DFOP 72.8 242 72.8</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 41.33</span></span></code></pre> +<div class="sourceCode" id="cb97"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p15b</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p15b"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Warning in summary.mkinfit(x): Could not calculate correlation; no covariance</span></span> +<span><span class="co">## matrix</span></span></code></pre> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The half-life obtained from the IORE model may be used</span></span></code></pre> +<div class="sourceCode" id="cb101"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p15b</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p15b-1.png" width="700"></p> +<div class="sourceCode" id="cb102"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p15b</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 106.91629 68.55574 106.91629 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 84.25618</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 1.01e+02 3.06e-17 98.31594 1.03e+02</span></span> +<span><span class="co">## k_parent 4.86e-03 2.48e-10 0.00435 5.42e-03</span></span> +<span><span class="co">## sigma 2.76e+00 1.28e-04 1.61402 3.91e+00</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 99.83 1.81e-16 97.51348 102.14</span></span> +<span><span class="co">## k__iore_parent 0.38 3.22e-01 0.00352 41.05</span></span> +<span><span class="co">## N_parent 0.00 5.00e-01 -1.07696 1.08</span></span> +<span><span class="co">## sigma 2.21 2.57e-04 1.23245 3.19</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 1.01e+02 NA NA NA</span></span> +<span><span class="co">## k1 4.86e-03 NA NA NA</span></span> +<span><span class="co">## k2 4.86e-03 NA NA NA</span></span> +<span><span class="co">## g 1.88e-01 NA NA NA</span></span> +<span><span class="co">## sigma 2.76e+00 NA NA NA</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 143 474 143.0</span></span> +<span><span class="co">## IORE 131 236 71.2</span></span> +<span><span class="co">## DFOP 143 474 143.0</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 71.18</span></span></code></pre> +<p>In mkin, only the IORE fit is affected (deemed unrealistic), as the +fraction parameter of the DFOP model is restricted to the interval +between 0 and 1 in mkin. The SFO fits give the same results for both +mkin and PestDF.</p> +</div> +<div class="section level2"> +<h2 id="the-dfop-fraction-parameter-is-greater-than-1">The DFOP fraction parameter is greater than 1<a class="anchor" aria-label="anchor" href="#the-dfop-fraction-parameter-is-greater-than-1"></a> +</h2> +<div class="sourceCode" id="cb104"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">p16</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p16"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span></span></code></pre> +<pre><code><span><span class="co">## The representative half-life of the IORE model is longer than the one corresponding</span></span></code></pre> +<pre><code><span><span class="co">## to the terminal degradation rate found with the DFOP model.</span></span></code></pre> +<pre><code><span><span class="co">## The representative half-life obtained from the DFOP model may be used</span></span></code></pre> +<div class="sourceCode" id="cb109"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">p16</span><span class="op">)</span></span></code></pre></div> +<p><img src="NAFTA_examples_files/figure-html/p16-1.png" width="700"></p> +<div class="sourceCode" id="cb110"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p16</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Sums of squares:</span></span> +<span><span class="co">## SFO IORE DFOP </span></span> +<span><span class="co">## 3831.804 2062.008 1550.980 </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Critical sum of squares for checking the SFO model:</span></span> +<span><span class="co">## [1] 2247.348</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Parameters:</span></span> +<span><span class="co">## $SFO</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 71.953 2.33e-13 60.509 83.40</span></span> +<span><span class="co">## k_parent 0.159 4.86e-05 0.102 0.25</span></span> +<span><span class="co">## sigma 11.302 1.25e-08 8.308 14.30</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $IORE</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 8.74e+01 2.48e-16 7.72e+01 97.52972</span></span> +<span><span class="co">## k__iore_parent 4.55e-04 2.16e-01 3.48e-05 0.00595</span></span> +<span><span class="co">## N_parent 2.70e+00 1.21e-08 1.99e+00 3.40046</span></span> +<span><span class="co">## sigma 8.29e+00 1.61e-08 6.09e+00 10.49062</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## $DFOP</span></span> +<span><span class="co">## Estimate Pr(>t) Lower Upper</span></span> +<span><span class="co">## parent_0 88.5333 7.40e-18 79.9836 97.083</span></span> +<span><span class="co">## k1 18.8461 5.00e-01 0.0000 Inf</span></span> +<span><span class="co">## k2 0.0776 1.41e-05 0.0518 0.116</span></span> +<span><span class="co">## g 0.4733 1.41e-09 0.3674 0.582</span></span> +<span><span class="co">## sigma 7.1902 2.11e-08 5.2785 9.102</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## </span></span> +<span><span class="co">## DTx values:</span></span> +<span><span class="co">## DT50 DT90 DT50_rep</span></span> +<span><span class="co">## SFO 4.35 14.4 4.35</span></span> +<span><span class="co">## IORE 1.48 32.1 9.67</span></span> +<span><span class="co">## DFOP 0.67 21.4 8.93</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## Representative half-life:</span></span> +<span><span class="co">## [1] 8.93</span></span></code></pre> +<p>In PestDF, the DFOP fit seems to have stuck in a local minimum, as +mkin finds a solution with a much lower +<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mn>2</mn></msup><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math> +error level. As the half-life from the slower rate constant of the DFOP +model is larger than the IORE derived half-life, the NAFTA +recommendation obtained with mkin is to use the DFOP representative +half-life of 8.9 days.</p> +</div> +<div class="section level2"> +<h2 id="conclusions">Conclusions<a class="anchor" aria-label="anchor" href="#conclusions"></a> +</h2> +<p>The results obtained with mkin deviate from the results obtained with +PestDF either in cases where one of the interpretive rules would apply, +i.e. the IORE parameter N is less than one or the DFOP k values obtained +with PestDF are equal to the SFO k values, or in cases where the DFOP +model did not converge, which often lead to negative rate constants +returned by PestDF.</p> +<p>Therefore, mkin appears to suitable for kinetic evaluations according +to the NAFTA guidance.</p> +</div> +<div class="section level2"> +<h2 class="unnumbered" id="references">References<a class="anchor" aria-label="anchor" href="#references"></a> +</h2> +<div id="refs" class="references csl-bib-body hanging-indent"> +<div id="ref-usepa2015" class="csl-entry"> +US EPA. 2015. <span>“Standard Operating Procedure for Using the NAFTA +Guidance to Calculate Representative Half-Life Values and Characterizing +Pesticide Degradation.”</span> <a href="https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance" class="external-link">https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance</a>. +</div> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p10-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p10-1.png Binary files differnew file mode 100644 index 00000000..1d4a25e0 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p10-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p11-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p11-1.png Binary files differnew file mode 100644 index 00000000..71fc4699 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p11-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p12a-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p12a-1.png Binary files differnew file mode 100644 index 00000000..a1d3a084 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p12a-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p12b-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p12b-1.png Binary files differnew file mode 100644 index 00000000..1a6fdd03 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p12b-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p13-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p13-1.png Binary files differnew file mode 100644 index 00000000..f9b9f637 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p13-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p14-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p14-1.png Binary files differnew file mode 100644 index 00000000..9f7b0cc5 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p14-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p15a-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p15a-1.png Binary files differnew file mode 100644 index 00000000..aa55169e --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p15a-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p15b-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p15b-1.png Binary files differnew file mode 100644 index 00000000..d17c7aae --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p15b-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p16-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p16-1.png Binary files differnew file mode 100644 index 00000000..75ac7e5b --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p16-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p5a-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p5a-1.png Binary files differnew file mode 100644 index 00000000..12a62954 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p5a-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p5b-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p5b-1.png Binary files differnew file mode 100644 index 00000000..9e38e696 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p5b-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p6-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p6-1.png Binary files differnew file mode 100644 index 00000000..e6e3abbe --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p6-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p7-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p7-1.png Binary files differnew file mode 100644 index 00000000..7c5d4bab --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p7-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p8-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p8-1.png Binary files differnew file mode 100644 index 00000000..a1e3bf25 --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p8-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p9a-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p9a-1.png Binary files differnew file mode 100644 index 00000000..c247fd4e --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p9a-1.png diff --git a/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p9b-1.png b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p9b-1.png Binary files differnew file mode 100644 index 00000000..99d593fc --- /dev/null +++ b/docs/dev/articles/web_only/NAFTA_examples_files/figure-html/p9b-1.png diff --git a/docs/dev/articles/web_only/benchmarks.html b/docs/dev/articles/web_only/benchmarks.html new file mode 100644 index 00000000..bd6a443a --- /dev/null +++ b/docs/dev/articles/web_only/benchmarks.html @@ -0,0 +1,1133 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Benchmark timings for mkin • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Benchmark timings for mkin"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Benchmark timings for mkin</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 17 February 2023 +(rebuilt 2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/web_only/benchmarks.rmd" class="external-link"><code>vignettes/web_only/benchmarks.rmd</code></a></small> + <div class="d-none name"><code>benchmarks.rmd</code></div> + </div> + + + +<p>Each system is characterized by the operating system type, the CPU +type, the mkin version, and, as in June 2022 the current R version lead +to worse performance, the R version. A compiler was available, so if no +analytical solution was available, compiled ODE models are used.</p> +<p>Every fit is only performed once, so the accuracy of the benchmarks +is limited.</p> +<p>The following wrapper function for <code>mmkin</code> is used because +the way the error model is specified was changed in mkin version +0.9.49.1.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/utils/packageDescription.html" class="external-link">packageVersion</a></span><span class="op">(</span><span class="st">"mkin"</span><span class="op">)</span> <span class="op">></span> <span class="st">"0.9.48.1"</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">mmkin_bench</span> <span class="op"><-</span> <span class="kw">function</span><span class="op">(</span><span class="va">models</span>, <span class="va">datasets</span>, <span class="va">error_model</span> <span class="op">=</span> <span class="st">"const"</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="va">models</span>, <span class="va">datasets</span>, error_model <span class="op">=</span> <span class="va">error_model</span>, cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span> <span class="op">}</span></span> +<span><span class="op">}</span> <span class="kw">else</span> <span class="op">{</span></span> +<span> <span class="va">mmkin_bench</span> <span class="op"><-</span> <span class="kw">function</span><span class="op">(</span><span class="va">models</span>, <span class="va">datasets</span>, <span class="va">error_model</span> <span class="op">=</span> <span class="cn">NULL</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="va">models</span>, <span class="va">datasets</span>, reweight.method <span class="op">=</span> <span class="va">error_model</span>, cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span> <span class="op">}</span></span> +<span><span class="op">}</span></span></code></pre></div> +<div class="section level2"> +<h2 id="test-cases">Test cases<a class="anchor" aria-label="anchor" href="#test-cases"></a> +</h2> +<p>Parent only:</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">FOCUS_C</span> <span class="op"><-</span> <span class="va">FOCUS_2006_C</span></span> +<span><span class="va">FOCUS_D</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span></span> +<span><span class="va">parent_datasets</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">FOCUS_C</span>, <span class="va">FOCUS_D</span><span class="op">)</span></span> +<span></span> +<span></span> +<span><span class="va">t1</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span>, <span class="st">"HS"</span><span class="op">)</span>, <span class="va">parent_datasets</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span>, <span class="st">"HS"</span><span class="op">)</span>, <span class="va">parent_datasets</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span></code></pre></div> +<p>One metabolite:</p> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> parent <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span> +<span> m1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="va">FOMC_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> parent <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span> +<span> m1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="va">DFOP_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> parent <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="st">"m1"</span><span class="op">)</span>, <span class="co"># erroneously used FOMC twice, not fixed for consistency</span></span> +<span> m1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="va">t3</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOMC_SFO</span>, <span class="va">DFOP_SFO</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">FOCUS_D</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t4</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOMC_SFO</span>, <span class="va">DFOP_SFO</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">FOCUS_D</span><span class="op">)</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t5</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOMC_SFO</span>, <span class="va">DFOP_SFO</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">FOCUS_D</span><span class="op">)</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"obs"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span></code></pre></div> +<p>Two metabolites, synthetic data:</p> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">m_synth_SFO_lin</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M1"</span><span class="op">)</span>,</span> +<span> M1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M2"</span><span class="op">)</span>,</span> +<span> M2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> use_of_ff <span class="op">=</span> <span class="st">"max"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="va">m_synth_DFOP_par</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> M1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M2 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> use_of_ff <span class="op">=</span> <span class="st">"max"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="va">SFO_lin_a</span> <span class="op"><-</span> <span class="va">synthetic_data_for_UBA_2014</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span> +<span></span> +<span><span class="va">DFOP_par_c</span> <span class="op"><-</span> <span class="va">synthetic_data_for_UBA_2014</span><span class="op">[[</span><span class="fl">12</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span> +<span></span> +<span><span class="va">t6</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">m_synth_SFO_lin</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">SFO_lin_a</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t7</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">m_synth_DFOP_par</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">DFOP_par_c</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span></span> +<span><span class="va">t8</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">m_synth_SFO_lin</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">SFO_lin_a</span><span class="op">)</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t9</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">m_synth_DFOP_par</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">DFOP_par_c</span><span class="op">)</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span></span> +<span><span class="va">t10</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">m_synth_SFO_lin</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">SFO_lin_a</span><span class="op">)</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"obs"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t11</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="fu">mmkin_bench</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">m_synth_DFOP_par</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">DFOP_par_c</span><span class="op">)</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"obs"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="results">Results<a class="anchor" aria-label="anchor" href="#results"></a> +</h2> +<p>Benchmarks for all available error models are shown. They are +intended for improving mkin, not for comparing CPUs or operating +systems. All trademarks belong to their respective owners.</p> +<div class="section level3"> +<h3 id="parent-only">Parent only<a class="anchor" aria-label="anchor" href="#parent-only"></a> +</h3> +<p>Constant variance (t1) and two-component error model (t2) for four +models fitted to two datasets, i.e. eight fits for each test.</p> +<table style="width:100%;" class="table"> +<colgroup> +<col width="8%"> +<col width="54%"> +<col width="8%"> +<col width="12%"> +<col width="8%"> +<col width="9%"> +</colgroup> +<thead><tr class="header"> +<th align="left">OS</th> +<th align="left">CPU</th> +<th align="left">R</th> +<th align="left">mkin</th> +<th align="right">t1</th> +<th align="right">t2</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.48.1</td> +<td align="right">3.610</td> +<td align="right">11.019</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.1</td> +<td align="right">8.184</td> +<td align="right">22.889</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.2</td> +<td align="right">7.064</td> +<td align="right">12.558</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.3</td> +<td align="right">7.296</td> +<td align="right">21.239</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.4</td> +<td align="right">5.936</td> +<td align="right">20.545</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.2</td> +<td align="right">1.714</td> +<td align="right">3.971</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.3</td> +<td align="right">1.752</td> +<td align="right">4.156</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.4</td> +<td align="right">1.786</td> +<td align="right">3.729</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">1.0.3</td> +<td align="right">1.881</td> +<td align="right">3.504</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">1.0.4</td> +<td align="right">1.867</td> +<td align="right">3.450</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.1.3</td> +<td align="left">1.1.0</td> +<td align="right">1.791</td> +<td align="right">3.289</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.0</td> +<td align="right">1.842</td> +<td align="right">3.453</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.2.1</td> +<td align="left">1.1.0</td> +<td align="right">1.959</td> +<td align="right">4.116</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.1.3</td> +<td align="left">1.1.0</td> +<td align="right">1.877</td> +<td align="right">3.906</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.2.1</td> +<td align="left">1.1.1</td> +<td align="right">1.644</td> +<td align="right">3.172</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.1</td> +<td align="right">1.770</td> +<td align="right">3.377</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.2</td> +<td align="right">1.957</td> +<td align="right">3.633</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.2</td> +<td align="left">1.2.0</td> +<td align="right">2.140</td> +<td align="right">3.774</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.2</td> +<td align="left">1.2.2</td> +<td align="right">2.187</td> +<td align="right">3.851</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.0</td> +<td align="right">1.288</td> +<td align="right">1.794</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.2</td> +<td align="right">1.276</td> +<td align="right">1.804</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.3</td> +<td align="right">1.370</td> +<td align="right">1.883</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.3</td> +<td align="left">1.2.3</td> +<td align="right">1.406</td> +<td align="right">1.948</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.3.0</td> +<td align="left">1.2.4</td> +<td align="right">1.386</td> +<td align="right">1.960</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">4.3.1</td> +<td align="left">1.2.5</td> +<td align="right">2.369</td> +<td align="right">3.632</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">4.3.1</td> +<td align="left">1.2.6</td> +<td align="right">2.856</td> +<td align="right">4.960</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.3.2</td> +<td align="left">1.2.6</td> +<td align="right">1.408</td> +<td align="right">2.041</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.4.2</td> +<td align="left">1.2.9</td> +<td align="right">1.323</td> +<td align="right">1.925</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.4.2</td> +<td align="left">1.2.10</td> +<td align="right">1.371</td> +<td align="right">1.980</td> +</tr> +</tbody> +</table> +</div> +<div class="section level3"> +<h3 id="one-metabolite">One metabolite<a class="anchor" aria-label="anchor" href="#one-metabolite"></a> +</h3> +<p>Constant variance (t3), two-component error model (t4), and variance +by variable (t5) for three models fitted to one dataset, i.e. three fits +for each test.</p> +<table class="table"> +<colgroup> +<col width="7%"> +<col width="50%"> +<col width="7%"> +<col width="11%"> +<col width="7%"> +<col width="8%"> +<col width="7%"> +</colgroup> +<thead><tr class="header"> +<th align="left">OS</th> +<th align="left">CPU</th> +<th align="left">R</th> +<th align="left">mkin</th> +<th align="right">t3</th> +<th align="right">t4</th> +<th align="right">t5</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.48.1</td> +<td align="right">3.764</td> +<td align="right">14.347</td> +<td align="right">9.495</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.1</td> +<td align="right">4.649</td> +<td align="right">13.789</td> +<td align="right">6.395</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.2</td> +<td align="right">4.786</td> +<td align="right">8.461</td> +<td align="right">5.675</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.3</td> +<td align="right">4.510</td> +<td align="right">13.805</td> +<td align="right">7.386</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.4</td> +<td align="right">4.446</td> +<td align="right">15.335</td> +<td align="right">6.002</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.2</td> +<td align="right">1.402</td> +<td align="right">6.174</td> +<td align="right">2.764</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.3</td> +<td align="right">1.430</td> +<td align="right">6.615</td> +<td align="right">2.878</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.4</td> +<td align="right">1.397</td> +<td align="right">7.251</td> +<td align="right">2.810</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">1.0.3</td> +<td align="right">1.430</td> +<td align="right">6.344</td> +<td align="right">2.798</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">1.0.4</td> +<td align="right">1.415</td> +<td align="right">6.364</td> +<td align="right">2.820</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.1.3</td> +<td align="left">1.1.0</td> +<td align="right">1.310</td> +<td align="right">6.279</td> +<td align="right">2.681</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.0</td> +<td align="right">3.802</td> +<td align="right">21.247</td> +<td align="right">8.461</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.2.1</td> +<td align="left">1.1.0</td> +<td align="right">3.334</td> +<td align="right">19.521</td> +<td align="right">7.565</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.1.3</td> +<td align="left">1.1.0</td> +<td align="right">1.578</td> +<td align="right">8.058</td> +<td align="right">3.339</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.2.1</td> +<td align="left">1.1.1</td> +<td align="right">1.230</td> +<td align="right">5.839</td> +<td align="right">2.444</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.1</td> +<td align="right">1.308</td> +<td align="right">5.758</td> +<td align="right">2.558</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.2</td> +<td align="right">1.503</td> +<td align="right">6.147</td> +<td align="right">2.803</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.2</td> +<td align="left">1.2.0</td> +<td align="right">1.554</td> +<td align="right">6.193</td> +<td align="right">2.843</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.2</td> +<td align="left">1.2.2</td> +<td align="right">1.585</td> +<td align="right">6.335</td> +<td align="right">3.003</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.0</td> +<td align="right">0.792</td> +<td align="right">2.378</td> +<td align="right">1.245</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.2</td> +<td align="right">0.784</td> +<td align="right">2.355</td> +<td align="right">1.233</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.3</td> +<td align="right">0.770</td> +<td align="right">2.011</td> +<td align="right">1.123</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.3</td> +<td align="left">1.2.3</td> +<td align="right">0.793</td> +<td align="right">2.109</td> +<td align="right">1.178</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.3.0</td> +<td align="left">1.2.4</td> +<td align="right">0.779</td> +<td align="right">2.080</td> +<td align="right">1.106</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">4.3.1</td> +<td align="left">1.2.5</td> +<td align="right">1.823</td> +<td align="right">5.555</td> +<td align="right">2.404</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">4.3.1</td> +<td align="left">1.2.6</td> +<td align="right">1.761</td> +<td align="right">5.405</td> +<td align="right">2.462</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.3.2</td> +<td align="left">1.2.6</td> +<td align="right">0.795</td> +<td align="right">2.228</td> +<td align="right">1.178</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.4.2</td> +<td align="left">1.2.9</td> +<td align="right">0.754</td> +<td align="right">2.153</td> +<td align="right">1.139</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.4.2</td> +<td align="left">1.2.10</td> +<td align="right">0.762</td> +<td align="right">2.179</td> +<td align="right">1.131</td> +</tr> +</tbody> +</table> +</div> +<div class="section level3"> +<h3 id="two-metabolites">Two metabolites<a class="anchor" aria-label="anchor" href="#two-metabolites"></a> +</h3> +<p>Constant variance (t6 and t7), two-component error model (t8 and t9), +and variance by variable (t10 and t11) for one model fitted to one +dataset, i.e. one fit for each test.</p> +<table style="width:100%;" class="table"> +<colgroup> +<col width="5%"> +<col width="40%"> +<col width="5%"> +<col width="8%"> +<col width="5%"> +<col width="5%"> +<col width="5%"> +<col width="6%"> +<col width="5%"> +<col width="6%"> +</colgroup> +<thead><tr class="header"> +<th align="left">OS</th> +<th align="left">CPU</th> +<th align="left">R</th> +<th align="left">mkin</th> +<th align="right">t6</th> +<th align="right">t7</th> +<th align="right">t8</th> +<th align="right">t9</th> +<th align="right">t10</th> +<th align="right">t11</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.48.1</td> +<td align="right">2.623</td> +<td align="right">4.587</td> +<td align="right">7.525</td> +<td align="right">16.621</td> +<td align="right">8.576</td> +<td align="right">31.267</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.1</td> +<td align="right">2.542</td> +<td align="right">4.128</td> +<td align="right">4.632</td> +<td align="right">8.171</td> +<td align="right">3.676</td> +<td align="right">5.636</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.2</td> +<td align="right">2.723</td> +<td align="right">4.478</td> +<td align="right">4.862</td> +<td align="right">7.618</td> +<td align="right">3.579</td> +<td align="right">5.574</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.3</td> +<td align="right">2.643</td> +<td align="right">4.374</td> +<td align="right">7.020</td> +<td align="right">11.124</td> +<td align="right">5.388</td> +<td align="right">7.365</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.49.4</td> +<td align="right">2.635</td> +<td align="right">4.259</td> +<td align="right">4.737</td> +<td align="right">7.763</td> +<td align="right">3.427</td> +<td align="right">5.626</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.2</td> +<td align="right">0.777</td> +<td align="right">1.236</td> +<td align="right">1.332</td> +<td align="right">2.872</td> +<td align="right">2.069</td> +<td align="right">2.987</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.3</td> +<td align="right">0.858</td> +<td align="right">1.264</td> +<td align="right">1.333</td> +<td align="right">2.984</td> +<td align="right">2.113</td> +<td align="right">3.073</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">0.9.50.4</td> +<td align="right">0.783</td> +<td align="right">1.282</td> +<td align="right">1.486</td> +<td align="right">3.815</td> +<td align="right">1.958</td> +<td align="right">3.105</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">1.0.3</td> +<td align="right">0.763</td> +<td align="right">1.244</td> +<td align="right">1.457</td> +<td align="right">3.054</td> +<td align="right">1.923</td> +<td align="right">2.839</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">NA</td> +<td align="left">1.0.4</td> +<td align="right">0.785</td> +<td align="right">1.252</td> +<td align="right">1.466</td> +<td align="right">3.091</td> +<td align="right">1.936</td> +<td align="right">2.826</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.1.3</td> +<td align="left">1.1.0</td> +<td align="right">0.744</td> +<td align="right">1.227</td> +<td align="right">1.288</td> +<td align="right">3.553</td> +<td align="right">1.895</td> +<td align="right">2.738</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.0</td> +<td align="right">3.018</td> +<td align="right">4.165</td> +<td align="right">5.036</td> +<td align="right">10.844</td> +<td align="right">6.623</td> +<td align="right">9.722</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.2.1</td> +<td align="left">1.1.0</td> +<td align="right">2.522</td> +<td align="right">3.792</td> +<td align="right">4.143</td> +<td align="right">11.268</td> +<td align="right">5.935</td> +<td align="right">8.728</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.1.3</td> +<td align="left">1.1.0</td> +<td align="right">0.907</td> +<td align="right">1.535</td> +<td align="right">1.589</td> +<td align="right">4.544</td> +<td align="right">2.302</td> +<td align="right">3.463</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">i7-4710MQ</td> +<td align="left">4.2.1</td> +<td align="left">1.1.1</td> +<td align="right">0.678</td> +<td align="right">1.095</td> +<td align="right">1.149</td> +<td align="right">3.247</td> +<td align="right">1.658</td> +<td align="right">2.472</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.1</td> +<td align="right">0.696</td> +<td align="right">1.124</td> +<td align="right">1.321</td> +<td align="right">2.786</td> +<td align="right">1.744</td> +<td align="right">2.566</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.1</td> +<td align="left">1.1.2</td> +<td align="right">0.861</td> +<td align="right">1.295</td> +<td align="right">1.507</td> +<td align="right">3.102</td> +<td align="right">1.961</td> +<td align="right">2.852</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.2</td> +<td align="left">1.2.0</td> +<td align="right">0.913</td> +<td align="right">1.345</td> +<td align="right">1.539</td> +<td align="right">3.011</td> +<td align="right">1.987</td> +<td align="right">2.802</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 7 1700</td> +<td align="left">4.2.2</td> +<td align="left">1.2.2</td> +<td align="right">0.935</td> +<td align="right">1.381</td> +<td align="right">1.551</td> +<td align="right">3.209</td> +<td align="right">1.976</td> +<td align="right">3.013</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.0</td> +<td align="right">0.445</td> +<td align="right">0.591</td> +<td align="right">0.660</td> +<td align="right">1.190</td> +<td align="right">0.814</td> +<td align="right">1.100</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.2</td> +<td align="right">0.443</td> +<td align="right">0.586</td> +<td align="right">0.661</td> +<td align="right">1.176</td> +<td align="right">0.803</td> +<td align="right">1.097</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.2</td> +<td align="left">1.2.3</td> +<td align="right">0.418</td> +<td align="right">0.530</td> +<td align="right">0.591</td> +<td align="right">1.006</td> +<td align="right">0.716</td> +<td align="right">0.949</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.2.3</td> +<td align="left">1.2.3</td> +<td align="right">0.432</td> +<td align="right">0.549</td> +<td align="right">0.609</td> +<td align="right">1.052</td> +<td align="right">0.743</td> +<td align="right">0.989</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.3.0</td> +<td align="left">1.2.4</td> +<td align="right">0.410</td> +<td align="right">0.526</td> +<td align="right">0.553</td> +<td align="right">1.249</td> +<td align="right">0.712</td> +<td align="right">0.948</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">4.3.1</td> +<td align="left">1.2.5</td> +<td align="right">0.798</td> +<td align="right">1.096</td> +<td align="right">1.217</td> +<td align="right">3.173</td> +<td align="right">1.634</td> +<td align="right">2.271</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">4.3.1</td> +<td align="left">1.2.6</td> +<td align="right">0.813</td> +<td align="right">1.136</td> +<td align="right">1.220</td> +<td align="right">3.114</td> +<td align="right">1.598</td> +<td align="right">2.255</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.3.2</td> +<td align="left">1.2.6</td> +<td align="right">0.439</td> +<td align="right">0.557</td> +<td align="right">0.585</td> +<td align="right">1.338</td> +<td align="right">0.749</td> +<td align="right">0.999</td> +</tr> +<tr class="even"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.4.2</td> +<td align="left">1.2.9</td> +<td align="right">0.424</td> +<td align="right">0.534</td> +<td align="right">0.560</td> +<td align="right">1.298</td> +<td align="right">0.735</td> +<td align="right">0.981</td> +</tr> +<tr class="odd"> +<td align="left">Linux</td> +<td align="left">Ryzen 9 7950X</td> +<td align="left">4.4.2</td> +<td align="left">1.2.10</td> +<td align="right">0.426</td> +<td align="right">0.533</td> +<td align="right">0.565</td> +<td align="right">1.296</td> +<td align="right">0.728</td> +<td align="right">0.978</td> +</tr> +</tbody> +</table> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/web_only/compiled_models.html b/docs/dev/articles/web_only/compiled_models.html new file mode 100644 index 00000000..113f7b67 --- /dev/null +++ b/docs/dev/articles/web_only/compiled_models.html @@ -0,0 +1,231 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Performance benefit by using compiled model definitions in mkin • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Performance benefit by using compiled model definitions in mkin"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Performance benefit by using compiled model definitions in mkin</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">2025-02-14</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/web_only/compiled_models.rmd" class="external-link"><code>vignettes/web_only/compiled_models.rmd</code></a></small> + <div class="d-none name"><code>compiled_models.rmd</code></div> + </div> + + + +<div class="section level2"> +<h2 id="how-to-benefit-from-compiled-models">How to benefit from compiled models<a class="anchor" aria-label="anchor" href="#how-to-benefit-from-compiled-models"></a> +</h2> +<p>When using an mkin version equal to or greater than 0.9-36 and a C +compiler is available, you will see a message that the model is being +compiled from autogenerated C code when defining a model using mkinmod. +Starting from version 0.9.49.9, the <code><a href="../../reference/mkinmod.html">mkinmod()</a></code> function +checks for presence of a compiler using</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu">pkgbuild</span><span class="fu">::</span><span class="fu"><a href="https://pkgbuild.r-lib.org/reference/has_compiler.html" class="external-link">has_compiler</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<p>In previous versions, it used <code>Sys.which("gcc")</code> for this +check.</p> +<p>On Linux, you need to have the essential build tools like make and +gcc or clang installed. On Debian based linux distributions, these will +be pulled in by installing the build-essential package.</p> +<p>On MacOS, which I do not use personally, I have had reports that a +compiler is available by default.</p> +<p>On Windows, you need to install Rtools and have the path to its bin +directory in your PATH variable. You do not need to modify the PATH +variable when installing Rtools. Instead, I would recommend to put the +line</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/Sys.setenv.html" class="external-link">Sys.setenv</a></span><span class="op">(</span>PATH <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"C:/Rtools/bin"</span>, <span class="fu"><a href="https://rdrr.io/r/base/Sys.getenv.html" class="external-link">Sys.getenv</a></span><span class="op">(</span><span class="st">"PATH"</span><span class="op">)</span>, sep<span class="op">=</span><span class="st">";"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<p>into your .Rprofile startup file. This is just a text file with some +R code that is executed when your R session starts. It has to be named +.Rprofile and has to be located in your home directory, which will +generally be your Documents folder. You can check the location of the +home directory used by R by issuing</p> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/Sys.getenv.html" class="external-link">Sys.getenv</a></span><span class="op">(</span><span class="st">"HOME"</span><span class="op">)</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="comparison-with-other-solution-methods">Comparison with other solution methods<a class="anchor" aria-label="anchor" href="#comparison-with-other-solution-methods"></a> +</h2> +<p>First, we build a simple degradation model for a parent compound with +one metabolite, and we remove zero values from the dataset.</p> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="st"><a href="https://pkgdown.jrwb.de/mkin/">"mkin"</a></span>, quietly <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> parent <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span> +<span> m1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">FOCUS_D</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span></span></code></pre></div> +<p>We can compare the performance of the Eigenvalue based solution +against the compiled version and the R implementation of the +differential equations using the benchmark package. In the output of +below code, the warnings about zero being removed from the FOCUS D +dataset are suppressed. Since mkin version 0.9.49.11, an analytical +solution is also implemented, which is included in the tests below.</p> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="va"><a href="http://rbenchmark.googlecode.com" class="external-link">rbenchmark</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">b.1</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/rbenchmark/man/benchmark.html" class="external-link">benchmark</a></span><span class="op">(</span></span> +<span> <span class="st">"deSolve, not compiled"</span> <span class="op">=</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>,</span> +<span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span>,</span> +<span> use_compiled <span class="op">=</span> <span class="cn">FALSE</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> <span class="st">"Eigenvalue based"</span> <span class="op">=</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>,</span> +<span> solution_type <span class="op">=</span> <span class="st">"eigen"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> <span class="st">"deSolve, compiled"</span> <span class="op">=</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>,</span> +<span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> <span class="st">"analytical"</span> <span class="op">=</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>,</span> +<span> solution_type <span class="op">=</span> <span class="st">"analytical"</span>,</span> +<span> use_compiled <span class="op">=</span> <span class="cn">FALSE</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> replications <span class="op">=</span> <span class="fl">1</span>, order <span class="op">=</span> <span class="st">"relative"</span>,</span> +<span> columns <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"test"</span>, <span class="st">"replications"</span>, <span class="st">"relative"</span>, <span class="st">"elapsed"</span><span class="op">)</span><span class="op">)</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">b.1</span><span class="op">)</span></span> +<span><span class="op">}</span> <span class="kw">else</span> <span class="op">{</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="st">"R package rbenchmark is not available"</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +<pre><code><span><span class="co">## test replications relative elapsed</span></span> +<span><span class="co">## 4 analytical 1 1.000 0.102</span></span> +<span><span class="co">## 3 deSolve, compiled 1 1.324 0.135</span></span> +<span><span class="co">## 2 Eigenvalue based 1 1.706 0.174</span></span> +<span><span class="co">## 1 deSolve, not compiled 1 22.627 2.308</span></span></code></pre> +<p>We see that using the compiled model is by more than a factor of 10 +faster than using deSolve without compiled code.</p> +</div> +<div class="section level2"> +<h2 id="model-without-analytical-solution">Model without analytical solution<a class="anchor" aria-label="anchor" href="#model-without-analytical-solution"></a> +</h2> +<p>This evaluation is also taken from the example section of mkinfit. No +analytical solution is available for this system, and now Eigenvalue +based solution is possible, so only deSolve using with or without +compiled code is available.</p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="va"><a href="http://rbenchmark.googlecode.com" class="external-link">rbenchmark</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">FOMC_SFO</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> parent <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span> +<span> m1 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span> <span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span> +<span></span> +<span> <span class="va">b.2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/rbenchmark/man/benchmark.html" class="external-link">benchmark</a></span><span class="op">(</span></span> +<span> <span class="st">"deSolve, not compiled"</span> <span class="op">=</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">FOMC_SFO</span>, <span class="va">FOCUS_D</span>,</span> +<span> use_compiled <span class="op">=</span> <span class="cn">FALSE</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> <span class="st">"deSolve, compiled"</span> <span class="op">=</span> <span class="fu"><a href="../../reference/mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">FOMC_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> replications <span class="op">=</span> <span class="fl">1</span>, order <span class="op">=</span> <span class="st">"relative"</span>,</span> +<span> columns <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"test"</span>, <span class="st">"replications"</span>, <span class="st">"relative"</span>, <span class="st">"elapsed"</span><span class="op">)</span><span class="op">)</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">b.2</span><span class="op">)</span></span> +<span> <span class="va">factor_FOMC_SFO</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/Round.html" class="external-link">round</a></span><span class="op">(</span><span class="va">b.2</span><span class="op">[</span><span class="st">"1"</span>, <span class="st">"relative"</span><span class="op">]</span><span class="op">)</span></span> +<span><span class="op">}</span> <span class="kw">else</span> <span class="op">{</span></span> +<span> <span class="va">factor_FOMC_SFO</span> <span class="op"><-</span> <span class="cn">NA</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="st">"R package benchmark is not available"</span><span class="op">)</span></span> +<span><span class="op">}</span></span></code></pre></div> +<pre><code><span><span class="co">## Temporary DLL for differentials generated and loaded</span></span></code></pre> +<pre><code><span><span class="co">## test replications relative elapsed</span></span> +<span><span class="co">## 2 deSolve, compiled 1 1.000 0.170</span></span> +<span><span class="co">## 1 deSolve, not compiled 1 23.865 4.057</span></span></code></pre> +<p>Here we get a performance benefit of a factor of 24 using the version +of the differential equation model compiled from C code!</p> +<p>This vignette was built with mkin 1.2.10 on</p> +<pre><code><span><span class="co">## R version 4.4.2 (2024-10-31)</span></span> +<span><span class="co">## Platform: x86_64-pc-linux-gnu</span></span> +<span><span class="co">## Running under: Debian GNU/Linux 12 (bookworm)</span></span></code></pre> +<pre><code><span><span class="co">## CPU model: AMD Ryzen 9 7950X 16-Core Processor</span></span></code></pre> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/web_only/dimethenamid_2018.html b/docs/dev/articles/web_only/dimethenamid_2018.html new file mode 100644 index 00000000..572f253d --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018.html @@ -0,0 +1,651 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Example evaluations of the dimethenamid data from 2018 • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Example evaluations of the dimethenamid data from 2018"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Example evaluations of the dimethenamid data from 2018</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 1 July 2022, +built on 14 Feb 2025</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/web_only/dimethenamid_2018.rmd" class="external-link"><code>vignettes/web_only/dimethenamid_2018.rmd</code></a></small> + <div class="d-none name"><code>dimethenamid_2018.rmd</code></div> + </div> + + + +<p><a href="http://www.jrwb.de" class="external-link">Wissenschaftlicher Berater, Kronacher +Str. 12, 79639 Grenzach-Wyhlen, Germany</a></p> +<div class="section level2"> +<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a> +</h2> +<p>A first analysis of the data analysed here was presented in a recent +journal article on nonlinear mixed-effects models in degradation +kinetics <span class="citation">(Ranke et al. 2021)</span>. That +analysis was based on the <code>nlme</code> package and a development +version of the <code>saemix</code> package that was unpublished at the +time. Meanwhile, version 3.0 of the <code>saemix</code> package is +available from the CRAN repository. Also, it turned out that there was +an error in the handling of the Borstel data in the mkin package at the +time, leading to the duplication of a few data points from that soil. +The dataset in the mkin package has been corrected, and the interface to +<code>saemix</code> in the mkin package has been updated to use the +released version.</p> +<p>This vignette is intended to present an up to date analysis of the +data, using the corrected dataset and released versions of +<code>mkin</code> and <code>saemix</code>.</p> +</div> +<div class="section level2"> +<h2 id="data">Data<a class="anchor" aria-label="anchor" href="#data"></a> +</h2> +<p>Residue data forming the basis for the endpoints derived in the +conclusion on the peer review of the pesticide risk assessment of +dimethenamid-P published by the European Food Safety Authority (EFSA) in +2018 <span class="citation">(EFSA 2018)</span> were transcribed from the +risk assessment report <span class="citation">(Rapporteur Member State +Germany, Co-Rapporteur Member State Bulgaria 2018)</span> which can be +downloaded from the Open EFSA repository <a href="https://open.efsa.europa.eu" class="external-link">https://open.efsa.europa.eu/study-inventory/EFSA-Q-2014-00716</a>.</p> +<p>The data are <a href="https://pkgdown.jrwb.de/mkin/reference/dimethenamid_2018.html">available +in the mkin package</a>. The following code (hidden by default, please +use the button to the right to show it) treats the data available for +the racemic mixture dimethenamid (DMTA) and its enantiomer +dimethenamid-P (DMTAP) in the same way, as no difference between their +degradation behaviour was identified in the EU risk assessment. The +observation times of each dataset are multiplied with the corresponding +normalisation factor also available in the dataset, in order to make it +possible to describe all datasets with a single set of parameters.</p> +<p>Also, datasets observed in the same soil are merged, resulting in +dimethenamid (DMTA) data from six soils.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span>, quietly <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="va">dmta_ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">7</span>, <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span><span class="op">[[</span><span class="va">i</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span> +<span> <span class="va">ds_i</span><span class="op">[</span><span class="va">ds_i</span><span class="op">$</span><span class="va">name</span> <span class="op">==</span> <span class="st">"DMTAP"</span>, <span class="st">"name"</span><span class="op">]</span> <span class="op"><-</span> <span class="st">"DMTA"</span></span> +<span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op">*</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">f_time_norm</span><span class="op">[</span><span class="va">i</span><span class="op">]</span></span> +<span> <span class="va">ds_i</span></span> +<span><span class="op">}</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="va">ds</span><span class="op">$</span><span class="va">title</span><span class="op">)</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span>, <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="parent-degradation">Parent degradation<a class="anchor" aria-label="anchor" href="#parent-degradation"></a> +</h2> +<p>We evaluate the observed degradation of the parent compound using +simple exponential decline (SFO) and biexponential decline (DFOP), using +constant variance (const) and a two-component variance (tc) as error +models.</p> +<div class="section level3"> +<h3 id="separate-evaluations">Separate evaluations<a class="anchor" aria-label="anchor" href="#separate-evaluations"></a> +</h3> +<p>As a first step, to get a visual impression of the fit of the +different models, we do separate evaluations for each soil using the +mmkin function from the mkin package:</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_parent_mkin_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"DFOP"</span><span class="op">)</span>, <span class="va">dmta_ds</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"const"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="va">f_parent_mkin_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"DFOP"</span><span class="op">)</span>, <span class="va">dmta_ds</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"tc"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<p>The plot of the individual SFO fits shown below suggests that at +least in some datasets the degradation slows down towards later time +points, and that the scatter of the residuals error is smaller for +smaller values (panel to the right):</p> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="../../reference/mixed.html">mixed</a></span><span class="op">(</span><span class="va">f_parent_mkin_const</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/f_parent_mkin_sfo_const-1.png" width="700"></p> +<p>Using biexponential decline (DFOP) results in a slightly more random +scatter of the residuals:</p> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="../../reference/mixed.html">mixed</a></span><span class="op">(</span><span class="va">f_parent_mkin_const</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_const-1.png" width="700"></p> +<p>The population curve (bold line) in the above plot results from +taking the mean of the individual transformed parameters, i.e. of log k1 +and log k2, as well as of the logit of the g parameter of the DFOP +model). Here, this procedure does not result in parameters that +represent the degradation well, because in some datasets the fitted +value for k2 is extremely close to zero, leading to a log k2 value that +dominates the average. This is alleviated if only rate constants that +pass the t-test for significant difference from zero (on the +untransformed scale) are considered in the averaging:</p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="../../reference/mixed.html">mixed</a></span><span class="op">(</span><span class="va">f_parent_mkin_const</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span>, test_log_parms <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_const_test-1.png" width="700"></p> +<p>While this is visually much more satisfactory, such an average +procedure could introduce a bias, as not all results from the individual +fits enter the population curve with the same weight. This is where +nonlinear mixed-effects models can help out by treating all datasets +with equally by fitting a parameter distribution model together with the +degradation model and the error model (see below).</p> +<p>The remaining trend of the residuals to be higher for higher +predicted residues is reduced by using the two-component error +model:</p> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="../../reference/mixed.html">mixed</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span>, test_log_parms <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_tc_test-1.png" width="700"></p> +<p>However, note that in the case of using this error model, the fits to +the Flaach and BBA 2.3 datasets appear to be ill-defined, indicated by +the fact that they did not converge:</p> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span></span></code></pre></div> +<pre><code><mmkin> object +Status of individual fits: + + dataset +model Calke Borstel Flaach BBA 2.2 BBA 2.3 Elliot + DFOP OK OK OK OK C OK + +C: Optimisation did not converge: +iteration limit reached without convergence (10) +OK: No warnings</code></pre> +</div> +<div class="section level3"> +<h3 id="nonlinear-mixed-effects-models">Nonlinear mixed-effects models<a class="anchor" aria-label="anchor" href="#nonlinear-mixed-effects-models"></a> +</h3> +<p>Instead of taking a model selection decision for each of the +individual fits, we fit nonlinear mixed-effects models (using different +fitting algorithms as implemented in different packages) and do model +selection using all available data at the same time. In order to make +sure that these decisions are not unduly influenced by the type of +algorithm used, by implementation details or by the use of wrong control +parameters, we compare the model selection results obtained with +different R packages, with different algorithms and checking control +parameters.</p> +<div class="section level4"> +<h4 id="nlme">nlme<a class="anchor" aria-label="anchor" href="#nlme"></a> +</h4> +<p>The nlme package was the first R extension providing facilities to +fit nonlinear mixed-effects models. We would like to do model selection +from all four combinations of degradation models and error models based +on the AIC. However, fitting the DFOP model with constant variance and +using default control parameters results in an error, signalling that +the maximum number of 50 iterations was reached, potentially indicating +overparameterisation. Nevertheless, the algorithm converges when the +two-component error model is used in combination with the DFOP model. +This can be explained by the fact that the smaller residues observed at +later sampling times get more weight when using the two-component error +model which will counteract the tendency of the algorithm to try +parameter combinations unsuitable for fitting these data.</p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://svn.r-project.org/R-packages/trunk/nlme/" class="external-link">nlme</a></span><span class="op">)</span></span> +<span><span class="va">f_parent_nlme_sfo_const</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_parent_mkin_const</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span></span> +<span><span class="co"># f_parent_nlme_dfop_const <- nlme(f_parent_mkin_const["DFOP", ])</span></span> +<span><span class="va">f_parent_nlme_sfo_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span></span> +<span><span class="va">f_parent_nlme_dfop_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span></span></code></pre></div> +<p>Note that a certain degree of overparameterisation is also indicated +by a warning obtained when fitting DFOP with the two-component error +model (‘false convergence’ in the ‘LME step’ in iteration 3). However, +as this warning does not occur in later iterations, and specifically not +in the last of the 5 iterations, we can ignore this warning.</p> +<p>The model comparison function of the nlme package can directly be +applied to these fits showing a much lower AIC for the DFOP model fitted +with the two-component error model. Also, the likelihood ratio test +indicates that this difference is significant as the p-value is below +0.0001.</p> +<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span></span> +<span> <span class="va">f_parent_nlme_sfo_const</span>, <span class="va">f_parent_nlme_sfo_tc</span>, <span class="va">f_parent_nlme_dfop_tc</span></span> +<span><span class="op">)</span></span></code></pre></div> +<pre><code> Model df AIC BIC logLik Test L.Ratio p-value +f_parent_nlme_sfo_const 1 5 796.60 811.82 -393.30 +f_parent_nlme_sfo_tc 2 6 798.60 816.86 -393.30 1 vs 2 0.00 0.998 +f_parent_nlme_dfop_tc 3 10 671.91 702.34 -325.95 2 vs 3 134.69 <.0001</code></pre> +<p>In addition to these fits, attempts were also made to include +correlations between random effects by using the log Cholesky +parameterisation of the matrix specifying them. The code used for these +attempts can be made visible below.</p> +<div class="sourceCode" id="cb12"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_parent_nlme_sfo_const_logchol</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_parent_mkin_const</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span>,</span> +<span> random <span class="op">=</span> <span class="fu">nlme</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/pkg/nlme/man/pdLogChol.html" class="external-link">pdLogChol</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">DMTA_0</span> <span class="op">~</span> <span class="fl">1</span>, <span class="va">log_k_DMTA</span> <span class="op">~</span> <span class="fl">1</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_parent_nlme_sfo_const</span>, <span class="va">f_parent_nlme_sfo_const_logchol</span><span class="op">)</span></span> +<span><span class="va">f_parent_nlme_sfo_tc_logchol</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span>,</span> +<span> random <span class="op">=</span> <span class="fu">nlme</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/pkg/nlme/man/pdLogChol.html" class="external-link">pdLogChol</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">DMTA_0</span> <span class="op">~</span> <span class="fl">1</span>, <span class="va">log_k_DMTA</span> <span class="op">~</span> <span class="fl">1</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_parent_nlme_sfo_tc</span>, <span class="va">f_parent_nlme_sfo_tc_logchol</span><span class="op">)</span></span> +<span><span class="va">f_parent_nlme_dfop_tc_logchol</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_parent_mkin_const</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span>,</span> +<span> random <span class="op">=</span> <span class="fu">nlme</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/pkg/nlme/man/pdLogChol.html" class="external-link">pdLogChol</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">DMTA_0</span> <span class="op">~</span> <span class="fl">1</span>, <span class="va">log_k1</span> <span class="op">~</span> <span class="fl">1</span>, <span class="va">log_k2</span> <span class="op">~</span> <span class="fl">1</span>, <span class="va">g_qlogis</span> <span class="op">~</span> <span class="fl">1</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_parent_nlme_dfop_tc</span>, <span class="va">f_parent_nlme_dfop_tc_logchol</span><span class="op">)</span></span></code></pre></div> +<p>While the SFO variants converge fast, the additional parameters +introduced by this lead to convergence warnings for the DFOP model. The +model comparison clearly show that adding correlations between random +effects does not improve the fits.</p> +<p>The selected model (DFOP with two-component error) fitted to the data +assuming no correlations between random effects is shown below.</p> +<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_parent_nlme_dfop_tc</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/plot_parent_nlme-1.png" width="700"></p> +</div> +<div class="section level4"> +<h4 id="saemix">saemix<a class="anchor" aria-label="anchor" href="#saemix"></a> +</h4> +<p>The saemix package provided the first Open Source implementation of +the Stochastic Approximation to the Expectation Maximisation (SAEM) +algorithm. SAEM fits of degradation models can be conveniently performed +using an interface to the saemix package available in current +development versions of the mkin package.</p> +<p>The corresponding SAEM fits of the four combinations of degradation +and error models are fitted below. As there is no convergence criterion +implemented in the saemix package, the convergence plots need to be +manually checked for every fit. We define control settings that work +well for all the parent data fits shown in this vignette.</p> +<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">saemix</span><span class="op">)</span></span> +<span><span class="va">saemix_control</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/saemixControl.html" class="external-link">saemixControl</a></span><span class="op">(</span>nbiter.saemix <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">800</span>, <span class="fl">300</span><span class="op">)</span>, nb.chains <span class="op">=</span> <span class="fl">15</span>,</span> +<span> print <span class="op">=</span> <span class="cn">FALSE</span>, save <span class="op">=</span> <span class="cn">FALSE</span>, save.graphs <span class="op">=</span> <span class="cn">FALSE</span>, displayProgress <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span> +<span><span class="va">saemix_control_moreiter</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/saemixControl.html" class="external-link">saemixControl</a></span><span class="op">(</span>nbiter.saemix <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1600</span>, <span class="fl">300</span><span class="op">)</span>, nb.chains <span class="op">=</span> <span class="fl">15</span>,</span> +<span> print <span class="op">=</span> <span class="cn">FALSE</span>, save <span class="op">=</span> <span class="cn">FALSE</span>, save.graphs <span class="op">=</span> <span class="cn">FALSE</span>, displayProgress <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span> +<span><span class="va">saemix_control_10k</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/saemixControl.html" class="external-link">saemixControl</a></span><span class="op">(</span>nbiter.saemix <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">10000</span>, <span class="fl">300</span><span class="op">)</span>, nb.chains <span class="op">=</span> <span class="fl">15</span>,</span> +<span> print <span class="op">=</span> <span class="cn">FALSE</span>, save <span class="op">=</span> <span class="cn">FALSE</span>, save.graphs <span class="op">=</span> <span class="cn">FALSE</span>, displayProgress <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div> +<p>The convergence plot for the SFO model using constant variance is +shown below.</p> +<div class="sourceCode" id="cb15"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_parent_saemix_sfo_const</span> <span class="op"><-</span> <span class="fu">mkin</span><span class="fu">::</span><span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_parent_mkin_const</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> control <span class="op">=</span> <span class="va">saemix_control</span>, transformations <span class="op">=</span> <span class="st">"saemix"</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_parent_saemix_sfo_const</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"convergence"</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/f_parent_saemix_sfo_const-1.png" width="700"></p> +<p>Obviously the selected number of iterations is sufficient to reach +convergence. This can also be said for the SFO fit using the +two-component error model.</p> +<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_parent_saemix_sfo_tc</span> <span class="op"><-</span> <span class="fu">mkin</span><span class="fu">::</span><span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> control <span class="op">=</span> <span class="va">saemix_control</span>, transformations <span class="op">=</span> <span class="st">"saemix"</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_parent_saemix_sfo_tc</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"convergence"</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/f_parent_saemix_sfo_tc-1.png" width="700"></p> +<p>When fitting the DFOP model with constant variance (see below), +parameter convergence is not as unambiguous.</p> +<div class="sourceCode" id="cb17"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_parent_saemix_dfop_const</span> <span class="op"><-</span> <span class="fu">mkin</span><span class="fu">::</span><span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_parent_mkin_const</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> control <span class="op">=</span> <span class="va">saemix_control</span>, transformations <span class="op">=</span> <span class="st">"saemix"</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_const</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"convergence"</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/f_parent_saemix_dfop_const-1.png" width="700"></p> +<div class="sourceCode" id="cb18"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_const</span><span class="op">)</span></span></code></pre></div> +<pre><code>Kinetic nonlinear mixed-effects model fit by SAEM +Structural model: +d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Likelihood computed by importance sampling + AIC BIC logLik + 706 704 -344 + +Fitted parameters: + estimate lower upper +DMTA_0 97.99583 96.50079 99.4909 +k1 0.06377 0.03432 0.0932 +k2 0.00848 0.00444 0.0125 +g 0.95701 0.91313 1.0009 +a.1 1.82141 1.60516 2.0377 +SD.DMTA_0 1.64787 0.45729 2.8384 +SD.k1 0.57439 0.24731 0.9015 +SD.k2 0.03296 -2.50524 2.5712 +SD.g 1.10266 0.32354 1.8818</code></pre> +<p>While the other parameters converge to credible values, the variance +of k2 (<code>omega2.k2</code>) converges to a very small value. The +printout of the <code>saem.mmkin</code> model shows that the estimated +standard deviation of k2 across the population of soils +(<code>SD.k2</code>) is ill-defined, indicating overparameterisation of +this model.</p> +<p>When the DFOP model is fitted with the two-component error model, we +also observe that the estimated variance of k2 becomes very small, while +being ill-defined, as illustrated by the excessive confidence interval +of <code>SD.k2</code>.</p> +<div class="sourceCode" id="cb20"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_parent_saemix_dfop_tc</span> <span class="op"><-</span> <span class="fu">mkin</span><span class="fu">::</span><span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> control <span class="op">=</span> <span class="va">saemix_control</span>, transformations <span class="op">=</span> <span class="st">"saemix"</span><span class="op">)</span></span> +<span><span class="va">f_parent_saemix_dfop_tc_moreiter</span> <span class="op"><-</span> <span class="fu">mkin</span><span class="fu">::</span><span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> control <span class="op">=</span> <span class="va">saemix_control_moreiter</span>, transformations <span class="op">=</span> <span class="st">"saemix"</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"convergence"</span><span class="op">)</span></span></code></pre></div> +<p><img src="dimethenamid_2018_files/figure-html/f_parent_saemix_dfop_tc-1.png" width="700"></p> +<div class="sourceCode" id="cb21"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc</span><span class="op">)</span></span></code></pre></div> +<pre><code>Kinetic nonlinear mixed-effects model fit by SAEM +Structural model: +d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * + time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) + * DMTA + +Data: +155 observations of 1 variable(s) grouped in 6 datasets + +Likelihood computed by importance sampling + AIC BIC logLik + 666 664 -323 + +Fitted parameters: + estimate lower upper +DMTA_0 98.24165 96.29190 100.1914 +k1 0.06421 0.03352 0.0949 +k2 0.00866 0.00617 0.0111 +g 0.95340 0.91218 0.9946 +a.1 1.06463 0.87979 1.2495 +b.1 0.02964 0.02266 0.0366 +SD.DMTA_0 2.03611 0.40361 3.6686 +SD.k1 0.59534 0.25692 0.9338 +SD.k2 0.00042 -73.00540 73.0062 +SD.g 1.04234 0.37189 1.7128</code></pre> +<p>Doubling the number of iterations in the first phase of the algorithm +leads to a slightly lower likelihood, and therefore to slightly higher +AIC and BIC values. With even more iterations, the algorithm stops with +an error message. This is related to the variance of k2 approximating +zero and has been submitted as a <a href="https://github.com/saemixdevelopment/saemixextension/issues/29" class="external-link">bug +to the saemix package</a>, as the algorithm does not converge in this +case.</p> +<p>An alternative way to fit DFOP in combination with the two-component +error model is to use the model formulation with transformed parameters +as used per default in mkin. When using this option, convergence is +slower, but eventually the algorithm stops as well with the same error +message.</p> +<p>The four combinations (SFO/const, SFO/tc, DFOP/const and DFOP/tc) and +the version with increased iterations can be compared using the model +comparison function of the saemix package:</p> +<div class="sourceCode" id="cb23"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">AIC_parent_saemix</span> <span class="op"><-</span> <span class="fu">saemix</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/compare.saemix.html" class="external-link">compare.saemix</a></span><span class="op">(</span></span> +<span> <span class="va">f_parent_saemix_sfo_const</span><span class="op">$</span><span class="va">so</span>,</span> +<span> <span class="va">f_parent_saemix_sfo_tc</span><span class="op">$</span><span class="va">so</span>,</span> +<span> <span class="va">f_parent_saemix_dfop_const</span><span class="op">$</span><span class="va">so</span>,</span> +<span> <span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span>,</span> +<span> <span class="va">f_parent_saemix_dfop_tc_moreiter</span><span class="op">$</span><span class="va">so</span><span class="op">)</span></span></code></pre></div> +<pre><code>Likelihoods calculated by importance sampling</code></pre> +<div class="sourceCode" id="cb25"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/colnames.html" class="external-link">rownames</a></span><span class="op">(</span><span class="va">AIC_parent_saemix</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span></span> +<span> <span class="st">"SFO const"</span>, <span class="st">"SFO tc"</span>, <span class="st">"DFOP const"</span>, <span class="st">"DFOP tc"</span>, <span class="st">"DFOP tc more iterations"</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">AIC_parent_saemix</span><span class="op">)</span></span></code></pre></div> +<pre><code> AIC BIC +SFO const 796.38 795.34 +SFO tc 798.38 797.13 +DFOP const 705.75 703.88 +DFOP tc 665.67 663.59 +DFOP tc more iterations 665.85 663.76</code></pre> +<p>In order to check the influence of the likelihood calculation +algorithms implemented in saemix, the likelihood from Gaussian +quadrature is added to the best fit, and the AIC values obtained from +the three methods are compared.</p> +<div class="sourceCode" id="cb27"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span> <span class="op"><-</span></span> +<span> <span class="fu">saemix</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/llgq.saemix.html" class="external-link">llgq.saemix</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span><span class="op">)</span></span> +<span><span class="va">AIC_parent_saemix_methods</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span></span> +<span> is <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span>, method <span class="op">=</span> <span class="st">"is"</span><span class="op">)</span>,</span> +<span> gq <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span>, method <span class="op">=</span> <span class="st">"gq"</span><span class="op">)</span>,</span> +<span> lin <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span>, method <span class="op">=</span> <span class="st">"lin"</span><span class="op">)</span></span> +<span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">AIC_parent_saemix_methods</span><span class="op">)</span></span></code></pre></div> +<pre><code> is gq lin +665.67 665.74 665.13 </code></pre> +<p>The AIC values based on importance sampling and Gaussian quadrature +are very similar. Using linearisation is known to be less accurate, but +still gives a similar value.</p> +<p>In order to illustrate that the comparison of the three method +depends on the degree of convergence obtained in the fit, the same +comparison is shown below for the fit using the defaults for the number +of iterations and the number of MCMC chains.</p> +<p>When using OpenBlas for linear algebra, there is a large difference +in the values obtained with Gaussian quadrature, so the larger number of +iterations makes a lot of difference. When using the LAPACK version +coming with Debian Bullseye, the AIC based on Gaussian quadrature is +almost the same as the one obtained with the other methods, also when +using defaults for the fit.</p> +<div class="sourceCode" id="cb29"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_parent_saemix_dfop_tc_defaults</span> <span class="op"><-</span> <span class="fu">mkin</span><span class="fu">::</span><span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_parent_mkin_tc</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span></span> +<span><span class="va">f_parent_saemix_dfop_tc_defaults</span><span class="op">$</span><span class="va">so</span> <span class="op"><-</span></span> +<span> <span class="fu">saemix</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/llgq.saemix.html" class="external-link">llgq.saemix</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc_defaults</span><span class="op">$</span><span class="va">so</span><span class="op">)</span></span> +<span><span class="va">AIC_parent_saemix_methods_defaults</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span></span> +<span> is <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc_defaults</span><span class="op">$</span><span class="va">so</span>, method <span class="op">=</span> <span class="st">"is"</span><span class="op">)</span>,</span> +<span> gq <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc_defaults</span><span class="op">$</span><span class="va">so</span>, method <span class="op">=</span> <span class="st">"gq"</span><span class="op">)</span>,</span> +<span> lin <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_saemix_dfop_tc_defaults</span><span class="op">$</span><span class="va">so</span>, method <span class="op">=</span> <span class="st">"lin"</span><span class="op">)</span></span> +<span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">AIC_parent_saemix_methods_defaults</span><span class="op">)</span></span></code></pre></div> +<pre><code> is gq lin +670.09 669.37 671.29 </code></pre> +</div> +</div> +<div class="section level3"> +<h3 id="comparison">Comparison<a class="anchor" aria-label="anchor" href="#comparison"></a> +</h3> +<p>The following table gives the AIC values obtained with both backend +packages using the same control parameters (800 iterations burn-in, 300 +iterations second phase, 15 chains).</p> +<div class="sourceCode" id="cb31"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">AIC_all</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span> +<span> check.names <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> <span class="st">"Degradation model"</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"SFO"</span>, <span class="st">"DFOP"</span>, <span class="st">"DFOP"</span><span class="op">)</span>,</span> +<span> <span class="st">"Error model"</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"const"</span>, <span class="st">"tc"</span>, <span class="st">"const"</span>, <span class="st">"tc"</span><span class="op">)</span>,</span> +<span> nlme <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_nlme_sfo_const</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_nlme_sfo_tc</span><span class="op">)</span>, <span class="cn">NA</span>, <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_parent_nlme_dfop_tc</span><span class="op">)</span><span class="op">)</span>,</span> +<span> saemix_lin <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">f_parent_saemix_sfo_const</span><span class="op">$</span><span class="va">so</span>, <span class="va">f_parent_saemix_sfo_tc</span><span class="op">$</span><span class="va">so</span>,</span> +<span> <span class="va">f_parent_saemix_dfop_const</span><span class="op">$</span><span class="va">so</span>, <span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span><span class="op">)</span>, <span class="va">AIC</span>, method <span class="op">=</span> <span class="st">"lin"</span><span class="op">)</span>,</span> +<span> saemix_is <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">f_parent_saemix_sfo_const</span><span class="op">$</span><span class="va">so</span>, <span class="va">f_parent_saemix_sfo_tc</span><span class="op">$</span><span class="va">so</span>,</span> +<span> <span class="va">f_parent_saemix_dfop_const</span><span class="op">$</span><span class="va">so</span>, <span class="va">f_parent_saemix_dfop_tc</span><span class="op">$</span><span class="va">so</span><span class="op">)</span>, <span class="va">AIC</span>, method <span class="op">=</span> <span class="st">"is"</span><span class="op">)</span></span> +<span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span><span class="va">AIC_all</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left">Degradation model</th> +<th align="left">Error model</th> +<th align="right">nlme</th> +<th align="right">saemix_lin</th> +<th align="right">saemix_is</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">SFO</td> +<td align="left">const</td> +<td align="right">796.60</td> +<td align="right">796.60</td> +<td align="right">796.38</td> +</tr> +<tr class="even"> +<td align="left">SFO</td> +<td align="left">tc</td> +<td align="right">798.60</td> +<td align="right">798.60</td> +<td align="right">798.38</td> +</tr> +<tr class="odd"> +<td align="left">DFOP</td> +<td align="left">const</td> +<td align="right">NA</td> +<td align="right">704.95</td> +<td align="right">705.75</td> +</tr> +<tr class="even"> +<td align="left">DFOP</td> +<td align="left">tc</td> +<td align="right">671.91</td> +<td align="right">665.13</td> +<td align="right">665.67</td> +</tr> +</tbody> +</table> +</div> +</div> +<div class="section level2"> +<h2 id="conclusion">Conclusion<a class="anchor" aria-label="anchor" href="#conclusion"></a> +</h2> +<p>A more detailed analysis of the dimethenamid dataset confirmed that +the DFOP model provides the most appropriate description of the decline +of the parent compound in these data. On the other hand, closer +inspection of the results revealed that the variability of the k2 +parameter across the population of soils is ill-defined. This coincides +with the observation that this parameter cannot robustly be quantified +for some of the soils.</p> +<p>Regarding the regulatory use of these data, it is claimed that an +improved characterisation of the mean parameter values across the +population is obtained using the nonlinear mixed-effects models +presented here. However, attempts to quantify the variability of the +slower rate constant of the biphasic decline of dimethenamid indicate +that the data are not sufficient to characterise this variability to a +satisfactory precision.</p> +</div> +<div class="section level2"> +<h2 id="session-info">Session Info<a class="anchor" aria-label="anchor" href="#session-info"></a> +</h2> +<div class="sourceCode" id="cb32"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/utils/sessionInfo.html" class="external-link">sessionInfo</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<pre><code>R version 4.4.2 (2024-10-31) +Platform: x86_64-pc-linux-gnu +Running under: Debian GNU/Linux 12 (bookworm) + +Matrix products: default +BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 +LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 + +locale: + [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C + [3] LC_TIME=C LC_COLLATE=de_DE.UTF-8 + [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 + [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C + [9] LC_ADDRESS=C LC_TELEPHONE=C +[11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C + +time zone: Europe/Berlin +tzcode source: system (glibc) + +attached base packages: +[1] stats graphics grDevices utils datasets methods base + +other attached packages: +[1] saemix_3.3 npde_3.5 nlme_3.1-166 mkin_1.2.10 knitr_1.49 + +loaded via a namespace (and not attached): + [1] gtable_0.3.6 jsonlite_1.8.9 dplyr_1.1.4 compiler_4.4.2 + [5] tidyselect_1.2.1 parallel_4.4.2 gridExtra_2.3 jquerylib_0.1.4 + [9] systemfonts_1.1.0 scales_1.3.0 textshaping_0.4.1 yaml_2.3.10 +[13] fastmap_1.2.0 lattice_0.22-6 ggplot2_3.5.1 R6_2.5.1 +[17] generics_0.1.3 lmtest_0.9-40 MASS_7.3-61 htmlwidgets_1.6.4 +[21] tibble_3.2.1 desc_1.4.3 munsell_0.5.1 bslib_0.8.0 +[25] pillar_1.9.0 rlang_1.1.4 utf8_1.2.4 cachem_1.1.0 +[29] xfun_0.49 fs_1.6.5 sass_0.4.9 cli_3.6.3 +[33] pkgdown_2.1.1 magrittr_2.0.3 digest_0.6.37 grid_4.4.2 +[37] mclust_6.1.1 lifecycle_1.0.4 vctrs_0.6.5 evaluate_1.0.1 +[41] glue_1.8.0 codetools_0.2-20 ragg_1.3.3 zoo_1.8-12 +[45] fansi_1.0.6 colorspace_2.1-1 rmarkdown_2.29 pkgconfig_2.0.3 +[49] tools_4.4.2 htmltools_0.5.8.1</code></pre> +</div> +<div class="section level2"> +<h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a> +</h2> +<!-- vim: set foldmethod=syntax: --> +<div id="refs" class="references csl-bib-body hanging-indent"> +<div id="ref-efsa_2018_dimethenamid" class="csl-entry"> +EFSA. 2018. <span>“Peer Review of the Pesticide Risk Assessment of the +Active Substance Dimethenamid-p.”</span> <em>EFSA Journal</em> 16: 5211. +</div> +<div id="ref-ranke2021" class="csl-entry"> +Ranke, Johannes, Janina Wöltjen, Jana Schmidt, and Emmanuelle Comets. +2021. <span>“Taking Kinetic Evaluations of Degradation Data to the Next +Level with Nonlinear Mixed-Effects Models.”</span> <em>Environments</em> +8 (8). <a href="https://doi.org/10.3390/environments8080071" class="external-link">https://doi.org/10.3390/environments8080071</a>. +</div> +<div id="ref-dimethenamid_rar_2018_b8" class="csl-entry"> +Rapporteur Member State Germany, Co-Rapporteur Member State Bulgaria. +2018. <span>“<span class="nocase">Renewal Assessment Report +Dimethenamid-P Volume 3 - B.8 Environmental fate and behaviour, Rev. 2 - +November 2017</span>.”</span> <a href="https://open.efsa.europa.eu/study-inventory/EFSA-Q-2014-00716" class="external-link">https://open.efsa.europa.eu/study-inventory/EFSA-Q-2014-00716</a>. +</div> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_const-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_const-1.png Binary files differnew file mode 100644 index 00000000..627e5c95 --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_const-1.png diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_const_test-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_const_test-1.png Binary files differnew file mode 100644 index 00000000..627e5c95 --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_const_test-1.png diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_tc_test-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_tc_test-1.png Binary files differnew file mode 100644 index 00000000..9f40fc35 --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_dfop_tc_test-1.png diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_sfo_const-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_sfo_const-1.png Binary files differnew file mode 100644 index 00000000..0ed7448d --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_mkin_sfo_const-1.png diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_dfop_const-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_dfop_const-1.png Binary files differnew file mode 100644 index 00000000..84a6fc92 --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_dfop_const-1.png diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_dfop_tc-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_dfop_tc-1.png Binary files differnew file mode 100644 index 00000000..fa5d34f0 --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_dfop_tc-1.png diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_sfo_const-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_sfo_const-1.png Binary files differnew file mode 100644 index 00000000..7862fc65 --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_sfo_const-1.png diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_sfo_tc-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_sfo_tc-1.png Binary files differnew file mode 100644 index 00000000..d941f3e6 --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/f_parent_saemix_sfo_tc-1.png diff --git a/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/plot_parent_nlme-1.png b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/plot_parent_nlme-1.png Binary files differnew file mode 100644 index 00000000..6bcf3434 --- /dev/null +++ b/docs/dev/articles/web_only/dimethenamid_2018_files/figure-html/plot_parent_nlme-1.png diff --git a/docs/dev/articles/web_only/multistart.html b/docs/dev/articles/web_only/multistart.html new file mode 100644 index 00000000..83073979 --- /dev/null +++ b/docs/dev/articles/web_only/multistart.html @@ -0,0 +1,179 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Short demo of the multistart method • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Short demo of the multistart method"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Short demo of the multistart method</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 20 April 2023 +(rebuilt 2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/web_only/multistart.rmd" class="external-link"><code>vignettes/web_only/multistart.rmd</code></a></small> + <div class="d-none name"><code>multistart.rmd</code></div> + </div> + + + +<p>The dimethenamid data from 2018 from seven soils is used as example +data in this vignette.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span><span class="op">)</span></span> +<span><span class="va">dmta_ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">7</span>, <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span><span class="op">[[</span><span class="va">i</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span> +<span> <span class="va">ds_i</span><span class="op">[</span><span class="va">ds_i</span><span class="op">$</span><span class="va">name</span> <span class="op">==</span> <span class="st">"DMTAP"</span>, <span class="st">"name"</span><span class="op">]</span> <span class="op"><-</span> <span class="st">"DMTA"</span></span> +<span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op">*</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">f_time_norm</span><span class="op">[</span><span class="va">i</span><span class="op">]</span></span> +<span> <span class="va">ds_i</span></span> +<span><span class="op">}</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="va">ds</span><span class="op">$</span><span class="va">title</span><span class="op">)</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span>, <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span></code></pre></div> +<p>First, we check the DFOP model with the two-component error model and +random effects for all degradation parameters.</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_mmkin</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="va">dmta_ds</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, cores <span class="op">=</span> <span class="fl">7</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="va">f_saem_full</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">f_mmkin</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_full</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## [1] "sd(log_k2)"</span></span></code></pre> +<p>We see that not all variability parameters are identifiable. The +<code>illparms</code> function tells us that the confidence interval for +the standard deviation of ‘log_k2’ includes zero. We check this +assessment using multiple runs with different starting values.</p> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_full_multi</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/multistart.html">multistart</a></span><span class="op">(</span><span class="va">f_saem_full</span>, n <span class="op">=</span> <span class="fl">16</span>, cores <span class="op">=</span> <span class="fl">16</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/parplot.html">parplot</a></span><span class="op">(</span><span class="va">f_saem_full_multi</span>, lpos <span class="op">=</span> <span class="st">"topleft"</span><span class="op">)</span></span></code></pre></div> +<p><img src="multistart_files/figure-html/unnamed-chunk-3-1.png" width="700"></p> +<p>This confirms that the variance of k2 is the most problematic +parameter, so we reduce the parameter distribution model by removing the +intersoil variability for k2.</p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">f_saem_reduced</span> <span class="op"><-</span> <span class="fu">stats</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_full</span>, no_random_effect <span class="op">=</span> <span class="st">"log_k2"</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_reduced</span><span class="op">)</span></span> +<span><span class="va">f_saem_reduced_multi</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/multistart.html">multistart</a></span><span class="op">(</span><span class="va">f_saem_reduced</span>, n <span class="op">=</span> <span class="fl">16</span>, cores <span class="op">=</span> <span class="fl">16</span><span class="op">)</span></span> +<span><span class="fu"><a href="../../reference/parplot.html">parplot</a></span><span class="op">(</span><span class="va">f_saem_reduced_multi</span>, lpos <span class="op">=</span> <span class="st">"topright"</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.5</span>, <span class="fl">2</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> +<p><img src="multistart_files/figure-html/unnamed-chunk-4-1.png" width="700"></p> +<p>The results confirm that all remaining parameters can be determined +with sufficient certainty.</p> +<p>We can also analyse the log-likelihoods obtained in the multiple +runs:</p> +<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/llhist.html">llhist</a></span><span class="op">(</span><span class="va">f_saem_reduced_multi</span><span class="op">)</span></span></code></pre></div> +<p><img src="multistart_files/figure-html/unnamed-chunk-5-1.png" width="700"></p> +<p>We can use the <code>anova</code> method to compare the models.</p> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_full</span>, <span class="fu"><a href="../../reference/multistart.html">best</a></span><span class="op">(</span><span class="va">f_saem_full_multi</span><span class="op">)</span>,</span> +<span> <span class="va">f_saem_reduced</span>, <span class="fu"><a href="../../reference/multistart.html">best</a></span><span class="op">(</span><span class="va">f_saem_reduced_multi</span><span class="op">)</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## Data: 155 observations of 1 variable(s) grouped in 6 datasets</span></span> +<span><span class="co">## </span></span> +<span><span class="co">## npar AIC BIC Lik Chisq Df Pr(>Chisq)</span></span> +<span><span class="co">## f_saem_reduced 9 663.67 661.80 -322.84 </span></span> +<span><span class="co">## best(f_saem_reduced_multi) 9 663.65 661.78 -322.82 0.0219 0 </span></span> +<span><span class="co">## f_saem_full 10 670.09 668.01 -325.05 0.0000 1 1</span></span> +<span><span class="co">## best(f_saem_full_multi) 10 665.61 663.52 -322.80 4.4870 0</span></span></code></pre> +<p>The reduced model results in lower AIC and BIC values, so it is +clearly preferable. Using multiple starting values gives a large +improvement in case of the full model, because it is less well-defined, +which impedes convergence. For the reduced model, using multiple +starting values only results in a small improvement of the model +fit.</p> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-3-1.png b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-3-1.png Binary files differnew file mode 100644 index 00000000..19b68cfe --- /dev/null +++ b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-3-1.png diff --git a/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-4-1.png b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-4-1.png Binary files differnew file mode 100644 index 00000000..034b170c --- /dev/null +++ b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-4-1.png diff --git a/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-5-1.png b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-5-1.png Binary files differnew file mode 100644 index 00000000..c8e918cd --- /dev/null +++ b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-5-1.png diff --git a/docs/dev/articles/web_only/saem_benchmarks.html b/docs/dev/articles/web_only/saem_benchmarks.html new file mode 100644 index 00000000..d4cd0d6f --- /dev/null +++ b/docs/dev/articles/web_only/saem_benchmarks.html @@ -0,0 +1,789 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Benchmark timings for saem.mmkin • mkin</title> +<script src="../../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="../../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="../../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="../../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="../../deps/headroom-0.11.0/headroom.min.js"></script><script src="../../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../../deps/search-1.0.0/fuse.min.js"></script><script src="../../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../../pkgdown.js"></script><meta property="og:title" content="Benchmark timings for saem.mmkin"> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="../../reference/index.html">Reference</a></li> +<li class="active nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="../../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="../../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../../news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../../search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-article"> + + + + +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Benchmark timings for saem.mmkin</h1> + <h4 data-toc-skip class="author">Johannes +Ranke</h4> + + <h4 data-toc-skip class="date">Last change 17 February 2023 +(rebuilt 2025-02-14)</h4> + + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/vignettes/web_only/saem_benchmarks.rmd" class="external-link"><code>vignettes/web_only/saem_benchmarks.rmd</code></a></small> + <div class="d-none name"><code>saem_benchmarks.rmd</code></div> + </div> + + + +<p>Each system is characterized by operating system type, CPU type, mkin +version, saemix version and R version. A compiler was available, so if +no analytical solution was available, compiled ODE models are used.</p> +<p>Every fit is only performed once, so the accuracy of the benchmarks +is limited.</p> +<p>For the initial mmkin fits, we use all available cores.</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">n_cores</span> <span class="op"><-</span> <span class="fu">parallel</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div> +<div class="section level2"> +<h2 id="test-data">Test data<a class="anchor" aria-label="anchor" href="#test-data"></a> +</h2> +<p>Please refer to the vignette <code>dimethenamid_2018</code> for an +explanation of the following preprocessing.</p> +<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">dmta_ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">7</span>, <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span> +<span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span><span class="op">[[</span><span class="va">i</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span> +<span> <span class="va">ds_i</span><span class="op">[</span><span class="va">ds_i</span><span class="op">$</span><span class="va">name</span> <span class="op">==</span> <span class="st">"DMTAP"</span>, <span class="st">"name"</span><span class="op">]</span> <span class="op"><-</span> <span class="st">"DMTA"</span></span> +<span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op">*</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">f_time_norm</span><span class="op">[</span><span class="va">i</span><span class="op">]</span></span> +<span> <span class="va">ds_i</span></span> +<span><span class="op">}</span><span class="op">)</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="va">ds</span><span class="op">$</span><span class="va">title</span><span class="op">)</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span>, <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span> +<span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="test-cases">Test cases<a class="anchor" aria-label="anchor" href="#test-cases"></a> +</h2> +<div class="section level3"> +<h3 id="parent-only">Parent only<a class="anchor" aria-label="anchor" href="#parent-only"></a> +</h3> +<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">parent_mods</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"DFOP"</span>, <span class="st">"SFORB"</span>, <span class="st">"HS"</span><span class="op">)</span></span> +<span><span class="va">parent_sep_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="va">parent_mods</span>, <span class="va">dmta_ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, cores <span class="op">=</span> <span class="va">n_cores</span><span class="op">)</span></span> +<span><span class="va">parent_sep_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">parent_sep_const</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span> +<span></span> +<span><span class="va">t1</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">sfo_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">parent_sep_const</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">dfop_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">parent_sep_const</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t3</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">sforb_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">parent_sep_const</span><span class="op">[</span><span class="st">"SFORB"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t4</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">hs_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">parent_sep_const</span><span class="op">[</span><span class="st">"HS"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t5</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">sfo_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">parent_sep_tc</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t6</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">dfop_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">parent_sep_tc</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t7</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">sforb_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">parent_sep_tc</span><span class="op">[</span><span class="st">"SFORB"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t8</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">hs_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">parent_sep_tc</span><span class="op">[</span><span class="st">"HS"</span>, <span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span></code></pre></div> +<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span></span> +<span> <span class="va">sfo_const</span>, <span class="va">dfop_const</span>, <span class="va">sforb_const</span>, <span class="va">hs_const</span>,</span> +<span> <span class="va">sfo_tc</span>, <span class="va">dfop_tc</span>, <span class="va">sforb_tc</span>, <span class="va">hs_tc</span><span class="op">)</span> <span class="op">|></span> <span class="fu"><a href="https://rdrr.io/pkg/knitr/man/kable.html" class="external-link">kable</a></span><span class="op">(</span>, digits <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></code></pre></div> +<table class="table"> +<thead><tr class="header"> +<th align="left"></th> +<th align="right">npar</th> +<th align="right">AIC</th> +<th align="right">BIC</th> +<th align="right">Lik</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">sfo_const</td> +<td align="right">5</td> +<td align="right">796.3</td> +<td align="right">795.3</td> +<td align="right">-393.2</td> +</tr> +<tr class="even"> +<td align="left">sfo_tc</td> +<td align="right">6</td> +<td align="right">798.3</td> +<td align="right">797.1</td> +<td align="right">-393.2</td> +</tr> +<tr class="odd"> +<td align="left">dfop_const</td> +<td align="right">9</td> +<td align="right">709.4</td> +<td align="right">707.5</td> +<td align="right">-345.7</td> +</tr> +<tr class="even"> +<td align="left">sforb_const</td> +<td align="right">9</td> +<td align="right">710.0</td> +<td align="right">708.1</td> +<td align="right">-346.0</td> +</tr> +<tr class="odd"> +<td align="left">hs_const</td> +<td align="right">9</td> +<td align="right">713.7</td> +<td align="right">711.8</td> +<td align="right">-347.8</td> +</tr> +<tr class="even"> +<td align="left">dfop_tc</td> +<td align="right">10</td> +<td align="right">670.1</td> +<td align="right">668.0</td> +<td align="right">-325.0</td> +</tr> +<tr class="odd"> +<td align="left">sforb_tc</td> +<td align="right">10</td> +<td align="right">662.9</td> +<td align="right">660.8</td> +<td align="right">-321.4</td> +</tr> +<tr class="even"> +<td align="left">hs_tc</td> +<td align="right">10</td> +<td align="right">667.2</td> +<td align="right">665.1</td> +<td align="right">-323.6</td> +</tr> +</tbody> +</table> +<p>The above model comparison suggests to use the SFORB model with +two-component error. For comparison, we keep the DFOP model with +two-component error, as it competes with SFORB for biphasic curves.</p> +<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">dfop_tc</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## [1] "sd(log_k2)"</span></span></code></pre> +<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">sforb_tc</span><span class="op">)</span></span></code></pre></div> +<pre><code><span><span class="co">## [1] "sd(log_k_DMTA_bound_free)"</span></span></code></pre> +<p>For these two models, random effects for the transformed parameters +<code>k2</code> and <code>k_DMTA_bound_free</code> could not be +quantified.</p> +</div> +<div class="section level3"> +<h3 id="one-metabolite">One metabolite<a class="anchor" aria-label="anchor" href="#one-metabolite"></a> +</h3> +<p>We remove parameters that were found to be ill-defined in the parent +only fits.</p> +<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">one_met_mods</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span></span> +<span> DFOP_SFO <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> DMTA <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="st">"M23"</span><span class="op">)</span>,</span> +<span> M23 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> SFORB_SFO <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> DMTA <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="st">"M23"</span><span class="op">)</span>,</span> +<span> M23 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span> +<span></span> +<span><span class="va">one_met_sep_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="va">one_met_mods</span>, <span class="va">dmta_ds</span>, error_model <span class="op">=</span> <span class="st">"const"</span>,</span> +<span> cores <span class="op">=</span> <span class="va">n_cores</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span><span class="va">one_met_sep_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="va">one_met_mods</span>, <span class="va">dmta_ds</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>,</span> +<span> cores <span class="op">=</span> <span class="va">n_cores</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="va">t9</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">dfop_sfo_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">one_met_sep_tc</span><span class="op">[</span><span class="st">"DFOP_SFO"</span>, <span class="op">]</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="st">"log_k2"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span> +<span><span class="va">t10</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">sforb_sfo_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">one_met_sep_tc</span><span class="op">[</span><span class="st">"SFORB_SFO"</span>, <span class="op">]</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="st">"log_k_DMTA_bound_free"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span></code></pre></div> +</div> +<div class="section level3"> +<h3 id="three-metabolites">Three metabolites<a class="anchor" aria-label="anchor" href="#three-metabolites"></a> +</h3> +<p>For the case of three metabolites, we only keep the SFORB model in +order to limit the time for compiling this vignette, and as fitting in +parallel may disturb the benchmark. Again, we do not include random +effects that were ill-defined in previous fits of subsets of the +degradation model.</p> +<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="../../reference/illparms.html">illparms</a></span><span class="op">(</span><span class="va">sforb_sfo_tc</span><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="va">three_met_mods</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span></span> +<span> SFORB_SFO3_plus <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinmod</a></span><span class="op">(</span></span> +<span> DMTA <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M23"</span>, <span class="st">"M27"</span>, <span class="st">"M31"</span><span class="op">)</span><span class="op">)</span>,</span> +<span> M23 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M27 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span> +<span> M31 <span class="op">=</span> <span class="fu"><a href="../../reference/mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M27"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span> +<span></span> +<span><span class="va">three_met_sep_tc</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/mmkin.html">mmkin</a></span><span class="op">(</span><span class="va">three_met_mods</span>, <span class="va">dmta_ds</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>,</span> +<span> cores <span class="op">=</span> <span class="va">n_cores</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="va">t11</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">sforb_sfo3_plus_const</span> <span class="op"><-</span> <span class="fu"><a href="../../reference/saem.html">saem</a></span><span class="op">(</span><span class="va">three_met_sep_tc</span><span class="op">[</span><span class="st">"SFORB_SFO3_plus"</span>, <span class="op">]</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="st">"log_k_DMTA_bound_free"</span><span class="op">)</span><span class="op">)</span><span class="op">[[</span><span class="st">"elapsed"</span><span class="op">]</span><span class="op">]</span></span></code></pre></div> +</div> +</div> +<div class="section level2"> +<h2 id="results">Results<a class="anchor" aria-label="anchor" href="#results"></a> +</h2> +<p>Benchmarks for all available error models are shown. They are +intended for improving mkin, not for comparing CPUs or operating +systems. All trademarks belong to their respective owners.</p> +<div class="section level3"> +<h3 id="parent-only-1">Parent only<a class="anchor" aria-label="anchor" href="#parent-only-1"></a> +</h3> +<p>Constant variance for SFO, DFOP, SFORB and HS.</p> +<table class="table"> +<colgroup> +<col width="48%"> +<col width="7%"> +<col width="8%"> +<col width="8%"> +<col width="7%"> +<col width="7%"> +<col width="7%"> +<col width="7%"> +</colgroup> +<thead><tr class="header"> +<th align="left">CPU</th> +<th align="left">OS</th> +<th align="left">mkin</th> +<th align="left">saemix</th> +<th align="right">t1</th> +<th align="right">t2</th> +<th align="right">t3</th> +<th align="right">t4</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Ryzen 7 1700</td> +<td align="left">Linux</td> +<td align="left">1.2.0</td> +<td align="left">3.2</td> +<td align="right">2.140</td> +<td align="right">4.626</td> +<td align="right">4.328</td> +<td align="right">4.998</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 7 1700</td> +<td align="left">Linux</td> +<td align="left">1.2.2</td> +<td align="left">3.2</td> +<td align="right">2.427</td> +<td align="right">4.550</td> +<td align="right">4.217</td> +<td align="right">4.851</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.1</td> +<td align="left">3.2</td> +<td align="right">1.352</td> +<td align="right">2.813</td> +<td align="right">2.401</td> +<td align="right">2.074</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.2</td> +<td align="left">3.2</td> +<td align="right">1.328</td> +<td align="right">2.738</td> +<td align="right">2.336</td> +<td align="right">2.023</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.3</td> +<td align="left">3.2</td> +<td align="right">1.118</td> +<td align="right">2.036</td> +<td align="right">2.010</td> +<td align="right">2.088</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.3</td> +<td align="left">3.2</td> +<td align="right">1.419</td> +<td align="right">2.374</td> +<td align="right">1.926</td> +<td align="right">2.398</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.4</td> +<td align="left">3.2</td> +<td align="right">0.972</td> +<td align="right">2.550</td> +<td align="right">1.987</td> +<td align="right">2.055</td> +</tr> +<tr class="even"> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">Linux</td> +<td align="left">1.2.6</td> +<td align="left">3.2</td> +<td align="right">2.998</td> +<td align="right">6.523</td> +<td align="right">6.126</td> +<td align="right">4.721</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.6</td> +<td align="left">3.2</td> +<td align="right">1.135</td> +<td align="right">2.025</td> +<td align="right">2.406</td> +<td align="right">2.478</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.9</td> +<td align="left">3.3</td> +<td align="right">1.086</td> +<td align="right">1.991</td> +<td align="right">1.949</td> +<td align="right">2.411</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.10</td> +<td align="left">3.3</td> +<td align="right">1.115</td> +<td align="right">2.277</td> +<td align="right">1.945</td> +<td align="right">2.134</td> +</tr> +</tbody> +</table> +<p>Two-component error fits for SFO, DFOP, SFORB and HS.</p> +<table class="table"> +<colgroup> +<col width="48%"> +<col width="7%"> +<col width="8%"> +<col width="8%"> +<col width="7%"> +<col width="7%"> +<col width="7%"> +<col width="7%"> +</colgroup> +<thead><tr class="header"> +<th align="left">CPU</th> +<th align="left">OS</th> +<th align="left">mkin</th> +<th align="left">saemix</th> +<th align="right">t5</th> +<th align="right">t6</th> +<th align="right">t7</th> +<th align="right">t8</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Ryzen 7 1700</td> +<td align="left">Linux</td> +<td align="left">1.2.0</td> +<td align="left">3.2</td> +<td align="right">5.678</td> +<td align="right">7.441</td> +<td align="right">8.000</td> +<td align="right">7.980</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 7 1700</td> +<td align="left">Linux</td> +<td align="left">1.2.2</td> +<td align="left">3.2</td> +<td align="right">5.352</td> +<td align="right">7.201</td> +<td align="right">8.174</td> +<td align="right">8.401</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.1</td> +<td align="left">3.2</td> +<td align="right">2.388</td> +<td align="right">3.033</td> +<td align="right">3.532</td> +<td align="right">3.310</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.2</td> +<td align="left">3.2</td> +<td align="right">2.341</td> +<td align="right">2.968</td> +<td align="right">3.465</td> +<td align="right">3.341</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.3</td> +<td align="left">3.2</td> +<td align="right">2.159</td> +<td align="right">3.584</td> +<td align="right">3.307</td> +<td align="right">3.460</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.3</td> +<td align="left">3.2</td> +<td align="right">2.348</td> +<td align="right">3.134</td> +<td align="right">3.253</td> +<td align="right">3.530</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.4</td> +<td align="left">3.2</td> +<td align="right">2.127</td> +<td align="right">3.587</td> +<td align="right">3.433</td> +<td align="right">3.595</td> +</tr> +<tr class="even"> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">Linux</td> +<td align="left">1.2.6</td> +<td align="left">3.2</td> +<td align="right">5.070</td> +<td align="right">8.464</td> +<td align="right">8.525</td> +<td align="right">7.599</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.6</td> +<td align="left">3.2</td> +<td align="right">2.161</td> +<td align="right">3.325</td> +<td align="right">3.669</td> +<td align="right">3.153</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.9</td> +<td align="left">3.3</td> +<td align="right">2.426</td> +<td align="right">3.196</td> +<td align="right">3.256</td> +<td align="right">3.322</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.10</td> +<td align="left">3.3</td> +<td align="right">2.372</td> +<td align="right">3.137</td> +<td align="right">3.100</td> +<td align="right">3.281</td> +</tr> +</tbody> +</table> +</div> +<div class="section level3"> +<h3 id="one-metabolite-1">One metabolite<a class="anchor" aria-label="anchor" href="#one-metabolite-1"></a> +</h3> +<p>Two-component error for DFOP-SFO and SFORB-SFO.</p> +<table style="width:100%;" class="table"> +<colgroup> +<col width="53%"> +<col width="7%"> +<col width="9%"> +<col width="9%"> +<col width="9%"> +<col width="10%"> +</colgroup> +<thead><tr class="header"> +<th align="left">CPU</th> +<th align="left">OS</th> +<th align="left">mkin</th> +<th align="left">saemix</th> +<th align="right">t9</th> +<th align="right">t10</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Ryzen 7 1700</td> +<td align="left">Linux</td> +<td align="left">1.2.0</td> +<td align="left">3.2</td> +<td align="right">24.465</td> +<td align="right">800.266</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 7 1700</td> +<td align="left">Linux</td> +<td align="left">1.2.2</td> +<td align="left">3.2</td> +<td align="right">25.193</td> +<td align="right">798.580</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.1</td> +<td align="left">3.2</td> +<td align="right">11.247</td> +<td align="right">285.216</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.2</td> +<td align="left">3.2</td> +<td align="right">11.242</td> +<td align="right">284.258</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.3</td> +<td align="left">3.2</td> +<td align="right">11.796</td> +<td align="right">216.012</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.3</td> +<td align="left">3.2</td> +<td align="right">12.841</td> +<td align="right">292.688</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.4</td> +<td align="left">3.2</td> +<td align="right">12.160</td> +<td align="right">265.934</td> +</tr> +<tr class="even"> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">Linux</td> +<td align="left">1.2.6</td> +<td align="left">3.2</td> +<td align="right">30.168</td> +<td align="right">748.675</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.6</td> +<td align="left">3.2</td> +<td align="right">12.007</td> +<td align="right">286.757</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.9</td> +<td align="left">3.3</td> +<td align="right">12.420</td> +<td align="right">289.338</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.10</td> +<td align="left">3.3</td> +<td align="right">11.590</td> +<td align="right">279.782</td> +</tr> +</tbody> +</table> +</div> +<div class="section level3"> +<h3 id="three-metabolites-1">Three metabolites<a class="anchor" aria-label="anchor" href="#three-metabolites-1"></a> +</h3> +<p>Two-component error for SFORB-SFO3-plus</p> +<table class="table"> +<colgroup> +<col width="58%"> +<col width="8%"> +<col width="10%"> +<col width="10%"> +<col width="12%"> +</colgroup> +<thead><tr class="header"> +<th align="left">CPU</th> +<th align="left">OS</th> +<th align="left">mkin</th> +<th align="left">saemix</th> +<th align="right">t11</th> +</tr></thead> +<tbody> +<tr class="odd"> +<td align="left">Ryzen 7 1700</td> +<td align="left">Linux</td> +<td align="left">1.2.0</td> +<td align="left">3.2</td> +<td align="right">1289.198</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 7 1700</td> +<td align="left">Linux</td> +<td align="left">1.2.2</td> +<td align="left">3.2</td> +<td align="right">1312.445</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.1</td> +<td align="left">3.2</td> +<td align="right">489.939</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.2</td> +<td align="left">3.2</td> +<td align="right">482.970</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.3</td> +<td align="left">3.2</td> +<td align="right">392.364</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.3</td> +<td align="left">3.2</td> +<td align="right">483.027</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.4</td> +<td align="left">3.2</td> +<td align="right">456.252</td> +</tr> +<tr class="even"> +<td align="left">Intel(R) Xeon(R) Gold 6134 CPU @ 3.20GHz</td> +<td align="left">Linux</td> +<td align="left">1.2.6</td> +<td align="left">3.2</td> +<td align="right">1235.028</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.6</td> +<td align="left">3.2</td> +<td align="right">480.577</td> +</tr> +<tr class="even"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.9</td> +<td align="left">3.3</td> +<td align="right">485.836</td> +</tr> +<tr class="odd"> +<td align="left">Ryzen 9 7950X</td> +<td align="left">Linux</td> +<td align="left">1.2.10</td> +<td align="left">3.3</td> +<td align="right">469.036</td> +</tr> +</tbody> +</table> +</div> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside> +</div> + + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/authors.html b/docs/dev/authors.html new file mode 100644 index 00000000..15680365 --- /dev/null +++ b/docs/dev/authors.html @@ -0,0 +1,118 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Authors and Citation • mkin</title><script src="deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="deps/headroom-0.11.0/headroom.min.js"></script><script src="deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="deps/search-1.0.0/fuse.min.js"></script><script src="deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="pkgdown.js"></script><meta property="og:title" content="Authors and Citation"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="nav-item"><a class="nav-link" href="reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-citation-authors"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Authors and Citation</h1> + </div> + + <div class="section level2"> + <h2>Authors</h2> + + <ul class="list-unstyled"><li> + <p><strong>Johannes Ranke</strong>. Author, maintainer, copyright holder. <a href="https://orcid.org/0000-0003-4371-6538" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a> + </p> + </li> + <li> + <p><strong>Katrin Lindenberger</strong>. Contributor. + <br><small>contributed to mkinresplot()</small></p> + </li> + <li> + <p><strong>René Lehmann</strong>. Contributor. + <br><small>ilr() and invilr()</small></p> + </li> + <li> + <p><strong>Eurofins Regulatory AG</strong>. Copyright holder. + <br><small>copyright for some of the contributions of JR 2012-2014</small></p> + </li> + </ul></div> + + <div class="section level2"> + <h2 id="citation">Citation</h2> + <p><small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/DESCRIPTION" class="external-link"><code>DESCRIPTION</code></a></small></p> + + <p>Ranke J (2025). +<em>mkin: Kinetic Evaluation of Chemical Degradation Data</em>. +R package version 1.2.10, <a href="https://pkgdown.jrwb.de/mkin/">https://pkgdown.jrwb.de/mkin/</a>. +</p> + <pre>@Manual{, + title = {mkin: Kinetic Evaluation of Chemical Degradation Data}, + author = {Johannes Ranke}, + year = {2025}, + note = {R package version 1.2.10}, + url = {https://pkgdown.jrwb.de/mkin/}, +}</pre> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/deps/bootstrap-5.3.1/bootstrap.bundle.min.js b/docs/dev/deps/bootstrap-5.3.1/bootstrap.bundle.min.js new file mode 100644 index 00000000..e8f21f70 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C<v.length;C++){var O=v[C],x=be(O),k=Fe(O)===Xt,L=[zt,Rt].indexOf(x)>=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function mi(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?fi:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},fi,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:pe(t)?Je(t):t.contextElement?Je(t.contextElement):[],popper:Je(e)};var r,c,u=function(t){var e=ui(t);return de.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(pi(e,i)){a.rects={reference:di(e,$e(i),"fixed"===a.options.strategy),popper:Ce(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!pi(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var gi=mi(),_i=mi({defaultModifiers:[Re,ci,Be,_e]}),bi=mi({defaultModifiers:[Re,ci,Be,_e,li,si,hi,je,ai]});const vi=Object.freeze(Object.defineProperty({__proto__:null,afterMain:ae,afterRead:se,afterWrite:he,applyStyles:_e,arrow:je,auto:Kt,basePlacements:Qt,beforeMain:oe,beforeRead:ie,beforeWrite:le,bottom:Rt,clippingParents:Ut,computeStyles:Be,createPopper:bi,createPopperBase:gi,createPopperLite:_i,detectOverflow:ii,end:Yt,eventListeners:Re,flip:si,hide:ai,left:Vt,main:re,modifierPhases:de,offset:li,placements:ee,popper:Jt,popperGenerator:mi,popperOffsets:ci,preventOverflow:hi,read:ne,reference:Zt,right:qt,start:Xt,top:zt,variationPlacements:te,viewport:Gt,write:ce},Symbol.toStringTag,{value:"Module"})),yi="dropdown",wi=".bs.dropdown",Ai=".data-api",Ei="ArrowUp",Ti="ArrowDown",Ci=`hide${wi}`,Oi=`hidden${wi}`,xi=`show${wi}`,ki=`shown${wi}`,Li=`click${wi}${Ai}`,Si=`keydown${wi}${Ai}`,Di=`keyup${wi}${Ai}`,$i="show",Ii='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ni=`${Ii}.${$i}`,Pi=".dropdown-menu",Mi=p()?"top-end":"top-start",ji=p()?"top-start":"top-end",Fi=p()?"bottom-end":"bottom-start",Hi=p()?"bottom-start":"bottom-end",Wi=p()?"left-start":"right-start",Bi=p()?"right-start":"left-start",zi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class qi extends W{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=z.next(this._element,Pi)[0]||z.prev(this._element,Pi)[0]||z.findOne(Pi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zi}static get DefaultType(){return Ri}static get NAME(){return yi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!N.trigger(this._element,xi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add($i),this._element.classList.add($i),N.trigger(this._element,ki,t)}}hide(){if(l(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!N.trigger(this._element,Ci,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._popper&&this._popper.destroy(),this._menu.classList.remove($i),this._element.classList.remove($i),this._element.setAttribute("aria-expanded","false"),F.removeDataAttribute(this._menu,"popper"),N.trigger(this._element,Oi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===vi)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:o(this._config.reference)?t=r(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=bi(t,this._menu,e)}_isShown(){return this._menu.classList.contains($i)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Wi;if(t.classList.contains("dropstart"))return Bi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ji:Mi:e?Hi:Fi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file diff --git a/docs/dev/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map b/docs/dev/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map new file mode 100644 index 00000000..3863da8b --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","triggerTransitionEnd","dispatchEvent","Event","isElement","object","jquery","nodeType","getElement","length","document","querySelector","isVisible","getClientRects","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","Object","values","find","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","call","this","handlers","previousFunction","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","value","_unused","defineProperty","configurable","normalizeData","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","prototype","RegExp","test","TypeError","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","getSelector","hrefAttribute","trim","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_CLOSE","EVENT_CLOSED","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","DATA_API_KEY","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","elements","forEach","styles","assign","effect","_ref2","initialStyles","position","options","strategy","margin","arrow","hasOwnProperty","attribute","requires","getBasePlacement","round","getUAString","uaData","userAgentData","brands","isArray","item","brand","version","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","computeStyles$1","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","modifiers","visited","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","ARROW_UP_KEY","ARROW_DOWN_KEY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","autoClose","display","popperConfig","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","Popper","referenceElement","_getPopperConfig","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","modalBody","transitionComplete","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","OPEN_SELECTOR","Offcanvas","blur","completeCallback","DefaultAllowlist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","Popover","_getContent","EVENT_ACTIVATE","EVENT_CLICK","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","spy","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","HOME_KEY","END_KEY","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/dom/data.js","../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return parseSelector(selector)\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // TODO: remove this check in v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n\n const children = this._getChildren().filter(element => !isDisabled(element))\n let nextActiveElement\n\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n }\n\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin, reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this.isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout': {\n this._hasMouseInteraction = isInteracting\n break\n }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting\n break\n }\n\n default: {\n break\n }\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert.js'\nimport Button from './src/button.js'\nimport Carousel from './src/carousel.js'\nimport Collapse from './src/collapse.js'\nimport Dropdown from './src/dropdown.js'\nimport Modal from './src/modal.js'\nimport Offcanvas from './src/offcanvas.js'\nimport Popover from './src/popover.js'\nimport ScrollSpy from './src/scrollspy.js'\nimport Tab from './src/tab.js'\nimport Toast from './src/toast.js'\nimport Tooltip from './src/tooltip.js'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Offcanvas,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"],"mappings":"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"}
\ No newline at end of file diff --git a/docs/dev/deps/bootstrap-5.3.1/bootstrap.min.css b/docs/dev/deps/bootstrap-5.3.1/bootstrap.min.css new file mode 100644 index 00000000..5dccca08 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/bootstrap.min.css @@ -0,0 +1,5 @@ +@import url("font.css");:root{--bslib-bootstrap-version: 5;--bslib-preset-name: spacelab;--bslib-preset-type: bootswatch}/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme="light"]{--bs-blue: #446e9b;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #cd0200;--bs-orange: #fd7e14;--bs-yellow: #d47500;--bs-green: #3cb521;--bs-teal: #20c997;--bs-cyan: #3399f3;--bs-black: #000;--bs-white: #fff;--bs-gray: #777;--bs-gray-dark: #333;--bs-gray-100: #f8f9fa;--bs-gray-200: #eee;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #999;--bs-gray-600: #777;--bs-gray-700: #495057;--bs-gray-800: #333;--bs-gray-900: #2d2d2d;--bs-default: #999;--bs-primary: #446e9b;--bs-secondary: #999;--bs-success: #3cb521;--bs-info: #3399f3;--bs-warning: #d47500;--bs-danger: #cd0200;--bs-light: #eee;--bs-dark: #333;--bs-default-rgb: 153,153,153;--bs-primary-rgb: 68,110,155;--bs-secondary-rgb: 153,153,153;--bs-success-rgb: 60,181,33;--bs-info-rgb: 51,153,243;--bs-warning-rgb: 212,117,0;--bs-danger-rgb: 205,2,0;--bs-light-rgb: 238,238,238;--bs-dark-rgb: 51,51,51;--bs-primary-text-emphasis: #1b2c3e;--bs-secondary-text-emphasis: #3d3d3d;--bs-success-text-emphasis: #18480d;--bs-info-text-emphasis: #143d61;--bs-warning-text-emphasis: #552f00;--bs-danger-text-emphasis: #520100;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #dae2eb;--bs-secondary-bg-subtle: #ebebeb;--bs-success-bg-subtle: #d8f0d3;--bs-info-bg-subtle: #d6ebfd;--bs-warning-bg-subtle: #f6e3cc;--bs-danger-bg-subtle: #f5cccc;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #b4c5d7;--bs-secondary-border-subtle: #d6d6d6;--bs-success-border-subtle: #b1e1a6;--bs-info-border-subtle: #add6fa;--bs-warning-border-subtle: #eec899;--bs-danger-border-subtle: #eb9a99;--bs-light-border-subtle: #eee;--bs-dark-border-subtle: #999;--bs-white-rgb: 255,255,255;--bs-black-rgb: 0,0,0;--bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255,255,255,0.15), rgba(255,255,255,0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #777;--bs-body-color-rgb: 119,119,119;--bs-body-bg: #fff;--bs-body-bg-rgb: 255,255,255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0,0,0;--bs-secondary-color: rgba(119,119,119,0.75);--bs-secondary-color-rgb: 119,119,119;--bs-secondary-bg: #eee;--bs-secondary-bg-rgb: 238,238,238;--bs-tertiary-color: rgba(119,119,119,0.5);--bs-tertiary-color-rgb: 119,119,119;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248,249,250;--bs-heading-color: #2d2d2d;--bs-link-color: #3399f3;--bs-link-color-rgb: 51,153,243;--bs-link-decoration: underline;--bs-link-hover-color: #297ac2;--bs-link-hover-color-rgb: 41,122,194;--bs-code-color: RGB(var(--bs-emphasis-color-rgb, 0, 0, 0));--bs-highlight-bg: #f6e3cc;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0,0,0,0.175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0,0,0,0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0,0,0,0.075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(68,110,155,0.25);--bs-form-valid-color: #3cb521;--bs-form-valid-border-color: #3cb521;--bs-form-invalid-color: #cd0200;--bs-form-invalid-border-color: #cd0200}[data-bs-theme="dark"]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222,226,230;--bs-body-bg: #2d2d2d;--bs-body-bg-rgb: 45,45,45;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255,255,255;--bs-secondary-color: rgba(222,226,230,0.75);--bs-secondary-color-rgb: 222,226,230;--bs-secondary-bg: #333;--bs-secondary-bg-rgb: 51,51,51;--bs-tertiary-color: rgba(222,226,230,0.5);--bs-tertiary-color-rgb: 222,226,230;--bs-tertiary-bg: #303030;--bs-tertiary-bg-rgb: 48,48,48;--bs-primary-text-emphasis: #8fa8c3;--bs-secondary-text-emphasis: #c2c2c2;--bs-success-text-emphasis: #8ad37a;--bs-info-text-emphasis: #85c2f8;--bs-warning-text-emphasis: #e5ac66;--bs-danger-text-emphasis: #e16766;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #0e161f;--bs-secondary-bg-subtle: #1f1f1f;--bs-success-bg-subtle: #0c2407;--bs-info-bg-subtle: #0a1f31;--bs-warning-bg-subtle: #2a1700;--bs-danger-bg-subtle: #290000;--bs-light-bg-subtle: #333;--bs-dark-bg-subtle: #1a1a1a;--bs-primary-border-subtle: #29425d;--bs-secondary-border-subtle: #5c5c5c;--bs-success-border-subtle: #246d14;--bs-info-border-subtle: #1f5c92;--bs-warning-border-subtle: #7f4600;--bs-danger-border-subtle: #7b0100;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #333;--bs-heading-color: inherit;--bs-link-color: #8fa8c3;--bs-link-hover-color: #a5b9cf;--bs-link-color-rgb: 143,168,195;--bs-link-hover-color-rgb: 165,185,207;--bs-code-color: RGB(var(--bs-emphasis-color-rgb, 0, 0, 0));--bs-border-color: #495057;--bs-border-color-translucent: rgba(255,255,255,0.15);--bs-form-valid-color: #8ad37a;--bs-form-valid-border-color: #8ad37a;--bs-form-invalid-color: #e16766;--bs-form-invalid-border-color: #e16766}*,*::before,*::after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em;color:RGB(var(--bs-emphasis-color-rgb, 0, 0, 0));background-color:RGBA(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.04);padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6);border-radius:.375rem}pre code{background-color:transparent;font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);background-color:RGBA(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.04);border-radius:.375rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role="button"]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator{display:none !important}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#777}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;-webkit-flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media (min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media (min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media (min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media (min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media (min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.col{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-body-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: rgba(0,0,0,0);--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0,0,0,0.05);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0,0,0,0.1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0,0,0,0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #dae2eb;--bs-table-border-color: #c4cbd4;--bs-table-striped-bg: #cfd7df;--bs-table-striped-color: #000;--bs-table-active-bg: #c4cbd4;--bs-table-active-color: #000;--bs-table-hover-bg: #cad1d9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #ebebeb;--bs-table-border-color: #d4d4d4;--bs-table-striped-bg: #dfdfdf;--bs-table-striped-color: #000;--bs-table-active-bg: #d4d4d4;--bs-table-active-color: #000;--bs-table-hover-bg: #d9d9d9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d8f0d3;--bs-table-border-color: #c2d8be;--bs-table-striped-bg: #cde4c8;--bs-table-striped-color: #000;--bs-table-active-bg: #c2d8be;--bs-table-active-color: #000;--bs-table-hover-bg: #c8dec3;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #d6ebfd;--bs-table-border-color: #c1d4e4;--bs-table-striped-bg: #cbdff0;--bs-table-striped-color: #000;--bs-table-active-bg: #c1d4e4;--bs-table-active-color: #000;--bs-table-hover-bg: #c6d9ea;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #f6e3cc;--bs-table-border-color: #ddccb8;--bs-table-striped-bg: #ead8c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddccb8;--bs-table-active-color: #000;--bs-table-hover-bg: #e4d2bd;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f5cccc;--bs-table-border-color: #ddb8b8;--bs-table-striped-bg: #e9c2c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddb8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #e3bdbd;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #eee;--bs-table-border-color: #d6d6d6;--bs-table-striped-bg: #e2e2e2;--bs-table-striped-color: #000;--bs-table-active-bg: #d6d6d6;--bs-table-active-color: #000;--bs-table-hover-bg: #dcdcdc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #333;--bs-table-border-color: #474747;--bs-table-striped-bg: #3d3d3d;--bs-table-striped-color: #fff;--bs-table-active-bg: #474747;--bs-table-active-color: #fff;--bs-table-hover-bg: #424242;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type="file"]{overflow:hidden}.form-control[type="file"]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,0.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,0.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme="dark"] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: var(--bs-body-bg);width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact}.form-check-input[type="checkbox"],.shiny-input-container .checkbox input[type="checkbox"],.shiny-input-container .checkbox-inline input[type="checkbox"],.shiny-input-container .radio input[type="checkbox"],.shiny-input-container .radio-inline input[type="checkbox"]{border-radius:.25em}.form-check-input[type="radio"],.shiny-input-container .checkbox input[type="radio"],.shiny-input-container .checkbox-inline input[type="radio"],.shiny-input-container .radio input[type="radio"],.shiny-input-container .radio-inline input[type="radio"]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,0.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#446e9b;border-color:#446e9b}.form-check-input:checked[type="checkbox"],.shiny-input-container .checkbox input:checked[type="checkbox"],.shiny-input-container .checkbox-inline input:checked[type="checkbox"],.shiny-input-container .radio input:checked[type="checkbox"],.shiny-input-container .radio-inline input:checked[type="checkbox"]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type="radio"],.shiny-input-container .checkbox input:checked[type="radio"],.shiny-input-container .checkbox-inline input:checked[type="radio"],.shiny-input-container .radio input:checked[type="radio"],.shiny-input-container .radio-inline input:checked[type="radio"]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type="checkbox"]:indeterminate,.shiny-input-container .checkbox input[type="checkbox"]:indeterminate,.shiny-input-container .checkbox-inline input[type="checkbox"]:indeterminate,.shiny-input-container .radio input[type="checkbox"]:indeterminate,.shiny-input-container .radio-inline input[type="checkbox"]:indeterminate{background-color:#446e9b;border-color:#446e9b;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280,0,0,0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23a2b7cd'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255,255,255,0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,0.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,0.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#446e9b;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c7d4e1}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#446e9b;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c7d4e1}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity 0.1s ease-in-out,transform 0.1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), .65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), .65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#777}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n + 3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n + 4),.input-group.has-validation>.form-floating:nth-last-child(n + 3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n + 3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + .75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + .75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #999;--bs-btn-border-color: #999;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #828282;--bs-btn-hover-border-color: #7a7a7a;--bs-btn-focus-shadow-rgb: 168,168,168;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7a7a7a;--bs-btn-active-border-color: #737373;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #999;--bs-btn-disabled-border-color: #999}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #446e9b;--bs-btn-border-color: #446e9b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3a5e84;--bs-btn-hover-border-color: #36587c;--bs-btn-focus-shadow-rgb: 96,132,170;--bs-btn-active-color: #fff;--bs-btn-active-bg: #36587c;--bs-btn-active-border-color: #335374;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #446e9b;--bs-btn-disabled-border-color: #446e9b}.btn-secondary,.btn-default:not(.btn-primary):not(.btn-info):not(.btn-success):not(.btn-warning):not(.btn-danger):not(.btn-dark):not(.btn-light):not([class*='btn-outline-']){--bs-btn-color: #fff;--bs-btn-bg: #999;--bs-btn-border-color: #999;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #828282;--bs-btn-hover-border-color: #7a7a7a;--bs-btn-focus-shadow-rgb: 168,168,168;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7a7a7a;--bs-btn-active-border-color: #737373;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #999;--bs-btn-disabled-border-color: #999}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #3cb521;--bs-btn-border-color: #3cb521;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #339a1c;--bs-btn-hover-border-color: #30911a;--bs-btn-focus-shadow-rgb: 89,192,66;--bs-btn-active-color: #fff;--bs-btn-active-bg: #30911a;--bs-btn-active-border-color: #2d8819;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3cb521;--bs-btn-disabled-border-color: #3cb521}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #3399f3;--bs-btn-border-color: #3399f3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2b82cf;--bs-btn-hover-border-color: #297ac2;--bs-btn-focus-shadow-rgb: 82,168,245;--bs-btn-active-color: #fff;--bs-btn-active-bg: #297ac2;--bs-btn-active-border-color: #2673b6;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3399f3;--bs-btn-disabled-border-color: #3399f3}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #d47500;--bs-btn-border-color: #d47500;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #b46300;--bs-btn-hover-border-color: #aa5e00;--bs-btn-focus-shadow-rgb: 218,138,38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa5e00;--bs-btn-active-border-color: #9f5800;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d47500;--bs-btn-disabled-border-color: #d47500}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #cd0200;--bs-btn-border-color: #cd0200;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ae0200;--bs-btn-hover-border-color: #a40200;--bs-btn-focus-shadow-rgb: 213,40,38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #a40200;--bs-btn-active-border-color: #9a0200;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #cd0200;--bs-btn-disabled-border-color: #cd0200}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #eee;--bs-btn-border-color: #eee;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #cacaca;--bs-btn-hover-border-color: #bebebe;--bs-btn-focus-shadow-rgb: 202,202,202;--bs-btn-active-color: #000;--bs-btn-active-bg: #bebebe;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #eee;--bs-btn-disabled-border-color: #eee}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #333;--bs-btn-border-color: #333;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #525252;--bs-btn-hover-border-color: #474747;--bs-btn-focus-shadow-rgb: 82,82,82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5c5c5c;--bs-btn-active-border-color: #474747;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #333;--bs-btn-disabled-border-color: #333}.btn-outline-default{--bs-btn-color: #999;--bs-btn-border-color: #999;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #999;--bs-btn-hover-border-color: #999;--bs-btn-focus-shadow-rgb: 153,153,153;--bs-btn-active-color: #fff;--bs-btn-active-bg: #999;--bs-btn-active-border-color: #999;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #999;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #999;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #446e9b;--bs-btn-border-color: #446e9b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #446e9b;--bs-btn-hover-border-color: #446e9b;--bs-btn-focus-shadow-rgb: 68,110,155;--bs-btn-active-color: #fff;--bs-btn-active-bg: #446e9b;--bs-btn-active-border-color: #446e9b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #446e9b;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #446e9b;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #999;--bs-btn-border-color: #999;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #999;--bs-btn-hover-border-color: #999;--bs-btn-focus-shadow-rgb: 153,153,153;--bs-btn-active-color: #fff;--bs-btn-active-bg: #999;--bs-btn-active-border-color: #999;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #999;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #999;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #3cb521;--bs-btn-border-color: #3cb521;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3cb521;--bs-btn-hover-border-color: #3cb521;--bs-btn-focus-shadow-rgb: 60,181,33;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3cb521;--bs-btn-active-border-color: #3cb521;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #3cb521;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3cb521;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #3399f3;--bs-btn-border-color: #3399f3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3399f3;--bs-btn-hover-border-color: #3399f3;--bs-btn-focus-shadow-rgb: 51,153,243;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3399f3;--bs-btn-active-border-color: #3399f3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #3399f3;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3399f3;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #d47500;--bs-btn-border-color: #d47500;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d47500;--bs-btn-hover-border-color: #d47500;--bs-btn-focus-shadow-rgb: 212,117,0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d47500;--bs-btn-active-border-color: #d47500;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #d47500;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d47500;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #cd0200;--bs-btn-border-color: #cd0200;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #cd0200;--bs-btn-hover-border-color: #cd0200;--bs-btn-focus-shadow-rgb: 205,2,0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cd0200;--bs-btn-active-border-color: #cd0200;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #cd0200;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #cd0200;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #eee;--bs-btn-border-color: #eee;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #eee;--bs-btn-hover-border-color: #eee;--bs-btn-focus-shadow-rgb: 238,238,238;--bs-btn-active-color: #000;--bs-btn-active-bg: #eee;--bs-btn-active-border-color: #eee;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #eee;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #eee;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #333;--bs-btn-border-color: #333;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #333;--bs-btn-hover-border-color: #333;--bs-btn-focus-shadow-rgb: 51,51,51;--bs-btn-active-color: #fff;--bs-btn-active-bg: #333;--bs-btn-active-border-color: #333;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #333;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #333;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #777;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 82,168,245;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius: var(--bs-border-radius-sm)}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #446e9b;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #777;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #333;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255,255,255,0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #446e9b;--bs-dropdown-link-disabled-color: #999;--bs-dropdown-header-color: #999}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n + 3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,0.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #446e9b}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(0,0,0,0.65);--bs-navbar-hover-color: #3399f3;--bs-navbar-disabled-color: rgba(0,0,0,0.3);--bs-navbar-active-color: #3399f3;--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #3399f3;--bs-navbar-brand-hover-color: #3399f3;--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(0,0,0,0.15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme="dark"]{--bs-navbar-color: rgba(255,255,255,0.55);--bs-navbar-hover-color: rgba(255,255,255,0.75);--bs-navbar-disabled-color: rgba(255,255,255,0.25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255,255,255,0.1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme="dark"] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23777'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231b2c3e'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #a2b7cd;--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(68,110,155,0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme="dark"] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238fa8c3'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238fa8c3'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(68,110,155,0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #446e9b;--bs-pagination-active-border-color: #446e9b;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size:.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:.75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #446e9b;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #446e9b;--bs-list-group-active-border-color: #446e9b;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: .5;--bs-btn-close-hover-opacity: .75;--bs-btn-close-focus-shadow: 0 0 0 .25rem rgba(68,110,155,0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: .25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme="dark"] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:.875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: #2d2d2d;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme="dark"] .carousel .carousel-control-prev-icon,[data-bs-theme="dark"] .carousel .carousel-control-next-icon,[data-bs-theme="dark"].carousel .carousel-control-prev-icon,[data-bs-theme="dark"].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme="dark"] .carousel .carousel-indicators [data-bs-target],[data-bs-theme="dark"].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme="dark"] .carousel .carousel-caption,[data-bs-theme="dark"].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-offcanvas-transition: transform .3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media (min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0,0,0,0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0,0,0,0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(122,122,122, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(122,122,122, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(54,88,124, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(54,88,124, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(122,122,122, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(122,122,122, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(48,145,26, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(48,145,26, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(41,122,194, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(41,122,194, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(170,94,0, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(170,94,0, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(164,2,0, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(164,2,0, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(241,241,241, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(241,241,241, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(41,41,41, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(41,41,41, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:0.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.375rem + 1.5vw) !important}.fs-2{font-size:calc(1.325rem + .9vw) !important}.fs-3{font-size:calc(1.3rem + .6vw) !important}.fs-4{font-size:calc(1.275rem + .3vw) !important}.fs-5{font-size:1.25rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,0.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,0.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: .1}.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25{--bs-link-opacity: .25}.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50{--bs-link-opacity: .5}.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75{--bs-link-opacity: .75}.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: .1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25{--bs-link-underline-opacity: .25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50{--bs-link-underline-opacity: .5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75{--bs-link-underline-opacity: .75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media (min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media (min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media (min-width: 1200px){.fs-1{font-size:2.5rem !important}.fs-2{font-size:2rem !important}.fs-3{font-size:1.75rem !important}.fs-4{font-size:1.5rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.table th[align=left]{text-align:left}.table th[align=right]{text-align:right}.table th[align=center]{text-align:center}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre,.bslib-gap-spacing>.shiny-html-output>.bslib-mb-spacing,.bslib-gap-spacing>.shiny-html-output>.form-group,.bslib-gap-spacing>.shiny-html-output>p,.bslib-gap-spacing>.shiny-html-output>pre,.bslib-gap-spacing>.shiny-panel-conditional>.bslib-mb-spacing,.bslib-gap-spacing>.shiny-panel-conditional>.form-group,.bslib-gap-spacing>.shiny-panel-conditional>p,.bslib-gap-spacing>.shiny-panel-conditional>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #446e9b;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #446e9b;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #cd0200;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #cd0200;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #d47500;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #d47500;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3cb521;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3cb521;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3399f3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3399f3;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #999}.bg-default{--bslib-color-bg: #999;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #446e9b}.bg-primary{--bslib-color-bg: #446e9b;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #999}.bg-secondary{--bslib-color-bg: #999;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3cb521}.bg-success{--bslib-color-bg: #3cb521;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3399f3}.bg-info{--bslib-color-bg: #3399f3;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #d47500}.bg-warning{--bslib-color-bg: #d47500;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #cd0200}.bg-danger{--bslib-color-bg: #cd0200;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #eee}.bg-light{--bslib-color-bg: #eee;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #333}.bg-dark{--bslib-color-bg: #333;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #5248be;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #5248be;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #555caa;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #555caa;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #865b95;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #865b95;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7b435d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #7b435d;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #8e7465;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #8e7465;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7e715d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #7e715d;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #418a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #418a6a;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #369299;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #369299;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #3d7fbe;background:linear-gradient(var(--bg-gradient-deg, 140deg), #446e9b var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #3d7fbe;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #5836cf;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #5836cf;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6a24de;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #6a24de;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #8f0a91;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #8f0a91;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #a23c99;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #a23c99;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #923891;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #923891;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #55529e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #55529e;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #5247f2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #5247f2;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #5e54b2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #5e54b2;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #6b2ed5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #6b2ed5;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9f40ac;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9f40ac;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #952874;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #952874;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #a85a7c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #a85a7c;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #975674;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #975674;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #5b7081;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #5b7081;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4f78b0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4f78b0;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #5765d5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #5765d5;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a65192;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #a65192;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b840a1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #b840a1;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #dd2654;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #dd2654;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f0585c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #f0585c;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #e05454;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #e05454;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a36e61;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #a36e61;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #a062b5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #a062b5;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #962d3e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #962d3e;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #a40861;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #a40861;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #a71c4d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #a71c4d;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #d81a38;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #d81a38;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #e03408;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #e03408;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #d03000;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #d03000;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #934a0d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #934a0d;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #88523c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #88523c;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #8f3e61;background:linear-gradient(var(--bg-gradient-deg, 140deg), #cd0200 var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #8f3e61;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #b3784a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #b3784a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c1526d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c1526d;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c46659;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #c46659;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f56444;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f56444;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #ea4c0c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #ea4c0c;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ed7a0c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #ed7a0c;color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: #b09419;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #b09419;color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a59c48;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a59c48;color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #ac896d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #ac896d;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9a723e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #9a723e;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #a84d61;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #a84d61;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #ac614d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #ac614d;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #dc5f38;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #dc5f38;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #d14700;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #d14700;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: #e47908;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #e47908;color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #978f0d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #978f0d;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #8c973c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #8c973c;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #948361;background:linear-gradient(var(--bg-gradient-deg, 140deg), #d47500 var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #948361;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #3f9952;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #3f9952;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4d7375;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4d7375;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #508761;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #508761;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #81854c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #81854c;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #766d14;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #766d14;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: #899f1c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #899f1c;color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #799b14;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #799b14;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #31bd50;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #31bd50;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #38aa75;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3cb521 var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #38aa75;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #2ea599;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #2ea599;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4093a8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #4093a8;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #65795b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #65795b;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: #78ab63;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #78ab63;color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #68a75b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #68a75b;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2bc168;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #2bc168;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #000;--bslib-color-bg: #28b6bc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3399f3 var(--bg-gradient-end, 180%)) #28b6bc;color:#000}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #3a88d0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #446e9b var(--bg-gradient-end, 180%)) #3a88d0;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4762f3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4762f3;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4b76df;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) #4b76df;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7b75ca;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7b75ca;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #715d92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #cd0200 var(--bg-gradient-end, 180%)) #715d92;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #848e9a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) #848e9a;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #738b92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #d47500 var(--bg-gradient-end, 180%)) #738b92;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #37a49f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #3cb521 var(--bg-gradient-end, 180%)) #37a49f;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #2bacce;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3399f3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #2bacce;color:#fff}.navbar .nav-link,.navbar .navbar-brand{text-shadow:-1px -1px 0 rgba(0,0,0,0.05);transition:color ease-in-out .2s}.navbar.bg-default{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.navbar.bg-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.navbar.bg-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.navbar.bg-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.navbar.bg-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.navbar.bg-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.navbar.bg-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.navbar.bg-light .nav-link,.navbar.bg-light .navbar-brand,.navbar.navbar-default .nav-link,.navbar.navbar-default .navbar-brand{text-shadow:1px 1px 0 rgba(255,255,255,0.1)}.navbar.bg-light .navbar-brand,.navbar.navbar-default .navbar-brand{color:rgba(0,0,0,0.65)}.navbar.bg-light .navbar-brand:hover,.navbar.navbar-default .navbar-brand:hover{color:#3399f3}.btn{text-shadow:-1px -1px 0 rgba(0,0,0,0.1)}.btn-link{text-shadow:none}.btn-default{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-default:not(.disabled):hover{background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.btn-primary:not(.disabled):hover{background-image:linear-gradient(#6d8aaa, #3f658f 50%, #3a5d84);filter:none;border:1px solid #325172}.btn-secondary,.btn-default:not(.btn-primary):not(.btn-info):not(.btn-success):not(.btn-warning):not(.btn-danger):not(.btn-dark):not(.btn-light):not([class*='btn-outline-']){background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-secondary:not(.disabled):hover,.btn-default:not(.disabled):hover:not(.btn-primary):not(.btn-info):not(.btn-success):not(.btn-warning):not(.btn-danger):not(.btn-dark):not(.btn-light):not([class*='btn-outline-']){background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.btn-success:not(.disabled):hover{background-image:linear-gradient(#67bc54, #37a71e 50%, #339a1c);filter:none;border:1px solid #2c8618}.btn-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.btn-info:not(.disabled):hover{background-image:linear-gradient(#61a8e7, #2f8de0 50%, #2b82ce);filter:none;border:1px solid #2671b3}.btn-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.btn-warning:not(.disabled):hover{background-image:linear-gradient(#d18f3d, #c36c00 50%, #b36300);filter:none;border:1px solid #9c5600}.btn-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.btn-danger:not(.disabled):hover{background-image:linear-gradient(#cd3f3d, #bd0200 50%, #ae0200);filter:none;border:1px solid #970200}.btn-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.btn-light:not(.disabled):hover{background-image:linear-gradient(#e4e4e4, #dbdbdb 50%, #c9c9c9);filter:none;border:1px solid #afafaf}.btn-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.btn-dark:not(.disabled):hover{background-image:linear-gradient(#616161, #2f2f2f 50%, #2b2b2b);filter:none;border:1px solid #262626}[class*="btn-outline-"]{text-shadow:none}.badge.bg-light{color:#333}.card h1,.card .h1,.card h2,.card .h2,.card h3,.card .h3,.card h4,.card .h4,.card h5,.card .h5,.card h6,.card .h6,.list-group-item h1,.list-group-item .h1,.list-group-item h2,.list-group-item .h2,.list-group-item h3,.list-group-item .h3,.list-group-item h4,.list-group-item .h4,.list-group-item h5,.list-group-item .h5,.list-group-item h6,.list-group-item .h6{color:inherit}.row>main{max-width:50rem;overflow-wrap:break-word;hyphens:auto}@media (min-width: 1200px) and (max-width: 1399.98px){.container .row{justify-content:space-evenly}}@media (min-width: 1400px){body{font-size:18px}.col-md-3{margin-left:5rem}}.navbar{background:RGBA(var(--bs-body-color-rgb), 0.1);background:color-mix(in oklab, color-mix(in oklab, var(--bs-body-bg) 95%, var(--bs-primary)) 95%, var(--bs-body-color));line-height:initial}.nav-item .nav-link{border-radius:.375rem}.nav-item.active .nav-link{background:RGBA(var(--bs-body-color-rgb), 0.1)}.nav-item .nav-link:hover{background:RGBA(var(--bs-primary-rgb), 0.1)}.navbar>.container{align-items:baseline;-webkit-align-items:baseline}input[type="search"]{width:12rem}[aria-labelledby=dropdown-lightswitch] span.fa{opacity:0.5}@media (max-width: 991.98px){.algolia-autocomplete,input[type="search"],#navbar .dropdown-menu{width:100%}#navbar .dropdown-item{white-space:normal}input[type="search"]{margin:0.25rem 0}}.headroom{will-change:transform;transition:transform 400ms ease}.headroom--pinned{transform:translateY(0%)}.headroom--unpinned{transform:translateY(-100%)}.row>main,.row>aside{margin-top:56px}html,body{scroll-padding:56px}@media (min-width: 576px){#toc{position:sticky;top:56px;max-height:calc(100vh - 56px - 1rem);overflow-y:auto}}aside h2,aside .h2{margin-top:1.5rem;font-size:1.25rem}aside .roles{color:RGBA(var(--bs-body-color-rgb), 0.8)}aside .list-unstyled li{margin-bottom:0.5rem}aside .dev-status .list-unstyled li{margin-bottom:0.1rem}@media (max-width: 767.98px){.row>aside{margin:0.5rem;width:calc(100vw - 1rem);background-color:RGBA(var(--bs-body-color-rgb), 0.1);border-color:var(--bs-border-color);border-radius:.375rem}.row>aside h2:first-child,.row>aside .h2:first-child{margin-top:1rem}}body{position:relative}#toc>.nav{margin-bottom:1rem}#toc>.nav a.nav-link{color:inherit;padding:0.25rem 0.5rem;margin-bottom:2px;border-radius:.375rem}#toc>.nav a.nav-link:hover,#toc>.nav a.nav-link:focus{background-color:RGBA(var(--bs-primary-rgb), 0.1)}#toc>.nav a.nav-link.active{background-color:RGBA(var(--bs-body-color-rgb), 0.1)}#toc>.nav .nav a.nav-link{margin-left:0.5rem}#toc>.nav .nav{display:none !important}#toc>.nav a.active+.nav{display:flex !important}footer{margin:1rem 0 1rem 0;padding-top:1rem;font-size:.875em;border-top:1px solid #dee2e6;background:rgba(0,0,0,0);color:RGBA(var(--bs-body-color-rgb), 0.8);display:flex;column-gap:1rem}@media (max-width: 575.98px){footer{flex-direction:column}}@media (min-width: 576px){footer .pkgdown-footer-right{text-align:right}}footer div{flex:1 1 auto}html,body{height:100%}body>.container{min-height:100%;display:flex;flex-direction:column}body>.container .row{flex:1 0 auto}main img{max-width:100%;height:auto}main table{display:block;overflow:auto}body{font-display:fallback}.page-header{border-bottom:1px solid var(--bs-border-color);padding-bottom:0.5rem;margin-bottom:0.5rem;margin-top:1.5rem}dl{margin-bottom:0}dd{padding-left:1.5rem;margin-bottom:0.25rem}h2,.h2{font-size:1.75rem;margin-top:1.5rem}h3,.h3{font-size:1.25rem;margin-top:1rem;font-weight:bold}h4,.h4{font-size:1.1rem;font-weight:bold}h5,.h5{font-size:1rem;font-weight:bold}summary{margin-bottom:0.5rem}details{margin-bottom:1rem}.html-widget{margin-bottom:1rem}a.anchor{display:none;margin-left:2px;vertical-align:top;width:Min(0.9em, 20px);height:Min(0.9em, 20px);background-image:url(../../link.svg);background-repeat:no-repeat;background-size:Min(0.9em, 20px) Min(0.9em, 20px);background-position:center center}h2:hover .anchor,.h2:hover .anchor,h2:target .anchor,.h2:target .anchor,h3:hover .anchor,.h3:hover .anchor,h3:target .anchor,.h3:target .anchor,h4:hover .anchor,.h4:hover .anchor,h4:target .anchor,.h4:target .anchor,h5:hover .anchor,.h5:hover .anchor,h5:target .anchor,.h5:target .anchor,h6:hover .anchor,.h6:hover .anchor,h6:target .anchor,.h6:target .anchor,dt:hover .anchor,dt:target .anchor{display:inline-block}dt:target,dt:target+dd{border-left:0.25rem solid var(--bs-primary);margin-left:-0.75rem}dt:target{padding-left:0.5rem}dt:target+dd{padding-left:2rem}.orcid{color:#A6CE39;margin-right:4px}.fab{font-family:"Font Awesome 5 Brands" !important}img.logo{float:right;width:100px;margin-left:30px}.template-home img.logo{width:120px}@media (max-width: 575.98px){img.logo{width:80px}}@media (min-width: 576px){.page-header{min-height:88px}.template-home .page-header{min-height:104px}}.line-block{margin-bottom:1rem}.template-reference-index dt{font-weight:normal}.template-reference-index code{word-wrap:normal}.icon{float:right}.icon img{width:40px}a[href='#main']{position:absolute;margin:4px;padding:0.75rem;background-color:var(--bs-body-bg);text-decoration:none;z-index:2000}.lifecycle{color:var(--bs-secondary-color);background-color:var(--bs-secondary-bg);border-radius:5px}.lifecycle-stable{background-color:#108001;color:var(--bs-white)}.lifecycle-superseded{background-color:#074080;color:var(--bs-white)}.lifecycle-experimental,.lifecycle-deprecated{background-color:#fd8008;color:var(--bs-black)}a.footnote-ref{cursor:pointer}.popover{width:Min(100vw, 32rem);font-size:0.9rem;box-shadow:4px 4px 8px RGBA(var(--bs-body-color-rgb), 0.3)}.popover-body{padding:0.75rem}.popover-body p:last-child{margin-bottom:0}.tab-content{padding:1rem}.tabset-pills .tab-content{border:solid 1px #e5e5e5}.tab-content{display:flex}.tab-content>.tab-pane{display:block;visibility:hidden;margin-right:-100%;width:100%}.tab-content>.active{visibility:visible}div.csl-entry{clear:both}.hanging-indent div.csl-entry{margin-left:2em;text-indent:-2em}div.csl-left-margin{min-width:2em;float:left}div.csl-right-inline{margin-left:2em;padding-left:1em}div.csl-indent{margin-left:2em}pre,pre code{word-wrap:normal}[data-bs-theme="dark"] pre,[data-bs-theme="dark"] code{background-color:RGBA(var(--bs-body-color-rgb), 0.1)}[data-bs-theme="dark"] pre code{background:transparent}code{overflow-wrap:break-word}.hasCopyButton{position:relative}.btn-copy-ex{position:absolute;right:5px;top:5px;visibility:hidden}.hasCopyButton:hover button.btn-copy-ex{visibility:visible}pre{padding:0.75rem}pre div.gt-table{white-space:normal;margin-top:1rem}@media (max-width: 575.98px){div>div>pre{margin-left:calc(var(--bs-gutter-x) * -.5);margin-right:calc(var(--bs-gutter-x) * -.5);border-radius:0;padding-left:1rem;padding-right:1rem}.btn-copy-ex{right:calc(var(--bs-gutter-x) * -.5 + 5px)}}code a:any-link{color:inherit;text-decoration-color:RGBA(var(--bs-body-color-rgb), 0.6)}pre code{padding:0;background:transparent}pre code .error,pre code .warning{font-weight:bolder}pre .img img,pre .r-plt img{margin:5px 0;background-color:#fff}[data-bs-theme="dark"] pre img{opacity:0.66;transition:opacity 250ms ease-in-out}[data-bs-theme="dark"] pre img:hover,[data-bs-theme="dark"] pre img:focus,[data-bs-theme="dark"] pre img:active{opacity:1}@media print{code a:link:after,code a:visited:after{content:""}}a.sourceLine:hover{text-decoration:none}mark,.mark{background:linear-gradient(-100deg, RGBA(var(--bs-info-rgb), 0.2), RGBA(var(--bs-info-rgb), 0.7) 95%, RGBA(var(--bs-info-rgb), 0.1))}.algolia-autocomplete .aa-dropdown-menu{margin-top:0.5rem;padding:0.5rem 0.25rem;width:MAX(100%, 20rem);max-height:50vh;overflow-y:auto;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:.375rem}.algolia-autocomplete .aa-dropdown-menu .aa-suggestion{cursor:pointer;font-size:1rem;padding:0.5rem 0.25rem;line-height:1.3}.algolia-autocomplete .aa-dropdown-menu .aa-suggestion:hover{background-color:var(--bs-tertiary-bg);color:var(--bs-body-color)}.algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-details{text-decoration:underline;display:inline}span.smallcaps{font-variant:small-caps}ul.task-list{list-style:none}ul.task-list li input[type="checkbox"]{width:0.8em;margin:0 0.8em 0.2em -1em;vertical-align:middle}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:0.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:0.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:0.5em}figure>figcaption.quarto-float-caption-top{margin-top:0.5em}:root{--mermaid-bg-color: transparent;--mermaid-edge-color: var(--bs-secondary);--mermaid-fg-color: var(--bs-body-color);--mermaid-fg-color--lighter: RGBA(var(--bs-body-color-rgb), 0.9);--mermaid-fg-color--lightest: RGBA(var(--bs-body-color-rgb), 0.8);--mermaid-font-family: var(--bs-body-font-family);--mermaid-label-bg-color: var(--bs-primary);--mermaid-label-fg-color: var(--bs-body-color);--mermaid-node-bg-color: RGBA(var(--bs-primary-rgb), 0.1);--mermaid-node-fg-color: var(--bs-primary)}pre{background-color:#f1f3f5}pre code{color:#003B4F}pre code span.al{color:#AD0000}pre code span.an{color:#5E5E5E}pre code span.at{color:#657422}pre code span.bn{color:#AD0000}pre code span.cf{color:#003B4F}pre code span.ch{color:#20794D}pre code span.cn{color:#8f5902}pre code span.co{color:#5E5E5E}pre code span.cv{color:#5E5E5E;font-style:italic}pre code span.do{color:#5E5E5E;font-style:italic}pre code span.dt{color:#AD0000}pre code span.dv{color:#AD0000}pre code span.er{color:#AD0000}pre code span.fl{color:#AD0000}pre code span.fu{color:#4758AB}pre code span.im{color:#00769E}pre code span.in{color:#5E5E5E}pre code span.kw{color:#003B4F}pre code span.op{color:#5E5E5E}pre code span.ot{color:#003B4F}pre code span.pp{color:#AD0000}pre code span.sc{color:#5E5E5E}pre code span.ss{color:#20794D}pre code span.st{color:#20794D}pre code span.va{color:#111111}pre code span.vs{color:#20794D}pre code span.wa{color:#5E5E5E;font-style:italic} diff --git a/docs/dev/deps/bootstrap-5.3.1/font.css b/docs/dev/deps/bootstrap-5.3.1/font.css new file mode 100644 index 00000000..d0513bf3 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/font.css @@ -0,0 +1,400 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* hebrew */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2) format('woff2'); + unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; +} +/* math */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2) format('woff2'); + unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0330, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2034-2037, U+2057, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2102, U+210A-210E, U+2110-2112, U+2115, U+2119-211D, U+2124, U+2128, U+212C-212D, U+212F-2131, U+2133-2138, U+213C-2140, U+2145-2149, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B6, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF; +} +/* symbols */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2) format('woff2'); + unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8B1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA88, U+1FA90-1FABD, U+1FABF-1FAC5, U+1FACE-1FADB, U+1FAE0-1FAE8, U+1FAF0-1FAF8, U+1FB00-1FBFF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* hebrew */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2) format('woff2'); + unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; +} +/* math */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2) format('woff2'); + unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0330, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2034-2037, U+2057, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2102, U+210A-210E, U+2110-2112, U+2115, U+2119-211D, U+2124, U+2128, U+212C-212D, U+212F-2131, U+2133-2138, U+213C-2140, U+2145-2149, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B6, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF; +} +/* symbols */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2) format('woff2'); + unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8B1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA88, U+1FA90-1FABD, U+1FABF-1FAC5, U+1FACE-1FADB, U+1FAE0-1FAE8, U+1FAF0-1FAF8, U+1FB00-1FBFF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* hebrew */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2) format('woff2'); + unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; +} +/* math */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2) format('woff2'); + unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0330, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2034-2037, U+2057, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2102, U+210A-210E, U+2110-2112, U+2115, U+2119-211D, U+2124, U+2128, U+212C-212D, U+212F-2131, U+2133-2138, U+213C-2140, U+2145-2149, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B6, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF; +} +/* symbols */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2) format('woff2'); + unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8B1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA88, U+1FA90-1FABD, U+1FABF-1FAC5, U+1FACE-1FADB, U+1FAE0-1FAE8, U+1FAF0-1FAF8, U+1FB00-1FBFF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* hebrew */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2) format('woff2'); + unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; +} +/* math */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2) format('woff2'); + unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0330, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2034-2037, U+2057, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2102, U+210A-210E, U+2110-2112, U+2115, U+2119-211D, U+2124, U+2128, U+212C-212D, U+212F-2131, U+2133-2138, U+213C-2140, U+2145-2149, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B6, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF; +} +/* symbols */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2) format('woff2'); + unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8B1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA88, U+1FA90-1FABD, U+1FABF-1FAC5, U+1FACE-1FADB, U+1FAE0-1FAE8, U+1FAF0-1FAF8, U+1FB00-1FBFF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/07d40e985ad7c747025dabb9f22142c4.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/07d40e985ad7c747025dabb9f22142c4.woff2 Binary files differnew file mode 100644 index 00000000..a45f4778 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/07d40e985ad7c747025dabb9f22142c4.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyC0ITw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyC0ITw.woff2 Binary files differnew file mode 100644 index 00000000..6478b9ad --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyC0ITw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCAIT5lu.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCAIT5lu.woff2 Binary files differnew file mode 100644 index 00000000..dee82d4b --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCAIT5lu.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCIIT5lu.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCIIT5lu.woff2 Binary files differnew file mode 100644 index 00000000..b5664780 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCIIT5lu.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCMIT5lu.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCMIT5lu.woff2 Binary files differnew file mode 100644 index 00000000..e0d65386 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCMIT5lu.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCkIT5lu.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCkIT5lu.woff2 Binary files differnew file mode 100644 index 00000000..1005b7c8 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptug8zYS_SKggPNyCkIT5lu.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/1f5e011d6aae0d98fc0518e1a303e99a.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/1f5e011d6aae0d98fc0518e1a303e99a.woff2 Binary files differnew file mode 100644 index 00000000..8f9ec7cc --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/1f5e011d6aae0d98fc0518e1a303e99a.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcQ72j00.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcQ72j00.woff2 Binary files differnew file mode 100644 index 00000000..e5cdc99a --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcQ72j00.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcg72j00.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcg72j00.woff2 Binary files differnew file mode 100644 index 00000000..3804815a --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcg72j00.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcw72j00.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcw72j00.woff2 Binary files differnew file mode 100644 index 00000000..b52cff96 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKcw72j00.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKew72j00.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKew72j00.woff2 Binary files differnew file mode 100644 index 00000000..cb672f2b --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKew72j00.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfA72j00.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfA72j00.woff2 Binary files differnew file mode 100644 index 00000000..dc3c2953 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfA72j00.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfw72.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfw72.woff2 Binary files differnew file mode 100644 index 00000000..8070e4f7 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfw72.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2 Binary files differnew file mode 100644 index 00000000..926a1e6f --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjs2yNL4U.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjsGyN.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjsGyN.woff2 Binary files differnew file mode 100644 index 00000000..2c08bc62 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjsGyN.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2 Binary files differnew file mode 100644 index 00000000..6d732de1 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjtGyNL4U.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2 Binary files differnew file mode 100644 index 00000000..d2fb863a --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvGyNL4U.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2 Binary files differnew file mode 100644 index 00000000..5386e806 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvWyNL4U.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2 Binary files differnew file mode 100644 index 00000000..0d62144c --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjvmyNL4U.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/626330658504e338ee86aec8e957426b.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/626330658504e338ee86aec8e957426b.woff2 Binary files differnew file mode 100644 index 00000000..381d41fb --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/626330658504e338ee86aec8e957426b.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 Binary files differnew file mode 100644 index 00000000..2bcdb320 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 Binary files differnew file mode 100644 index 00000000..6a8b92a3 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 Binary files differnew file mode 100644 index 00000000..5d4d718e --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 Binary files differnew file mode 100644 index 00000000..c9300352 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 Binary files differnew file mode 100644 index 00000000..190e8ac0 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 Binary files differnew file mode 100644 index 00000000..7b21aa84 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 Binary files differnew file mode 100644 index 00000000..180e76d9 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 Binary files differnew file mode 100644 index 00000000..f9915277 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 Binary files differnew file mode 100644 index 00000000..69d26d80 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 Binary files differnew file mode 100644 index 00000000..5c9f701b --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 Binary files differnew file mode 100644 index 00000000..a61ec915 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 Binary files differnew file mode 100644 index 00000000..33145f94 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 Binary files differnew file mode 100644 index 00000000..b1986c23 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 Binary files differnew file mode 100644 index 00000000..2462c511 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 Binary files differnew file mode 100644 index 00000000..ccf6b8e6 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 Binary files differnew file mode 100644 index 00000000..8b03f91b --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 Binary files differnew file mode 100644 index 00000000..3ca3e26c --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 Binary files differnew file mode 100644 index 00000000..daa43962 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 Binary files differnew file mode 100644 index 00000000..7916a329 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 Binary files differnew file mode 100644 index 00000000..5cf09980 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 Binary files differnew file mode 100644 index 00000000..de50d2b5 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2 Binary files differnew file mode 100644 index 00000000..cd3f1593 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2 Binary files differnew file mode 100644 index 00000000..d0a493f5 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2 Binary files differnew file mode 100644 index 00000000..134cce1d --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2 Binary files differnew file mode 100644 index 00000000..29fb3995 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2 Binary files differnew file mode 100644 index 00000000..889d871f --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2 Binary files differnew file mode 100644 index 00000000..b5e72d12 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2 Binary files differnew file mode 100644 index 00000000..d62d6fcf --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2 Binary files differnew file mode 100644 index 00000000..9f2cdfc7 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2 Binary files differnew file mode 100644 index 00000000..51260e3f --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2 Binary files differnew file mode 100644 index 00000000..86e47796 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2 Binary files differnew file mode 100644 index 00000000..e538c265 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2 Binary files differnew file mode 100644 index 00000000..0a9a5205 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2 Binary files differnew file mode 100644 index 00000000..fa70af3a --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2 Binary files differnew file mode 100644 index 00000000..47872fbc --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNReuQ.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNReuQ.woff2 Binary files differnew file mode 100644 index 00000000..81e14769 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNReuQ.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNpeudwk.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNpeudwk.woff2 Binary files differnew file mode 100644 index 00000000..3d9ec072 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNpeudwk.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fO4KTet_.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fO4KTet_.woff2 Binary files differnew file mode 100644 index 00000000..12c485e0 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fO4KTet_.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKTQ.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKTQ.woff2 Binary files differnew file mode 100644 index 00000000..c58efa85 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKTQ.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2 Binary files differnew file mode 100644 index 00000000..5a5cd9c5 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2 Binary files differnew file mode 100644 index 00000000..a455e2b9 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2 Binary files differnew file mode 100644 index 00000000..b455dfec --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2 Binary files differnew file mode 100644 index 00000000..6fbd85ab --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2 Binary files differnew file mode 100644 index 00000000..df5f1932 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2 Binary files differnew file mode 100644 index 00000000..29531f47 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2 Binary files differnew file mode 100644 index 00000000..36428b18 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2 Binary files differnew file mode 100644 index 00000000..51cc9634 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2 Binary files differnew file mode 100644 index 00000000..1059d866 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2 Binary files differnew file mode 100644 index 00000000..82b2771f --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2 Binary files differnew file mode 100644 index 00000000..959a0596 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2 Binary files differnew file mode 100644 index 00000000..b52412fc --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2 Binary files differnew file mode 100644 index 00000000..92ec082a --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2 Binary files differnew file mode 100644 index 00000000..a15fcd88 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2 Binary files differnew file mode 100644 index 00000000..5379c126 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2 Binary files differnew file mode 100644 index 00000000..4b7bc4a3 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2 Binary files differnew file mode 100644 index 00000000..6ec37309 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2 Binary files differnew file mode 100644 index 00000000..76691276 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2 Binary files differnew file mode 100644 index 00000000..6122800c --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..cb5834ff --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 Binary files differnew file mode 100644 index 00000000..29342a8d --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBBc4.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..0933dfe8 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..064e94b7 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..8571683e --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..68f094cd --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..6b0b4afe --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..9d7fb7f8 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 Binary files differnew file mode 100644 index 00000000..60681387 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..b289f002 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..87711c04 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..0f6e60b8 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..91231c9c --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..c0099878 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..1bb7737c --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 Binary files differnew file mode 100644 index 00000000..771fbecc --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..cb9bfa71 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..a0d68e2b --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..63995528 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..94ab5fb0 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 Binary files differnew file mode 100644 index 00000000..3c450111 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 Binary files differnew file mode 100644 index 00000000..fc71d944 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 Binary files differnew file mode 100644 index 00000000..020729ef --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 Binary files differnew file mode 100644 index 00000000..47da3629 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 Binary files differnew file mode 100644 index 00000000..22ddee9c --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 Binary files differnew file mode 100644 index 00000000..8a8de615 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 Binary files differnew file mode 100644 index 00000000..6284d2e3 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 Binary files differnew file mode 100644 index 00000000..72ce0e98 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhN.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhN.woff2 Binary files differnew file mode 100644 index 00000000..5b052bb3 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhN.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAUi-qJCY.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAUi-qJCY.woff2 Binary files differnew file mode 100644 index 00000000..15be816a --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAUi-qJCY.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAXC-q.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAXC-q.woff2 Binary files differnew file mode 100644 index 00000000..851630ff --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAXC-q.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2 Binary files differnew file mode 100644 index 00000000..2c8aaa86 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2 Binary files differnew file mode 100644 index 00000000..11de83fe --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2 Binary files differnew file mode 100644 index 00000000..486d3ecf --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2 Binary files differnew file mode 100644 index 00000000..aad98a33 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjx4wXg.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjx4wXg.woff2 Binary files differnew file mode 100644 index 00000000..ff60934d --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjx4wXg.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 Binary files differnew file mode 100644 index 00000000..edb9fa6f --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7SUc.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7SUc.woff2 Binary files differnew file mode 100644 index 00000000..b655a438 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7SUc.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2 Binary files differnew file mode 100644 index 00000000..40255432 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7SUc.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7SUc.woff2 Binary files differnew file mode 100644 index 00000000..eb38b38e --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7SUc.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7SUc.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7SUc.woff2 Binary files differnew file mode 100644 index 00000000..3df865d7 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7SUc.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2 Binary files differnew file mode 100644 index 00000000..a61a0be5 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7SUc.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7SUc.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7SUc.woff2 Binary files differnew file mode 100644 index 00000000..9117b5b0 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7SUc.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7SUc.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7SUc.woff2 Binary files differnew file mode 100644 index 00000000..ce21ca17 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7SUc.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIMeaBXso.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIMeaBXso.woff2 Binary files differnew file mode 100644 index 00000000..98074042 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIMeaBXso.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofINeaB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofINeaB.woff2 Binary files differnew file mode 100644 index 00000000..042b9ab7 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofINeaB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIO-aBXso.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIO-aBXso.woff2 Binary files differnew file mode 100644 index 00000000..28fc6f21 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIO-aBXso.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOOaBXso.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOOaBXso.woff2 Binary files differnew file mode 100644 index 00000000..4e2a1826 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOOaBXso.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOuaBXso.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOuaBXso.woff2 Binary files differnew file mode 100644 index 00000000..af0abf29 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/XRXV3I6Li01BKofIOuaBXso.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/c2f002b3a87d3f9bfeebb23d32cfd9f8.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/c2f002b3a87d3f9bfeebb23d32cfd9f8.woff2 Binary files differnew file mode 100644 index 00000000..ff275508 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/c2f002b3a87d3f9bfeebb23d32cfd9f8.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/ee91700cdbf7ce16c054c2bb8946c736.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/ee91700cdbf7ce16c054c2bb8946c736.woff2 Binary files differnew file mode 100644 index 00000000..b0e2c35f --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/ee91700cdbf7ce16c054c2bb8946c736.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2 Binary files differnew file mode 100644 index 00000000..c787ad8d --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2 Binary files differnew file mode 100644 index 00000000..f3b2c4d5 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2 Binary files differnew file mode 100644 index 00000000..87f0364b --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2 Binary files differnew file mode 100644 index 00000000..3f5ef094 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2 Binary files differnew file mode 100644 index 00000000..f762e912 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2 Binary files differnew file mode 100644 index 00000000..7404f028 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2 Binary files differnew file mode 100644 index 00000000..8e05a7ff --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2 Binary files differnew file mode 100644 index 00000000..7d385f37 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2 Binary files differnew file mode 100644 index 00000000..387470b8 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2 Binary files differnew file mode 100644 index 00000000..f53b8df9 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2 Binary files differnew file mode 100644 index 00000000..0beab546 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2 Binary files differnew file mode 100644 index 00000000..e1ce55f0 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2 Binary files differnew file mode 100644 index 00000000..9c609c81 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2 Binary files differnew file mode 100644 index 00000000..7cd1174c --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2 Binary files differnew file mode 100644 index 00000000..b8521265 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2 Binary files differnew file mode 100644 index 00000000..612ff5d3 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2 Binary files differnew file mode 100644 index 00000000..f482ce1d --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2 Binary files differnew file mode 100644 index 00000000..b7bc8626 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2 Binary files differnew file mode 100644 index 00000000..18862e85 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2 Binary files differnew file mode 100644 index 00000000..35bac5d1 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfuQltOxU.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfuQltOxU.woff2 Binary files differnew file mode 100644 index 00000000..28852dbb --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfuQltOxU.woff2 diff --git a/docs/dev/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfvQlt.woff2 b/docs/dev/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfvQlt.woff2 Binary files differnew file mode 100644 index 00000000..886c2d72 --- /dev/null +++ b/docs/dev/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfvQlt.woff2 diff --git a/docs/dev/deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js b/docs/dev/deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js new file mode 100644 index 00000000..c628326a --- /dev/null +++ b/docs/dev/deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js @@ -0,0 +1,5 @@ +/*! + * Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ +!function(a){"use strict";window.Toc={helpers:{findOrFilter:function(e,t){var n=e.find(t);return e.filter(t).add(n).filter(":not([data-toc-skip])")},generateUniqueIdBase:function(e){return a(e).text().trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,64).replace(/^-+|-+$/gm,"").toLowerCase()||e.tagName.toLowerCase()},generateUniqueId:function(e){for(var t=this.generateUniqueIdBase(e),n=0;;n++){var r=t;if(0<n&&(r+="-"+n),!document.getElementById(r))return r}},generateAnchor:function(e){if(e.id)return e.id;var t=this.generateUniqueId(e);return e.id=t},createNavList:function(){return a('<ul class="nav navbar-nav"></ul>')},createChildNavList:function(e){var t=this.createNavList();return e.append(t),t},generateNavEl:function(e,t){var n=a('<a class="nav-link"></a>');n.attr("href","#"+e),n.text(t);var r=a("<li></li>");return r.append(n),r},generateNavItem:function(e){var t=this.generateAnchor(e),n=a(e),r=n.data("toc-text")||n.text();return this.generateNavEl(t,r)},getTopLevel:function(e){for(var t=1;t<=6;t++){if(1<this.findOrFilter(e,"h"+t).length)return t}return 1},getHeadings:function(e,t){var n="h"+t,r="h"+(t+1);return this.findOrFilter(e,n+","+r)},getNavLevel:function(e){return parseInt(e.tagName.charAt(1),10)},populateNav:function(r,a,e){var i,s=r,c=this;e.each(function(e,t){var n=c.generateNavItem(t);c.getNavLevel(t)===a?s=r:i&&s===r&&(s=c.createChildNavList(i)),s.append(n),i=n})},parseOps:function(e){var t;return(t=e.jquery?{$nav:e}:e).$scope=t.$scope||a(document.body),t}},init:function(e){(e=this.helpers.parseOps(e)).$nav.attr("data-toggle","toc");var t=this.helpers.createChildNavList(e.$nav),n=this.helpers.getTopLevel(e.$scope),r=this.helpers.getHeadings(e.$scope,n);this.helpers.populateNav(t,n,r)}},a(function(){a('nav[data-toggle="toc"]').each(function(e,t){var n=a(t);Toc.init(n)})})}(jQuery);
\ No newline at end of file diff --git a/docs/dev/deps/clipboard.js-2.0.11/clipboard.min.js b/docs/dev/deps/clipboard.js-2.0.11/clipboard.min.js new file mode 100644 index 00000000..1103f811 --- /dev/null +++ b/docs/dev/deps/clipboard.js-2.0.11/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=o(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=o(t.value,e):(n=r()(t),c("copy")),n};function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,o=t.container,e=t.target,t=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==e){if(!e||"object"!==l(e)||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return t?f(t,{container:o}):e?"cut"===n?a(e):f(e,{container:o}):void 0};function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function y(t,e){return(y=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(n){var o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=v(n);return t=o?(t=v(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),e=this,!(t=t)||"object"!==p(t)&&"function"!=typeof t?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}}function v(t){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}var b=function(){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&y(t,e)}(r,i());var t,e,n,o=h(r);function r(t,e){var n;return function(t){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this),(n=o.call(this)).resolveOptions(e),n.listenClick(t),n}return t=r,n=[{key:"copy",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body};return f(t,e)}},{key:"cut",value:function(t){return a(t)}},{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(e=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===p(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=u()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,n=this.action(e)||"copy",t=s({action:n,container:this.container,target:this.target(e),text:this.text(e)});this.emit(t?"success":"error",{action:n,text:t,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return m("action",t)}},{key:"defaultTarget",value:function(t){t=m("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return m("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}])&&d(t.prototype,e),n&&d(t,n),r}()},828:function(t){var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var u=n(828);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=u(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},879:function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var f=n(879),l=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!f.string(e))throw new TypeError("Second argument must be a String");if(!f.fn(n))throw new TypeError("Third argument must be a Function");if(f.node(t))return c=e,a=n,(u=t).addEventListener(c,a),{destroy:function(){u.removeEventListener(c,a)}};if(f.nodeList(t))return o=t,r=e,i=n,Array.prototype.forEach.call(o,function(t){t.addEventListener(r,i)}),{destroy:function(){Array.prototype.forEach.call(o,function(t){t.removeEventListener(r,i)})}};if(f.string(t))return t=t,e=e,n=n,l(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,u,c,a}},817:function(t){t.exports=function(t){var e,n="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focus(),n=window.getSelection(),(e=document.createRange()).selectNodeContents(t),n.removeAllRanges(),n.addRange(e),n.toString());return n}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,u=o.length;i<u;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},r={},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o(686).default;function o(t){if(r[t])return r[t].exports;var e=r[t]={exports:{}};return n[t](e,e.exports,o),e.exports}var n,r});
\ No newline at end of file diff --git a/docs/dev/deps/data-deps.txt b/docs/dev/deps/data-deps.txt new file mode 100644 index 00000000..ca4dfd9c --- /dev/null +++ b/docs/dev/deps/data-deps.txt @@ -0,0 +1,13 @@ +<script src="deps/jquery-3.6.0/jquery-3.6.0.min.js"></script> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> +<link href="deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet" /> +<script src="deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script> +<link href="deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet" /> +<link href="deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet" /> +<script src="deps/headroom-0.11.0/headroom.min.js"></script> +<script src="deps/headroom-0.11.0/jQuery.headroom.min.js"></script> +<script src="deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script> +<script src="deps/clipboard.js-2.0.11/clipboard.min.js"></script> +<script src="deps/search-1.0.0/autocomplete.jquery.min.js"></script> +<script src="deps/search-1.0.0/fuse.min.js"></script> +<script src="deps/search-1.0.0/mark.min.js"></script> diff --git a/docs/dev/deps/font-awesome-6.5.2/css/all.css b/docs/dev/deps/font-awesome-6.5.2/css/all.css new file mode 100644 index 00000000..151dd57c --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/css/all.css @@ -0,0 +1,8028 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fa-classic, +.fa-sharp, +.fas, +.fa-solid, +.far, +.fa-regular, +.fab, +.fa-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fas, +.fa-classic, +.fa-solid, +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + -webkit-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, 0)); + transform: rotate(var(--fa-rotate-angle, 0)); } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: var(--fa-inverse, #fff); } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ + +.fa-0::before { + content: "\30"; } + +.fa-1::before { + content: "\31"; } + +.fa-2::before { + content: "\32"; } + +.fa-3::before { + content: "\33"; } + +.fa-4::before { + content: "\34"; } + +.fa-5::before { + content: "\35"; } + +.fa-6::before { + content: "\36"; } + +.fa-7::before { + content: "\37"; } + +.fa-8::before { + content: "\38"; } + +.fa-9::before { + content: "\39"; } + +.fa-fill-drip::before { + content: "\f576"; } + +.fa-arrows-to-circle::before { + content: "\e4bd"; } + +.fa-circle-chevron-right::before { + content: "\f138"; } + +.fa-chevron-circle-right::before { + content: "\f138"; } + +.fa-at::before { + content: "\40"; } + +.fa-trash-can::before { + content: "\f2ed"; } + +.fa-trash-alt::before { + content: "\f2ed"; } + +.fa-text-height::before { + content: "\f034"; } + +.fa-user-xmark::before { + content: "\f235"; } + +.fa-user-times::before { + content: "\f235"; } + +.fa-stethoscope::before { + content: "\f0f1"; } + +.fa-message::before { + content: "\f27a"; } + +.fa-comment-alt::before { + content: "\f27a"; } + +.fa-info::before { + content: "\f129"; } + +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } + +.fa-compress-alt::before { + content: "\f422"; } + +.fa-explosion::before { + content: "\e4e9"; } + +.fa-file-lines::before { + content: "\f15c"; } + +.fa-file-alt::before { + content: "\f15c"; } + +.fa-file-text::before { + content: "\f15c"; } + +.fa-wave-square::before { + content: "\f83e"; } + +.fa-ring::before { + content: "\f70b"; } + +.fa-building-un::before { + content: "\e4d9"; } + +.fa-dice-three::before { + content: "\f527"; } + +.fa-calendar-days::before { + content: "\f073"; } + +.fa-calendar-alt::before { + content: "\f073"; } + +.fa-anchor-circle-check::before { + content: "\e4aa"; } + +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } + +.fa-volleyball::before { + content: "\f45f"; } + +.fa-volleyball-ball::before { + content: "\f45f"; } + +.fa-arrows-up-to-line::before { + content: "\e4c2"; } + +.fa-sort-down::before { + content: "\f0dd"; } + +.fa-sort-desc::before { + content: "\f0dd"; } + +.fa-circle-minus::before { + content: "\f056"; } + +.fa-minus-circle::before { + content: "\f056"; } + +.fa-door-open::before { + content: "\f52b"; } + +.fa-right-from-bracket::before { + content: "\f2f5"; } + +.fa-sign-out-alt::before { + content: "\f2f5"; } + +.fa-atom::before { + content: "\f5d2"; } + +.fa-soap::before { + content: "\e06e"; } + +.fa-icons::before { + content: "\f86d"; } + +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } + +.fa-microphone-lines-slash::before { + content: "\f539"; } + +.fa-microphone-alt-slash::before { + content: "\f539"; } + +.fa-bridge-circle-check::before { + content: "\e4c9"; } + +.fa-pump-medical::before { + content: "\e06a"; } + +.fa-fingerprint::before { + content: "\f577"; } + +.fa-hand-point-right::before { + content: "\f0a4"; } + +.fa-magnifying-glass-location::before { + content: "\f689"; } + +.fa-search-location::before { + content: "\f689"; } + +.fa-forward-step::before { + content: "\f051"; } + +.fa-step-forward::before { + content: "\f051"; } + +.fa-face-smile-beam::before { + content: "\f5b8"; } + +.fa-smile-beam::before { + content: "\f5b8"; } + +.fa-flag-checkered::before { + content: "\f11e"; } + +.fa-football::before { + content: "\f44e"; } + +.fa-football-ball::before { + content: "\f44e"; } + +.fa-school-circle-exclamation::before { + content: "\e56c"; } + +.fa-crop::before { + content: "\f125"; } + +.fa-angles-down::before { + content: "\f103"; } + +.fa-angle-double-down::before { + content: "\f103"; } + +.fa-users-rectangle::before { + content: "\e594"; } + +.fa-people-roof::before { + content: "\e537"; } + +.fa-people-line::before { + content: "\e534"; } + +.fa-beer-mug-empty::before { + content: "\f0fc"; } + +.fa-beer::before { + content: "\f0fc"; } + +.fa-diagram-predecessor::before { + content: "\e477"; } + +.fa-arrow-up-long::before { + content: "\f176"; } + +.fa-long-arrow-up::before { + content: "\f176"; } + +.fa-fire-flame-simple::before { + content: "\f46a"; } + +.fa-burn::before { + content: "\f46a"; } + +.fa-person::before { + content: "\f183"; } + +.fa-male::before { + content: "\f183"; } + +.fa-laptop::before { + content: "\f109"; } + +.fa-file-csv::before { + content: "\f6dd"; } + +.fa-menorah::before { + content: "\f676"; } + +.fa-truck-plane::before { + content: "\e58f"; } + +.fa-record-vinyl::before { + content: "\f8d9"; } + +.fa-face-grin-stars::before { + content: "\f587"; } + +.fa-grin-stars::before { + content: "\f587"; } + +.fa-bong::before { + content: "\f55c"; } + +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } + +.fa-pastafarianism::before { + content: "\f67b"; } + +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } + +.fa-spoon::before { + content: "\f2e5"; } + +.fa-utensil-spoon::before { + content: "\f2e5"; } + +.fa-jar-wheat::before { + content: "\e517"; } + +.fa-envelopes-bulk::before { + content: "\f674"; } + +.fa-mail-bulk::before { + content: "\f674"; } + +.fa-file-circle-exclamation::before { + content: "\e4eb"; } + +.fa-circle-h::before { + content: "\f47e"; } + +.fa-hospital-symbol::before { + content: "\f47e"; } + +.fa-pager::before { + content: "\f815"; } + +.fa-address-book::before { + content: "\f2b9"; } + +.fa-contact-book::before { + content: "\f2b9"; } + +.fa-strikethrough::before { + content: "\f0cc"; } + +.fa-k::before { + content: "\4b"; } + +.fa-landmark-flag::before { + content: "\e51c"; } + +.fa-pencil::before { + content: "\f303"; } + +.fa-pencil-alt::before { + content: "\f303"; } + +.fa-backward::before { + content: "\f04a"; } + +.fa-caret-right::before { + content: "\f0da"; } + +.fa-comments::before { + content: "\f086"; } + +.fa-paste::before { + content: "\f0ea"; } + +.fa-file-clipboard::before { + content: "\f0ea"; } + +.fa-code-pull-request::before { + content: "\e13c"; } + +.fa-clipboard-list::before { + content: "\f46d"; } + +.fa-truck-ramp-box::before { + content: "\f4de"; } + +.fa-truck-loading::before { + content: "\f4de"; } + +.fa-user-check::before { + content: "\f4fc"; } + +.fa-vial-virus::before { + content: "\e597"; } + +.fa-sheet-plastic::before { + content: "\e571"; } + +.fa-blog::before { + content: "\f781"; } + +.fa-user-ninja::before { + content: "\f504"; } + +.fa-person-arrow-up-from-line::before { + content: "\e539"; } + +.fa-scroll-torah::before { + content: "\f6a0"; } + +.fa-torah::before { + content: "\f6a0"; } + +.fa-broom-ball::before { + content: "\f458"; } + +.fa-quidditch::before { + content: "\f458"; } + +.fa-quidditch-broom-ball::before { + content: "\f458"; } + +.fa-toggle-off::before { + content: "\f204"; } + +.fa-box-archive::before { + content: "\f187"; } + +.fa-archive::before { + content: "\f187"; } + +.fa-person-drowning::before { + content: "\e545"; } + +.fa-arrow-down-9-1::before { + content: "\f886"; } + +.fa-sort-numeric-desc::before { + content: "\f886"; } + +.fa-sort-numeric-down-alt::before { + content: "\f886"; } + +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-grin-tongue-squint::before { + content: "\f58a"; } + +.fa-spray-can::before { + content: "\f5bd"; } + +.fa-truck-monster::before { + content: "\f63b"; } + +.fa-w::before { + content: "\57"; } + +.fa-earth-africa::before { + content: "\f57c"; } + +.fa-globe-africa::before { + content: "\f57c"; } + +.fa-rainbow::before { + content: "\f75b"; } + +.fa-circle-notch::before { + content: "\f1ce"; } + +.fa-tablet-screen-button::before { + content: "\f3fa"; } + +.fa-tablet-alt::before { + content: "\f3fa"; } + +.fa-paw::before { + content: "\f1b0"; } + +.fa-cloud::before { + content: "\f0c2"; } + +.fa-trowel-bricks::before { + content: "\e58a"; } + +.fa-face-flushed::before { + content: "\f579"; } + +.fa-flushed::before { + content: "\f579"; } + +.fa-hospital-user::before { + content: "\f80d"; } + +.fa-tent-arrow-left-right::before { + content: "\e57f"; } + +.fa-gavel::before { + content: "\f0e3"; } + +.fa-legal::before { + content: "\f0e3"; } + +.fa-binoculars::before { + content: "\f1e5"; } + +.fa-microphone-slash::before { + content: "\f131"; } + +.fa-box-tissue::before { + content: "\e05b"; } + +.fa-motorcycle::before { + content: "\f21c"; } + +.fa-bell-concierge::before { + content: "\f562"; } + +.fa-concierge-bell::before { + content: "\f562"; } + +.fa-pen-ruler::before { + content: "\f5ae"; } + +.fa-pencil-ruler::before { + content: "\f5ae"; } + +.fa-people-arrows::before { + content: "\e068"; } + +.fa-people-arrows-left-right::before { + content: "\e068"; } + +.fa-mars-and-venus-burst::before { + content: "\e523"; } + +.fa-square-caret-right::before { + content: "\f152"; } + +.fa-caret-square-right::before { + content: "\f152"; } + +.fa-scissors::before { + content: "\f0c4"; } + +.fa-cut::before { + content: "\f0c4"; } + +.fa-sun-plant-wilt::before { + content: "\e57a"; } + +.fa-toilets-portable::before { + content: "\e584"; } + +.fa-hockey-puck::before { + content: "\f453"; } + +.fa-table::before { + content: "\f0ce"; } + +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } + +.fa-tachograph-digital::before { + content: "\f566"; } + +.fa-digital-tachograph::before { + content: "\f566"; } + +.fa-users-slash::before { + content: "\e073"; } + +.fa-clover::before { + content: "\e139"; } + +.fa-reply::before { + content: "\f3e5"; } + +.fa-mail-reply::before { + content: "\f3e5"; } + +.fa-star-and-crescent::before { + content: "\f699"; } + +.fa-house-fire::before { + content: "\e50c"; } + +.fa-square-minus::before { + content: "\f146"; } + +.fa-minus-square::before { + content: "\f146"; } + +.fa-helicopter::before { + content: "\f533"; } + +.fa-compass::before { + content: "\f14e"; } + +.fa-square-caret-down::before { + content: "\f150"; } + +.fa-caret-square-down::before { + content: "\f150"; } + +.fa-file-circle-question::before { + content: "\e4ef"; } + +.fa-laptop-code::before { + content: "\f5fc"; } + +.fa-swatchbook::before { + content: "\f5c3"; } + +.fa-prescription-bottle::before { + content: "\f485"; } + +.fa-bars::before { + content: "\f0c9"; } + +.fa-navicon::before { + content: "\f0c9"; } + +.fa-people-group::before { + content: "\e533"; } + +.fa-hourglass-end::before { + content: "\f253"; } + +.fa-hourglass-3::before { + content: "\f253"; } + +.fa-heart-crack::before { + content: "\f7a9"; } + +.fa-heart-broken::before { + content: "\f7a9"; } + +.fa-square-up-right::before { + content: "\f360"; } + +.fa-external-link-square-alt::before { + content: "\f360"; } + +.fa-face-kiss-beam::before { + content: "\f597"; } + +.fa-kiss-beam::before { + content: "\f597"; } + +.fa-film::before { + content: "\f008"; } + +.fa-ruler-horizontal::before { + content: "\f547"; } + +.fa-people-robbery::before { + content: "\e536"; } + +.fa-lightbulb::before { + content: "\f0eb"; } + +.fa-caret-left::before { + content: "\f0d9"; } + +.fa-circle-exclamation::before { + content: "\f06a"; } + +.fa-exclamation-circle::before { + content: "\f06a"; } + +.fa-school-circle-xmark::before { + content: "\e56d"; } + +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } + +.fa-sign-out::before { + content: "\f08b"; } + +.fa-circle-chevron-down::before { + content: "\f13a"; } + +.fa-chevron-circle-down::before { + content: "\f13a"; } + +.fa-unlock-keyhole::before { + content: "\f13e"; } + +.fa-unlock-alt::before { + content: "\f13e"; } + +.fa-cloud-showers-heavy::before { + content: "\f740"; } + +.fa-headphones-simple::before { + content: "\f58f"; } + +.fa-headphones-alt::before { + content: "\f58f"; } + +.fa-sitemap::before { + content: "\f0e8"; } + +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } + +.fa-donate::before { + content: "\f4b9"; } + +.fa-memory::before { + content: "\f538"; } + +.fa-road-spikes::before { + content: "\e568"; } + +.fa-fire-burner::before { + content: "\e4f1"; } + +.fa-flag::before { + content: "\f024"; } + +.fa-hanukiah::before { + content: "\f6e6"; } + +.fa-feather::before { + content: "\f52d"; } + +.fa-volume-low::before { + content: "\f027"; } + +.fa-volume-down::before { + content: "\f027"; } + +.fa-comment-slash::before { + content: "\f4b3"; } + +.fa-cloud-sun-rain::before { + content: "\f743"; } + +.fa-compress::before { + content: "\f066"; } + +.fa-wheat-awn::before { + content: "\e2cd"; } + +.fa-wheat-alt::before { + content: "\e2cd"; } + +.fa-ankh::before { + content: "\f644"; } + +.fa-hands-holding-child::before { + content: "\e4fa"; } + +.fa-asterisk::before { + content: "\2a"; } + +.fa-square-check::before { + content: "\f14a"; } + +.fa-check-square::before { + content: "\f14a"; } + +.fa-peseta-sign::before { + content: "\e221"; } + +.fa-heading::before { + content: "\f1dc"; } + +.fa-header::before { + content: "\f1dc"; } + +.fa-ghost::before { + content: "\f6e2"; } + +.fa-list::before { + content: "\f03a"; } + +.fa-list-squares::before { + content: "\f03a"; } + +.fa-square-phone-flip::before { + content: "\f87b"; } + +.fa-phone-square-alt::before { + content: "\f87b"; } + +.fa-cart-plus::before { + content: "\f217"; } + +.fa-gamepad::before { + content: "\f11b"; } + +.fa-circle-dot::before { + content: "\f192"; } + +.fa-dot-circle::before { + content: "\f192"; } + +.fa-face-dizzy::before { + content: "\f567"; } + +.fa-dizzy::before { + content: "\f567"; } + +.fa-egg::before { + content: "\f7fb"; } + +.fa-house-medical-circle-xmark::before { + content: "\e513"; } + +.fa-campground::before { + content: "\f6bb"; } + +.fa-folder-plus::before { + content: "\f65e"; } + +.fa-futbol::before { + content: "\f1e3"; } + +.fa-futbol-ball::before { + content: "\f1e3"; } + +.fa-soccer-ball::before { + content: "\f1e3"; } + +.fa-paintbrush::before { + content: "\f1fc"; } + +.fa-paint-brush::before { + content: "\f1fc"; } + +.fa-lock::before { + content: "\f023"; } + +.fa-gas-pump::before { + content: "\f52f"; } + +.fa-hot-tub-person::before { + content: "\f593"; } + +.fa-hot-tub::before { + content: "\f593"; } + +.fa-map-location::before { + content: "\f59f"; } + +.fa-map-marked::before { + content: "\f59f"; } + +.fa-house-flood-water::before { + content: "\e50e"; } + +.fa-tree::before { + content: "\f1bb"; } + +.fa-bridge-lock::before { + content: "\e4cc"; } + +.fa-sack-dollar::before { + content: "\f81d"; } + +.fa-pen-to-square::before { + content: "\f044"; } + +.fa-edit::before { + content: "\f044"; } + +.fa-car-side::before { + content: "\f5e4"; } + +.fa-share-nodes::before { + content: "\f1e0"; } + +.fa-share-alt::before { + content: "\f1e0"; } + +.fa-heart-circle-minus::before { + content: "\e4ff"; } + +.fa-hourglass-half::before { + content: "\f252"; } + +.fa-hourglass-2::before { + content: "\f252"; } + +.fa-microscope::before { + content: "\f610"; } + +.fa-sink::before { + content: "\e06d"; } + +.fa-bag-shopping::before { + content: "\f290"; } + +.fa-shopping-bag::before { + content: "\f290"; } + +.fa-arrow-down-z-a::before { + content: "\f881"; } + +.fa-sort-alpha-desc::before { + content: "\f881"; } + +.fa-sort-alpha-down-alt::before { + content: "\f881"; } + +.fa-mitten::before { + content: "\f7b5"; } + +.fa-person-rays::before { + content: "\e54d"; } + +.fa-users::before { + content: "\f0c0"; } + +.fa-eye-slash::before { + content: "\f070"; } + +.fa-flask-vial::before { + content: "\e4f3"; } + +.fa-hand::before { + content: "\f256"; } + +.fa-hand-paper::before { + content: "\f256"; } + +.fa-om::before { + content: "\f679"; } + +.fa-worm::before { + content: "\e599"; } + +.fa-house-circle-xmark::before { + content: "\e50b"; } + +.fa-plug::before { + content: "\f1e6"; } + +.fa-chevron-up::before { + content: "\f077"; } + +.fa-hand-spock::before { + content: "\f259"; } + +.fa-stopwatch::before { + content: "\f2f2"; } + +.fa-face-kiss::before { + content: "\f596"; } + +.fa-kiss::before { + content: "\f596"; } + +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } + +.fa-face-grin-tongue::before { + content: "\f589"; } + +.fa-grin-tongue::before { + content: "\f589"; } + +.fa-chess-bishop::before { + content: "\f43a"; } + +.fa-face-grin-wink::before { + content: "\f58c"; } + +.fa-grin-wink::before { + content: "\f58c"; } + +.fa-ear-deaf::before { + content: "\f2a4"; } + +.fa-deaf::before { + content: "\f2a4"; } + +.fa-deafness::before { + content: "\f2a4"; } + +.fa-hard-of-hearing::before { + content: "\f2a4"; } + +.fa-road-circle-check::before { + content: "\e564"; } + +.fa-dice-five::before { + content: "\f523"; } + +.fa-square-rss::before { + content: "\f143"; } + +.fa-rss-square::before { + content: "\f143"; } + +.fa-land-mine-on::before { + content: "\e51b"; } + +.fa-i-cursor::before { + content: "\f246"; } + +.fa-stamp::before { + content: "\f5bf"; } + +.fa-stairs::before { + content: "\e289"; } + +.fa-i::before { + content: "\49"; } + +.fa-hryvnia-sign::before { + content: "\f6f2"; } + +.fa-hryvnia::before { + content: "\f6f2"; } + +.fa-pills::before { + content: "\f484"; } + +.fa-face-grin-wide::before { + content: "\f581"; } + +.fa-grin-alt::before { + content: "\f581"; } + +.fa-tooth::before { + content: "\f5c9"; } + +.fa-v::before { + content: "\56"; } + +.fa-bangladeshi-taka-sign::before { + content: "\e2e6"; } + +.fa-bicycle::before { + content: "\f206"; } + +.fa-staff-snake::before { + content: "\e579"; } + +.fa-rod-asclepius::before { + content: "\e579"; } + +.fa-rod-snake::before { + content: "\e579"; } + +.fa-staff-aesculapius::before { + content: "\e579"; } + +.fa-head-side-cough-slash::before { + content: "\e062"; } + +.fa-truck-medical::before { + content: "\f0f9"; } + +.fa-ambulance::before { + content: "\f0f9"; } + +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } + +.fa-snowman::before { + content: "\f7d0"; } + +.fa-mortar-pestle::before { + content: "\f5a7"; } + +.fa-road-barrier::before { + content: "\e562"; } + +.fa-school::before { + content: "\f549"; } + +.fa-igloo::before { + content: "\f7ae"; } + +.fa-joint::before { + content: "\f595"; } + +.fa-angle-right::before { + content: "\f105"; } + +.fa-horse::before { + content: "\f6f0"; } + +.fa-q::before { + content: "\51"; } + +.fa-g::before { + content: "\47"; } + +.fa-notes-medical::before { + content: "\f481"; } + +.fa-temperature-half::before { + content: "\f2c9"; } + +.fa-temperature-2::before { + content: "\f2c9"; } + +.fa-thermometer-2::before { + content: "\f2c9"; } + +.fa-thermometer-half::before { + content: "\f2c9"; } + +.fa-dong-sign::before { + content: "\e169"; } + +.fa-capsules::before { + content: "\f46b"; } + +.fa-poo-storm::before { + content: "\f75a"; } + +.fa-poo-bolt::before { + content: "\f75a"; } + +.fa-face-frown-open::before { + content: "\f57a"; } + +.fa-frown-open::before { + content: "\f57a"; } + +.fa-hand-point-up::before { + content: "\f0a6"; } + +.fa-money-bill::before { + content: "\f0d6"; } + +.fa-bookmark::before { + content: "\f02e"; } + +.fa-align-justify::before { + content: "\f039"; } + +.fa-umbrella-beach::before { + content: "\f5ca"; } + +.fa-helmet-un::before { + content: "\e503"; } + +.fa-bullseye::before { + content: "\f140"; } + +.fa-bacon::before { + content: "\f7e5"; } + +.fa-hand-point-down::before { + content: "\f0a7"; } + +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } + +.fa-folder::before { + content: "\f07b"; } + +.fa-folder-blank::before { + content: "\f07b"; } + +.fa-file-waveform::before { + content: "\f478"; } + +.fa-file-medical-alt::before { + content: "\f478"; } + +.fa-radiation::before { + content: "\f7b9"; } + +.fa-chart-simple::before { + content: "\e473"; } + +.fa-mars-stroke::before { + content: "\f229"; } + +.fa-vial::before { + content: "\f492"; } + +.fa-gauge::before { + content: "\f624"; } + +.fa-dashboard::before { + content: "\f624"; } + +.fa-gauge-med::before { + content: "\f624"; } + +.fa-tachometer-alt-average::before { + content: "\f624"; } + +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } + +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } + +.fa-e::before { + content: "\45"; } + +.fa-pen-clip::before { + content: "\f305"; } + +.fa-pen-alt::before { + content: "\f305"; } + +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } + +.fa-user::before { + content: "\f007"; } + +.fa-school-circle-check::before { + content: "\e56b"; } + +.fa-dumpster::before { + content: "\f793"; } + +.fa-van-shuttle::before { + content: "\f5b6"; } + +.fa-shuttle-van::before { + content: "\f5b6"; } + +.fa-building-user::before { + content: "\e4da"; } + +.fa-square-caret-left::before { + content: "\f191"; } + +.fa-caret-square-left::before { + content: "\f191"; } + +.fa-highlighter::before { + content: "\f591"; } + +.fa-key::before { + content: "\f084"; } + +.fa-bullhorn::before { + content: "\f0a1"; } + +.fa-globe::before { + content: "\f0ac"; } + +.fa-synagogue::before { + content: "\f69b"; } + +.fa-person-half-dress::before { + content: "\e548"; } + +.fa-road-bridge::before { + content: "\e563"; } + +.fa-location-arrow::before { + content: "\f124"; } + +.fa-c::before { + content: "\43"; } + +.fa-tablet-button::before { + content: "\f10a"; } + +.fa-building-lock::before { + content: "\e4d6"; } + +.fa-pizza-slice::before { + content: "\f818"; } + +.fa-money-bill-wave::before { + content: "\f53a"; } + +.fa-chart-area::before { + content: "\f1fe"; } + +.fa-area-chart::before { + content: "\f1fe"; } + +.fa-house-flag::before { + content: "\e50d"; } + +.fa-person-circle-minus::before { + content: "\e540"; } + +.fa-ban::before { + content: "\f05e"; } + +.fa-cancel::before { + content: "\f05e"; } + +.fa-camera-rotate::before { + content: "\e0d8"; } + +.fa-spray-can-sparkles::before { + content: "\f5d0"; } + +.fa-air-freshener::before { + content: "\f5d0"; } + +.fa-star::before { + content: "\f005"; } + +.fa-repeat::before { + content: "\f363"; } + +.fa-cross::before { + content: "\f654"; } + +.fa-box::before { + content: "\f466"; } + +.fa-venus-mars::before { + content: "\f228"; } + +.fa-arrow-pointer::before { + content: "\f245"; } + +.fa-mouse-pointer::before { + content: "\f245"; } + +.fa-maximize::before { + content: "\f31e"; } + +.fa-expand-arrows-alt::before { + content: "\f31e"; } + +.fa-charging-station::before { + content: "\f5e7"; } + +.fa-shapes::before { + content: "\f61f"; } + +.fa-triangle-circle-square::before { + content: "\f61f"; } + +.fa-shuffle::before { + content: "\f074"; } + +.fa-random::before { + content: "\f074"; } + +.fa-person-running::before { + content: "\f70c"; } + +.fa-running::before { + content: "\f70c"; } + +.fa-mobile-retro::before { + content: "\e527"; } + +.fa-grip-lines-vertical::before { + content: "\f7a5"; } + +.fa-spider::before { + content: "\f717"; } + +.fa-hands-bound::before { + content: "\e4f9"; } + +.fa-file-invoice-dollar::before { + content: "\f571"; } + +.fa-plane-circle-exclamation::before { + content: "\e556"; } + +.fa-x-ray::before { + content: "\f497"; } + +.fa-spell-check::before { + content: "\f891"; } + +.fa-slash::before { + content: "\f715"; } + +.fa-computer-mouse::before { + content: "\f8cc"; } + +.fa-mouse::before { + content: "\f8cc"; } + +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-server::before { + content: "\f233"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-table-cells-column-lock::before { + content: "\e678"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-z::before { + content: "\5a"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-f::before { + content: "\46"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-road::before { + content: "\f018"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-h::before { + content: "\48"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-j::before { + content: "\4a"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-water::before { + content: "\f773"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-u::before { + content: "\55"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-s::before { + content: "\53"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-images::before { + content: "\f302"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-n::before { + content: "\4e"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-download::before { + content: "\f019"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-b::before { + content: "\42"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-table-cells-row-lock::before { + content: "\e67a"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-child-combatant::before { + content: "\e4e0"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-notdef::before { + content: "\e1fe"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-display::before { + content: "\e163"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-music::before { + content: "\f001"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-t::before { + content: "\54"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-d::before { + content: "\44"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-pixiv:before { + content: "\e640"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-jxl:before { + content: "\e67b"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-brave:before { + content: "\e63c"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-threads:before { + content: "\e618"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-opensuse:before { + content: "\e62b"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-node:before { + content: "\f419"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-debian:before { + content: "\e60b"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-square-kickstarter:before { + content: "\f3bb"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-square-letterboxd:before { + content: "\e62e"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-shoelace:before { + content: "\e60c"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-square-threads:before { + content: "\e619"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-google-scholar:before { + content: "\e63b"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-signal-messenger:before { + content: "\e663"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-mintbit:before { + content: "\e62f"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-brave-reverse:before { + content: "\e63d"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-web-awesome:before { + content: "\e682"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-letterboxd:before { + content: "\e62d"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-x-twitter:before { + content: "\e61b"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-square-web-awesome-stroke:before { + content: "\e684"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-upwork:before { + content: "\e641"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-square-upwork:before { + content: "\e67c"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-square-web-awesome:before { + content: "\e683"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-bluesky:before { + content: "\e671"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-webflow:before { + content: "\e65c"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-php:before { + content: "\f457"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-stubber:before { + content: "\e5c7"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-odysee:before { + content: "\e5c6"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-square-x-twitter:before { + content: "\e61a"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-display: block; + font-weight: 900; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-display: block; + font-weight: 400; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype"); } diff --git a/docs/dev/deps/font-awesome-6.5.2/css/all.min.css b/docs/dev/deps/font-awesome-6.5.2/css/all.min.css new file mode 100644 index 00000000..269bceea --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/css/all.min.css @@ -0,0 +1,9 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,0));transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} + +.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-fill-drip:before{content:"\f576"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-at:before{content:"\40"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-text-height:before{content:"\f034"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-stethoscope:before{content:"\f0f1"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-info:before{content:"\f129"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-explosion:before{content:"\e4e9"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-wave-square:before{content:"\f83e"}.fa-ring:before{content:"\f70b"}.fa-building-un:before{content:"\e4d9"}.fa-dice-three:before{content:"\f527"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-door-open:before{content:"\f52b"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-atom:before{content:"\f5d2"}.fa-soap:before{content:"\e06e"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-pump-medical:before{content:"\e06a"}.fa-fingerprint:before{content:"\f577"}.fa-hand-point-right:before{content:"\f0a4"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-flag-checkered:before{content:"\f11e"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-crop:before{content:"\f125"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-users-rectangle:before{content:"\e594"}.fa-people-roof:before{content:"\e537"}.fa-people-line:before{content:"\e534"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-diagram-predecessor:before{content:"\e477"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-laptop:before{content:"\f109"}.fa-file-csv:before{content:"\f6dd"}.fa-menorah:before{content:"\f676"}.fa-truck-plane:before{content:"\e58f"}.fa-record-vinyl:before{content:"\f8d9"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-bong:before{content:"\f55c"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-jar-wheat:before{content:"\e517"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-pager:before{content:"\f815"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-strikethrough:before{content:"\f0cc"}.fa-k:before{content:"\4b"}.fa-landmark-flag:before{content:"\e51c"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-backward:before{content:"\f04a"}.fa-caret-right:before{content:"\f0da"}.fa-comments:before{content:"\f086"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-code-pull-request:before{content:"\e13c"}.fa-clipboard-list:before{content:"\f46d"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-user-check:before{content:"\f4fc"}.fa-vial-virus:before{content:"\e597"}.fa-sheet-plastic:before{content:"\e571"}.fa-blog:before{content:"\f781"}.fa-user-ninja:before{content:"\f504"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-toggle-off:before{content:"\f204"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-person-drowning:before{content:"\e545"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-spray-can:before{content:"\f5bd"}.fa-truck-monster:before{content:"\f63b"}.fa-w:before{content:"\57"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-rainbow:before{content:"\f75b"}.fa-circle-notch:before{content:"\f1ce"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-paw:before{content:"\f1b0"}.fa-cloud:before{content:"\f0c2"}.fa-trowel-bricks:before{content:"\e58a"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-hospital-user:before{content:"\f80d"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-binoculars:before{content:"\f1e5"}.fa-microphone-slash:before{content:"\f131"}.fa-box-tissue:before{content:"\e05b"}.fa-motorcycle:before{content:"\f21c"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-toilets-portable:before{content:"\e584"}.fa-hockey-puck:before{content:"\f453"}.fa-table:before{content:"\f0ce"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-users-slash:before{content:"\e073"}.fa-clover:before{content:"\e139"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-star-and-crescent:before{content:"\f699"}.fa-house-fire:before{content:"\e50c"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-helicopter:before{content:"\f533"}.fa-compass:before{content:"\f14e"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-file-circle-question:before{content:"\e4ef"}.fa-laptop-code:before{content:"\f5fc"}.fa-swatchbook:before{content:"\f5c3"}.fa-prescription-bottle:before{content:"\f485"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-people-group:before{content:"\e533"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-film:before{content:"\f008"}.fa-ruler-horizontal:before{content:"\f547"}.fa-people-robbery:before{content:"\e536"}.fa-lightbulb:before{content:"\f0eb"}.fa-caret-left:before{content:"\f0d9"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-sitemap:before{content:"\f0e8"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-memory:before{content:"\f538"}.fa-road-spikes:before{content:"\e568"}.fa-fire-burner:before{content:"\e4f1"}.fa-flag:before{content:"\f024"}.fa-hanukiah:before{content:"\f6e6"}.fa-feather:before{content:"\f52d"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-comment-slash:before{content:"\f4b3"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-compress:before{content:"\f066"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-ankh:before{content:"\f644"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-asterisk:before{content:"\2a"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-peseta-sign:before{content:"\e221"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-ghost:before{content:"\f6e2"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-cart-plus:before{content:"\f217"}.fa-gamepad:before{content:"\f11b"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-egg:before{content:"\f7fb"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-campground:before{content:"\f6bb"}.fa-folder-plus:before{content:"\f65e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-lock:before{content:"\f023"}.fa-gas-pump:before{content:"\f52f"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-house-flood-water:before{content:"\e50e"}.fa-tree:before{content:"\f1bb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-sack-dollar:before{content:"\f81d"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-car-side:before{content:"\f5e4"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-microscope:before{content:"\f610"}.fa-sink:before{content:"\e06d"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-mitten:before{content:"\f7b5"}.fa-person-rays:before{content:"\e54d"}.fa-users:before{content:"\f0c0"}.fa-eye-slash:before{content:"\f070"}.fa-flask-vial:before{content:"\e4f3"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-om:before{content:"\f679"}.fa-worm:before{content:"\e599"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-plug:before{content:"\f1e6"}.fa-chevron-up:before{content:"\f077"}.fa-hand-spock:before{content:"\f259"}.fa-stopwatch:before{content:"\f2f2"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-chess-bishop:before{content:"\f43a"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-road-circle-check:before{content:"\e564"}.fa-dice-five:before{content:"\f523"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-land-mine-on:before{content:"\e51b"}.fa-i-cursor:before{content:"\f246"}.fa-stamp:before{content:"\f5bf"}.fa-stairs:before{content:"\e289"}.fa-i:before{content:"\49"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-pills:before{content:"\f484"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-tooth:before{content:"\f5c9"}.fa-v:before{content:"\56"}.fa-bangladeshi-taka-sign:before{content:"\e2e6"}.fa-bicycle:before{content:"\f206"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-snowman:before{content:"\f7d0"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-road-barrier:before{content:"\e562"}.fa-school:before{content:"\f549"}.fa-igloo:before{content:"\f7ae"}.fa-joint:before{content:"\f595"}.fa-angle-right:before{content:"\f105"}.fa-horse:before{content:"\f6f0"}.fa-q:before{content:"\51"}.fa-g:before{content:"\47"}.fa-notes-medical:before{content:"\f481"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-dong-sign:before{content:"\e169"}.fa-capsules:before{content:"\f46b"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-hand-point-up:before{content:"\f0a6"}.fa-money-bill:before{content:"\f0d6"}.fa-bookmark:before{content:"\f02e"}.fa-align-justify:before{content:"\f039"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-helmet-un:before{content:"\e503"}.fa-bullseye:before{content:"\f140"}.fa-bacon:before{content:"\f7e5"}.fa-hand-point-down:before{content:"\f0a7"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-radiation:before{content:"\f7b9"}.fa-chart-simple:before{content:"\e473"}.fa-mars-stroke:before{content:"\f229"}.fa-vial:before{content:"\f492"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-e:before{content:"\45"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-user:before{content:"\f007"}.fa-school-circle-check:before{content:"\e56b"}.fa-dumpster:before{content:"\f793"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-building-user:before{content:"\e4da"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-highlighter:before{content:"\f591"}.fa-key:before{content:"\f084"}.fa-bullhorn:before{content:"\f0a1"}.fa-globe:before{content:"\f0ac"}.fa-synagogue:before{content:"\f69b"}.fa-person-half-dress:before{content:"\e548"}.fa-road-bridge:before{content:"\e563"}.fa-location-arrow:before{content:"\f124"}.fa-c:before{content:"\43"}.fa-tablet-button:before{content:"\f10a"}.fa-building-lock:before{content:"\e4d6"}.fa-pizza-slice:before{content:"\f818"}.fa-money-bill-wave:before{content:"\f53a"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-house-flag:before{content:"\e50d"}.fa-person-circle-minus:before{content:"\e540"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-camera-rotate:before{content:"\e0d8"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-star:before{content:"\f005"}.fa-repeat:before{content:"\f363"}.fa-cross:before{content:"\f654"}.fa-box:before{content:"\f466"}.fa-venus-mars:before{content:"\f228"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-charging-station:before{content:"\f5e7"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-mobile-retro:before{content:"\e527"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-spider:before{content:"\f717"}.fa-hands-bound:before{content:"\e4f9"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-x-ray:before{content:"\f497"}.fa-spell-check:before{content:"\f891"}.fa-slash:before{content:"\f715"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-server:before{content:"\f233"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-shop-lock:before{content:"\e4a5"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-blender-phone:before{content:"\f6b6"}.fa-building-wheat:before{content:"\e4db"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-venus:before{content:"\f221"}.fa-passport:before{content:"\f5ab"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-temperature-high:before{content:"\f769"}.fa-microchip:before{content:"\f2db"}.fa-crown:before{content:"\f521"}.fa-weight-hanging:before{content:"\f5cd"}.fa-xmarks-lines:before{content:"\e59a"}.fa-file-prescription:before{content:"\f572"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-chess-knight:before{content:"\f441"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-wheelchair:before{content:"\f193"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-toggle-on:before{content:"\f205"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-l:before{content:"\4c"}.fa-fire:before{content:"\f06d"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-folder-open:before{content:"\f07c"}.fa-heart-circle-plus:before{content:"\e500"}.fa-code-fork:before{content:"\e13b"}.fa-city:before{content:"\f64f"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-pepper-hot:before{content:"\f816"}.fa-unlock:before{content:"\f09c"}.fa-colon-sign:before{content:"\e140"}.fa-headset:before{content:"\f590"}.fa-store-slash:before{content:"\e071"}.fa-road-circle-xmark:before{content:"\e566"}.fa-user-minus:before{content:"\f503"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-clipboard:before{content:"\f328"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-underline:before{content:"\f0cd"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-signature:before{content:"\f5b7"}.fa-stroopwafel:before{content:"\f551"}.fa-bold:before{content:"\f032"}.fa-anchor-lock:before{content:"\e4ad"}.fa-building-ngo:before{content:"\e4d7"}.fa-manat-sign:before{content:"\e1d5"}.fa-not-equal:before{content:"\f53e"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-jedi:before{content:"\f669"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-mug-hot:before{content:"\f7b6"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-gift:before{content:"\f06b"}.fa-dice-two:before{content:"\f528"}.fa-chess-queen:before{content:"\f445"}.fa-glasses:before{content:"\f530"}.fa-chess-board:before{content:"\f43c"}.fa-building-circle-check:before{content:"\e4d2"}.fa-person-chalkboard:before{content:"\e53d"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-less-than-equal:before{content:"\f537"}.fa-train:before{content:"\f238"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-crow:before{content:"\f520"}.fa-sailboat:before{content:"\e445"}.fa-window-restore:before{content:"\f2d2"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-torii-gate:before{content:"\f6a1"}.fa-frog:before{content:"\f52e"}.fa-bucket:before{content:"\e4cf"}.fa-image:before{content:"\f03e"}.fa-microphone:before{content:"\f130"}.fa-cow:before{content:"\f6c8"}.fa-caret-up:before{content:"\f0d8"}.fa-screwdriver:before{content:"\f54a"}.fa-folder-closed:before{content:"\e185"}.fa-house-tsunami:before{content:"\e515"}.fa-square-nfi:before{content:"\e576"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-lemon:before{content:"\f094"}.fa-head-side-mask:before{content:"\e063"}.fa-handshake:before{content:"\f2b5"}.fa-gem:before{content:"\f3a5"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-smoking:before{content:"\f48d"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-monument:before{content:"\f5a6"}.fa-snowplow:before{content:"\f7d2"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-cannabis:before{content:"\f55f"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-tablets:before{content:"\f490"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-chair:before{content:"\f6c0"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-plate-wheat:before{content:"\e55a"}.fa-icicles:before{content:"\f7ad"}.fa-person-shelter:before{content:"\e54f"}.fa-neuter:before{content:"\f22c"}.fa-id-badge:before{content:"\f2c1"}.fa-marker:before{content:"\f5a1"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-helicopter-symbol:before{content:"\e502"}.fa-universal-access:before{content:"\f29a"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-lari-sign:before{content:"\e1c8"}.fa-volcano:before{content:"\f770"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-viruses:before{content:"\e076"}.fa-square-person-confined:before{content:"\e577"}.fa-user-tie:before{content:"\f508"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-certificate:before{content:"\f0a3"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-suitcase:before{content:"\f0f2"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-camera-retro:before{content:"\f083"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-box-open:before{content:"\f49e"}.fa-scroll:before{content:"\f70e"}.fa-spa:before{content:"\f5bb"}.fa-location-pin-lock:before{content:"\e51f"}.fa-pause:before{content:"\f04c"}.fa-hill-avalanche:before{content:"\e507"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-bomb:before{content:"\f1e2"}.fa-registered:before{content:"\f25d"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-subscript:before{content:"\f12c"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-burst:before{content:"\e4dc"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-money-bills:before{content:"\e1f3"}.fa-smog:before{content:"\f75f"}.fa-crutch:before{content:"\f7f7"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-palette:before{content:"\f53f"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-vest:before{content:"\e085"}.fa-ferry:before{content:"\e4ea"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-boxes-packing:before{content:"\e4c7"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-bowl-food:before{content:"\e4c6"}.fa-candy-cane:before{content:"\f786"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-file-word:before{content:"\f1c2"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-house-lock:before{content:"\e510"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-children:before{content:"\e4e1"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-envelope-open:before{content:"\f2b6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-mattress-pillow:before{content:"\e525"}.fa-guarani-sign:before{content:"\e19a"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-fire-extinguisher:before{content:"\f134"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-greater-than-equal:before{content:"\f532"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-virus:before{content:"\e074"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-layer-group:before{content:"\f5fd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-archway:before{content:"\f557"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-square:before{content:"\f0c8"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-couch:before{content:"\f4b8"}.fa-cedi-sign:before{content:"\e0df"}.fa-italic:before{content:"\f033"}.fa-table-cells-column-lock:before{content:"\e678"}.fa-church:before{content:"\f51d"}.fa-comments-dollar:before{content:"\f653"}.fa-democrat:before{content:"\f747"}.fa-z:before{content:"\5a"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-road-lock:before{content:"\e567"}.fa-a:before{content:"\41"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-p:before{content:"\50"}.fa-snowflake:before{content:"\f2dc"}.fa-newspaper:before{content:"\f1ea"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-locust:before{content:"\e520"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-person-dress-burst:before{content:"\e544"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-vector-square:before{content:"\f5cb"}.fa-bread-slice:before{content:"\f7ec"}.fa-language:before{content:"\f1ab"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-filter:before{content:"\f0b0"}.fa-question:before{content:"\3f"}.fa-file-signature:before{content:"\f573"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-house-chimney-user:before{content:"\e065"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-puzzle-piece:before{content:"\f12e"}.fa-money-check:before{content:"\f53c"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-code:before{content:"\f121"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-virus-covid:before{content:"\e4a8"}.fa-austral-sign:before{content:"\e0a9"}.fa-f:before{content:"\46"}.fa-leaf:before{content:"\f06c"}.fa-road:before{content:"\f018"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-person-circle-plus:before{content:"\e541"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-sack-xmark:before{content:"\e56a"}.fa-file-excel:before{content:"\f1c3"}.fa-file-contract:before{content:"\f56c"}.fa-fish-fins:before{content:"\e4f2"}.fa-building-flag:before{content:"\e4d5"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-object-ungroup:before{content:"\f248"}.fa-poop:before{content:"\f619"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-kaaba:before{content:"\f66b"}.fa-toilet-paper:before{content:"\f71e"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-eject:before{content:"\f052"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-plane-circle-check:before{content:"\e555"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-object-group:before{content:"\f247"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-mask-ventilator:before{content:"\e524"}.fa-arrow-right:before{content:"\f061"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-cash-register:before{content:"\f788"}.fa-person-circle-question:before{content:"\e542"}.fa-h:before{content:"\48"}.fa-tarp:before{content:"\e57b"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-heart:before{content:"\f004"}.fa-mars-and-venus:before{content:"\f224"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-dumpster-fire:before{content:"\f794"}.fa-house-crack:before{content:"\e3b1"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-bottle-water:before{content:"\e4c5"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-kitchen-set:before{content:"\e51a"}.fa-r:before{content:"\52"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-cube:before{content:"\f1b2"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-shield-dog:before{content:"\e573"}.fa-solar-panel:before{content:"\f5ba"}.fa-lock-open:before{content:"\f3c1"}.fa-elevator:before{content:"\e16d"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-circle:before{content:"\f111"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-recycle:before{content:"\f1b8"}.fa-user-astronaut:before{content:"\f4fb"}.fa-plane-slash:before{content:"\e069"}.fa-trademark:before{content:"\f25c"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-satellite-dish:before{content:"\f7c0"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-users-rays:before{content:"\e593"}.fa-wallet:before{content:"\f555"}.fa-clipboard-check:before{content:"\f46c"}.fa-file-audio:before{content:"\f1c7"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-wrench:before{content:"\f0ad"}.fa-bugs:before{content:"\e4d0"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-file-image:before{content:"\f1c5"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-plane-departure:before{content:"\f5b0"}.fa-handshake-slash:before{content:"\e060"}.fa-book-bookmark:before{content:"\e0bb"}.fa-code-branch:before{content:"\f126"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-bridge:before{content:"\e4c8"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-truck-front:before{content:"\e2b7"}.fa-cat:before{content:"\f6be"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-truck-field:before{content:"\e58d"}.fa-route:before{content:"\f4d7"}.fa-clipboard-question:before{content:"\e4e3"}.fa-panorama:before{content:"\e209"}.fa-comment-medical:before{content:"\f7f5"}.fa-teeth-open:before{content:"\f62f"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-tags:before{content:"\f02c"}.fa-wine-glass:before{content:"\f4e3"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-house-signal:before{content:"\e012"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-faucet-drip:before{content:"\e006"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-terminal:before{content:"\f120"}.fa-mobile-button:before{content:"\f10b"}.fa-house-medical-flag:before{content:"\e514"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-tape:before{content:"\f4db"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-eye:before{content:"\f06e"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-audio-description:before{content:"\f29e"}.fa-person-military-to-person:before{content:"\e54c"}.fa-file-shield:before{content:"\e4f0"}.fa-user-slash:before{content:"\f506"}.fa-pen:before{content:"\f304"}.fa-tower-observation:before{content:"\e586"}.fa-file-code:before{content:"\f1c9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-bus:before{content:"\f207"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-window-maximize:before{content:"\f2d0"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-prescription:before{content:"\f5b1"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-vihara:before{content:"\f6a7"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-plant-wilt:before{content:"\e5aa"}.fa-diamond:before{content:"\f219"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-bacterium:before{content:"\e05a"}.fa-hand-pointer:before{content:"\f25a"}.fa-drum-steelpan:before{content:"\f56a"}.fa-hand-scissors:before{content:"\f257"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-biohazard:before{content:"\f780"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-mars-double:before{content:"\f227"}.fa-child-dress:before{content:"\e59c"}.fa-users-between-lines:before{content:"\e591"}.fa-lungs-virus:before{content:"\e067"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-phone:before{content:"\f095"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-child-reaching:before{content:"\e59d"}.fa-head-side-virus:before{content:"\e064"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-door-closed:before{content:"\f52a"}.fa-shield-virus:before{content:"\e06c"}.fa-dice-six:before{content:"\f526"}.fa-mosquito-net:before{content:"\e52c"}.fa-bridge-water:before{content:"\e4ce"}.fa-person-booth:before{content:"\f756"}.fa-text-width:before{content:"\f035"}.fa-hat-wizard:before{content:"\f6e8"}.fa-pen-fancy:before{content:"\f5ac"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-trash:before{content:"\f1f8"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-book-medical:before{content:"\f7e6"}.fa-poo:before{content:"\f2fe"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-cubes:before{content:"\f1b3"}.fa-divide:before{content:"\f529"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-headphones:before{content:"\f025"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-clapping:before{content:"\e1a8"}.fa-republican:before{content:"\f75e"}.fa-arrow-left:before{content:"\f060"}.fa-person-circle-xmark:before{content:"\e543"}.fa-ruler:before{content:"\f545"}.fa-align-left:before{content:"\f036"}.fa-dice-d6:before{content:"\f6d1"}.fa-restroom:before{content:"\f7bd"}.fa-j:before{content:"\4a"}.fa-users-viewfinder:before{content:"\e595"}.fa-file-video:before{content:"\f1c8"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-file-pdf:before{content:"\f1c1"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-o:before{content:"\4f"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-user-secret:before{content:"\f21b"}.fa-otter:before{content:"\f700"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-comment-dollar:before{content:"\f651"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-clipboard-user:before{content:"\f7f3"}.fa-child:before{content:"\f1ae"}.fa-lira-sign:before{content:"\f195"}.fa-satellite:before{content:"\f7bf"}.fa-plane-lock:before{content:"\e558"}.fa-tag:before{content:"\f02b"}.fa-comment:before{content:"\f075"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-envelope:before{content:"\f0e0"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-paperclip:before{content:"\f0c6"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-ribbon:before{content:"\f4d6"}.fa-lungs:before{content:"\f604"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-border-none:before{content:"\f850"}.fa-circle-nodes:before{content:"\e4e2"}.fa-parachute-box:before{content:"\f4cd"}.fa-indent:before{content:"\f03c"}.fa-truck-field-un:before{content:"\e58e"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-mountain:before{content:"\f6fc"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-cloud-meatball:before{content:"\f73b"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-square-virus:before{content:"\e578"}.fa-meteor:before{content:"\f753"}.fa-car-on:before{content:"\e4dd"}.fa-sleigh:before{content:"\f7cc"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-water:before{content:"\f773"}.fa-calendar-check:before{content:"\f274"}.fa-braille:before{content:"\f2a1"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-landmark:before{content:"\f66f"}.fa-truck:before{content:"\f0d1"}.fa-crosshairs:before{content:"\f05b"}.fa-person-cane:before{content:"\e53c"}.fa-tent:before{content:"\e57d"}.fa-vest-patches:before{content:"\e086"}.fa-check-double:before{content:"\f560"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-cookie:before{content:"\f563"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-dumbbell:before{content:"\f44b"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-tarp-droplet:before{content:"\e57c"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-calendar-plus:before{content:"\f271"}.fa-plane-arrival:before{content:"\f5af"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-chart-gantt:before{content:"\e0e4"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-dna:before{content:"\f471"}.fa-virus-slash:before{content:"\e075"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-chess:before{content:"\f439"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-plug-circle-check:before{content:"\e55c"}.fa-street-view:before{content:"\f21d"}.fa-franc-sign:before{content:"\e18f"}.fa-volume-off:before{content:"\f026"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-star-of-david:before{content:"\f69a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-vials:before{content:"\f493"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-place-of-worship:before{content:"\f67f"}.fa-grip-vertical:before{content:"\f58e"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-u:before{content:"\55"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-pallet:before{content:"\f482"}.fa-faucet:before{content:"\e005"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-s:before{content:"\53"}.fa-timeline:before{content:"\e29c"}.fa-keyboard:before{content:"\f11c"}.fa-caret-down:before{content:"\f0d7"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-plane-up:before{content:"\e22d"}.fa-piggy-bank:before{content:"\f4d3"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-mountain-city:before{content:"\e52e"}.fa-coins:before{content:"\f51e"}.fa-khanda:before{content:"\f66d"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-folder-tree:before{content:"\f802"}.fa-network-wired:before{content:"\f6ff"}.fa-map-pin:before{content:"\f276"}.fa-hamsa:before{content:"\f665"}.fa-cent-sign:before{content:"\e3f5"}.fa-flask:before{content:"\f0c3"}.fa-person-pregnant:before{content:"\e31e"}.fa-wand-sparkles:before{content:"\f72b"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-ticket:before{content:"\f145"}.fa-power-off:before{content:"\f011"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-flag-usa:before{content:"\f74d"}.fa-laptop-file:before{content:"\e51d"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-diagram-next:before{content:"\e476"}.fa-person-rifle:before{content:"\e54e"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-closed-captioning:before{content:"\f20a"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-venus-double:before{content:"\f226"}.fa-images:before{content:"\f302"}.fa-calculator:before{content:"\f1ec"}.fa-people-pulling:before{content:"\e535"}.fa-n:before{content:"\4e"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-cloud-rain:before{content:"\f73d"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-ship:before{content:"\f21a"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-download:before{content:"\f019"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-file-circle-check:before{content:"\e5a0"}.fa-forward:before{content:"\f04e"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-align-center:before{content:"\f037"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-calendar-week:before{content:"\f784"}.fa-laptop-medical:before{content:"\f812"}.fa-b:before{content:"\42"}.fa-file-medical:before{content:"\f477"}.fa-dice-one:before{content:"\f525"}.fa-kiwi-bird:before{content:"\f535"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-mill-sign:before{content:"\e1ed"}.fa-bowl-rice:before{content:"\e2eb"}.fa-skull:before{content:"\f54c"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-truck-pickup:before{content:"\f63c"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-stop:before{content:"\f04d"}.fa-code-merge:before{content:"\f387"}.fa-upload:before{content:"\f093"}.fa-hurricane:before{content:"\f751"}.fa-mound:before{content:"\e52d"}.fa-toilet-portable:before{content:"\e583"}.fa-compact-disc:before{content:"\f51f"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-caravan:before{content:"\f8ff"}.fa-shield-cat:before{content:"\e572"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-glass-water:before{content:"\e4f4"}.fa-oil-well:before{content:"\e532"}.fa-vault:before{content:"\e2c5"}.fa-mars:before{content:"\f222"}.fa-toilet:before{content:"\f7d8"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-sun:before{content:"\f185"}.fa-guitar:before{content:"\f7a6"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-horse-head:before{content:"\f7ab"}.fa-bore-hole:before{content:"\e4c3"}.fa-industry:before{content:"\f275"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-florin-sign:before{content:"\e184"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-less-than:before{content:"\3c"}.fa-angle-down:before{content:"\f107"}.fa-car-tunnel:before{content:"\e4de"}.fa-head-side-cough:before{content:"\e061"}.fa-grip-lines:before{content:"\f7a4"}.fa-thumbs-down:before{content:"\f165"}.fa-user-lock:before{content:"\f502"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-chess-pawn:before{content:"\f443"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-person-through-window:before{content:"\e5a9"}.fa-toolbox:before{content:"\f552"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-bug:before{content:"\f188"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-mountain-sun:before{content:"\e52f"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-dice-d20:before{content:"\f6cf"}.fa-truck-droplet:before{content:"\e58c"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-medal:before{content:"\f5a2"}.fa-bed:before{content:"\f236"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-podcast:before{content:"\f2ce"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-bell:before{content:"\f0f3"}.fa-superscript:before{content:"\f12b"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-star-of-life:before{content:"\f621"}.fa-phone-slash:before{content:"\f3dd"}.fa-paint-roller:before{content:"\f5aa"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-file:before{content:"\f15b"}.fa-greater-than:before{content:"\3e"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-arrow-down:before{content:"\f063"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-eraser:before{content:"\f12d"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-person-burst:before{content:"\e53b"}.fa-dove:before{content:"\f4ba"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-socks:before{content:"\f696"}.fa-inbox:before{content:"\f01c"}.fa-section:before{content:"\e447"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-envelope-open-text:before{content:"\f658"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-wine-bottle:before{content:"\f72f"}.fa-chess-rook:before{content:"\f447"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-dharmachakra:before{content:"\f655"}.fa-hotdog:before{content:"\f80f"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-drum:before{content:"\f569"}.fa-ice-cream:before{content:"\f810"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-fax:before{content:"\f1ac"}.fa-paragraph:before{content:"\f1dd"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-star-half:before{content:"\f089"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-tree-city:before{content:"\e587"}.fa-play:before{content:"\f04b"}.fa-font:before{content:"\f031"}.fa-table-cells-row-lock:before{content:"\e67a"}.fa-rupiah-sign:before{content:"\e23d"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-naira-sign:before{content:"\e1f6"}.fa-cart-arrow-down:before{content:"\f218"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-receipt:before{content:"\f543"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-chevron-down:before{content:"\f078"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-skull-crossbones:before{content:"\f714"}.fa-code-compare:before{content:"\e13a"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-school-lock:before{content:"\e56f"}.fa-tower-cell:before{content:"\e585"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-ranking-star:before{content:"\e561"}.fa-chess-king:before{content:"\f43f"}.fa-person-harassing:before{content:"\e549"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-arrow-up:before{content:"\f062"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-shrimp:before{content:"\e448"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-jug-detergent:before{content:"\e519"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-user-shield:before{content:"\f505"}.fa-wind:before{content:"\f72e"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-y:before{content:"\59"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-fish:before{content:"\f578"}.fa-user-graduate:before{content:"\f501"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-clapperboard:before{content:"\e131"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-jet-fighter-up:before{content:"\e518"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-copy:before{content:"\f0c5"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-hand-sparkles:before{content:"\e05d"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-child-combatant:before,.fa-child-rifle:before{content:"\e4e0"}.fa-gun:before{content:"\e19b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-expand:before{content:"\f065"}.fa-computer:before{content:"\e4e5"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-peso-sign:before{content:"\e222"}.fa-building-shield:before{content:"\e4d8"}.fa-baby:before{content:"\f77c"}.fa-users-line:before{content:"\e592"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-tractor:before{content:"\f722"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-lines-leaning:before{content:"\e51e"}.fa-ruler-combined:before{content:"\f546"}.fa-copyright:before{content:"\f1f9"}.fa-equals:before{content:"\3d"}.fa-blender:before{content:"\f517"}.fa-teeth:before{content:"\f62e"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-map:before{content:"\f279"}.fa-rocket:before{content:"\f135"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-folder-minus:before{content:"\f65d"}.fa-store:before{content:"\f54e"}.fa-arrow-trend-up:before{content:"\e098"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-bezier-curve:before{content:"\f55b"}.fa-bell-slash:before{content:"\f1f6"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-school-flag:before{content:"\e56e"}.fa-fill:before{content:"\f575"}.fa-angle-up:before{content:"\f106"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-holly-berry:before{content:"\f7aa"}.fa-chevron-left:before{content:"\f053"}.fa-bacteria:before{content:"\e059"}.fa-hand-lizard:before{content:"\f258"}.fa-notdef:before{content:"\e1fe"}.fa-disease:before{content:"\f7fa"}.fa-briefcase-medical:before{content:"\f469"}.fa-genderless:before{content:"\f22d"}.fa-chevron-right:before{content:"\f054"}.fa-retweet:before{content:"\f079"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-pump-soap:before{content:"\e06b"}.fa-video-slash:before{content:"\f4e2"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-radio:before{content:"\f8d7"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-traffic-light:before{content:"\f637"}.fa-thermometer:before{content:"\f491"}.fa-vr-cardboard:before{content:"\f729"}.fa-hand-middle-finger:before{content:"\f806"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-truck-moving:before{content:"\f4df"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-display:before{content:"\e163"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-trophy:before{content:"\f091"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-hammer:before{content:"\f6e3"}.fa-hand-peace:before{content:"\f25b"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-spinner:before{content:"\f110"}.fa-robot:before{content:"\f544"}.fa-peace:before{content:"\f67c"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-warehouse:before{content:"\f494"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-splotch:before{content:"\f5bc"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-dice-four:before{content:"\f524"}.fa-sim-card:before{content:"\f7c4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-mercury:before{content:"\f223"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-person-falling-burst:before{content:"\e547"}.fa-award:before{content:"\f559"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-building:before{content:"\f1ad"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-qrcode:before{content:"\f029"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-house-medical:before{content:"\e3b2"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-house-chimney-window:before{content:"\e00d"}.fa-pen-nib:before{content:"\f5ad"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tents:before{content:"\e582"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-dog:before{content:"\f6d3"}.fa-carrot:before{content:"\f787"}.fa-moon:before{content:"\f186"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-cheese:before{content:"\f7ef"}.fa-yin-yang:before{content:"\f6ad"}.fa-music:before{content:"\f001"}.fa-code-commit:before{content:"\f386"}.fa-temperature-low:before{content:"\f76b"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-broom:before{content:"\f51a"}.fa-shield-heart:before{content:"\e574"}.fa-gopuram:before{content:"\f664"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-hashtag:before{content:"\23"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-oil-can:before{content:"\f613"}.fa-t:before{content:"\54"}.fa-hippo:before{content:"\f6ed"}.fa-chart-column:before{content:"\e0e3"}.fa-infinity:before{content:"\f534"}.fa-vial-circle-check:before{content:"\e596"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-voicemail:before{content:"\f897"}.fa-fan:before{content:"\f863"}.fa-person-walking-luggage:before{content:"\e554"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-calendar:before{content:"\f133"}.fa-trailer:before{content:"\e041"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-sd-card:before{content:"\f7c2"}.fa-dragon:before{content:"\f6d5"}.fa-shoe-prints:before{content:"\f54b"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-hand-holding:before{content:"\f4bd"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-clone:before{content:"\f24d"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-tornado:before{content:"\f76f"}.fa-file-circle-plus:before{content:"\e494"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-anchor:before{content:"\f13d"}.fa-border-all:before{content:"\f84c"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-cookie-bite:before{content:"\f564"}.fa-arrow-trend-down:before{content:"\e097"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-draw-polygon:before{content:"\f5ee"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-shower:before{content:"\f2cc"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-m:before{content:"\4d"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-book:before{content:"\f02d"}.fa-user-plus:before{content:"\f234"}.fa-check:before{content:"\f00c"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-house-circle-check:before{content:"\e509"}.fa-angle-left:before{content:"\f104"}.fa-diagram-successor:before{content:"\e47a"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-cloud-moon:before{content:"\f6c3"}.fa-briefcase:before{content:"\f0b1"}.fa-person-falling:before{content:"\e546"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-user-tag:before{content:"\f507"}.fa-rug:before{content:"\e569"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-baht-sign:before{content:"\e0ac"}.fa-book-open:before{content:"\f518"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-handcuffs:before{content:"\e4f8"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-database:before{content:"\f1c0"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-mask-face:before{content:"\e1d7"}.fa-hill-rockslide:before{content:"\e508"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-paper-plane:before{content:"\f1d8"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-dungeon:before{content:"\f6d9"}.fa-align-right:before{content:"\f038"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-life-ring:before{content:"\f1cd"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-calendar-day:before{content:"\f783"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-dice:before{content:"\f522"}.fa-bowling-ball:before{content:"\f436"}.fa-brain:before{content:"\f5dc"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-calendar-minus:before{content:"\f272"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-gifts:before{content:"\f79c"}.fa-hotel:before{content:"\f594"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-thumbs-up:before{content:"\f164"}.fa-user-clock:before{content:"\f4fd"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-file-invoice:before{content:"\f570"}.fa-window-minimize:before{content:"\f2d1"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-brush:before{content:"\f55d"}.fa-mask:before{content:"\f6fa"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-ruler-vertical:before{content:"\f548"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-train-tram:before{content:"\e5b4"}.fa-user-nurse:before{content:"\f82f"}.fa-syringe:before{content:"\f48e"}.fa-cloud-sun:before{content:"\f6c4"}.fa-stopwatch-20:before{content:"\e06f"}.fa-square-full:before{content:"\f45c"}.fa-magnet:before{content:"\f076"}.fa-jar:before{content:"\e516"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-bug-slash:before{content:"\e490"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-bone:before{content:"\f5d7"}.fa-user-injured:before{content:"\f728"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-plane:before{content:"\f072"}.fa-tent-arrows-down:before{content:"\e581"}.fa-exclamation:before{content:"\21"}.fa-arrows-spin:before{content:"\e4bb"}.fa-print:before{content:"\f02f"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-x:before{content:"\58"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-person-military-pointing:before{content:"\e54a"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-umbrella:before{content:"\f0e9"}.fa-trowel:before{content:"\e589"}.fa-d:before{content:"\44"}.fa-stapler:before{content:"\e5af"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-kip-sign:before{content:"\e1c4"}.fa-hand-point-left:before{content:"\f0a5"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-barcode:before{content:"\f02a"}.fa-plus-minus:before{content:"\e43c"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-person-circle-check:before{content:"\e53e"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"} +.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }.fa-brands,.fab{font-weight:400}.fa-monero:before{content:"\f3d0"}.fa-hooli:before{content:"\f427"}.fa-yelp:before{content:"\f1e9"}.fa-cc-visa:before{content:"\f1f0"}.fa-lastfm:before{content:"\f202"}.fa-shopware:before{content:"\f5b5"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-aws:before{content:"\f375"}.fa-redhat:before{content:"\f7bc"}.fa-yoast:before{content:"\f2b1"}.fa-cloudflare:before{content:"\e07d"}.fa-ups:before{content:"\f7e0"}.fa-pixiv:before{content:"\e640"}.fa-wpexplorer:before{content:"\f2de"}.fa-dyalog:before{content:"\f399"}.fa-bity:before{content:"\f37a"}.fa-stackpath:before{content:"\f842"}.fa-buysellads:before{content:"\f20d"}.fa-first-order:before{content:"\f2b0"}.fa-modx:before{content:"\f285"}.fa-guilded:before{content:"\e07e"}.fa-vnv:before{content:"\f40b"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-microsoft:before{content:"\f3ca"}.fa-qq:before{content:"\f1d6"}.fa-orcid:before{content:"\f8d2"}.fa-java:before{content:"\f4e4"}.fa-invision:before{content:"\f7b0"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-centercode:before{content:"\f380"}.fa-glide-g:before{content:"\f2a6"}.fa-drupal:before{content:"\f1a9"}.fa-jxl:before{content:"\e67b"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-unity:before{content:"\e049"}.fa-whmcs:before{content:"\f40d"}.fa-rocketchat:before{content:"\f3e8"}.fa-vk:before{content:"\f189"}.fa-untappd:before{content:"\f405"}.fa-mailchimp:before{content:"\f59e"}.fa-css3-alt:before{content:"\f38b"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-vimeo-v:before{content:"\f27d"}.fa-contao:before{content:"\f26d"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-deskpro:before{content:"\f38f"}.fa-brave:before{content:"\e63c"}.fa-sistrix:before{content:"\f3ee"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-battle-net:before{content:"\f835"}.fa-the-red-yeti:before{content:"\f69d"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-edge:before{content:"\f282"}.fa-threads:before{content:"\e618"}.fa-napster:before{content:"\f3d2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-google-plus-g:before{content:"\f0d5"}.fa-artstation:before{content:"\f77a"}.fa-markdown:before{content:"\f60f"}.fa-sourcetree:before{content:"\f7d3"}.fa-google-plus:before{content:"\f2b3"}.fa-diaspora:before{content:"\f791"}.fa-foursquare:before{content:"\f180"}.fa-stack-overflow:before{content:"\f16c"}.fa-github-alt:before{content:"\f113"}.fa-phoenix-squadron:before{content:"\f511"}.fa-pagelines:before{content:"\f18c"}.fa-algolia:before{content:"\f36c"}.fa-red-river:before{content:"\f3e3"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-safari:before{content:"\f267"}.fa-google:before{content:"\f1a0"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-atlassian:before{content:"\f77b"}.fa-linkedin-in:before{content:"\f0e1"}.fa-digital-ocean:before{content:"\f391"}.fa-nimblr:before{content:"\f5a8"}.fa-chromecast:before{content:"\f838"}.fa-evernote:before{content:"\f839"}.fa-hacker-news:before{content:"\f1d4"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-adversal:before{content:"\f36a"}.fa-creative-commons:before{content:"\f25e"}.fa-watchman-monitoring:before{content:"\e087"}.fa-fonticons:before{content:"\f280"}.fa-weixin:before{content:"\f1d7"}.fa-shirtsinbulk:before{content:"\f214"}.fa-codepen:before{content:"\f1cb"}.fa-git-alt:before{content:"\f841"}.fa-lyft:before{content:"\f3c3"}.fa-rev:before{content:"\f5b2"}.fa-windows:before{content:"\f17a"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-meetup:before{content:"\f2e0"}.fa-centos:before{content:"\f789"}.fa-adn:before{content:"\f170"}.fa-cloudsmith:before{content:"\f384"}.fa-opensuse:before{content:"\e62b"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-codiepie:before{content:"\f284"}.fa-node:before{content:"\f419"}.fa-mix:before{content:"\f3cb"}.fa-steam:before{content:"\f1b6"}.fa-cc-apple-pay:before{content:"\f416"}.fa-scribd:before{content:"\f28a"}.fa-debian:before{content:"\e60b"}.fa-openid:before{content:"\f19b"}.fa-instalod:before{content:"\e081"}.fa-expeditedssl:before{content:"\f23e"}.fa-sellcast:before{content:"\f2da"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-r-project:before{content:"\f4f7"}.fa-delicious:before{content:"\f1a5"}.fa-freebsd:before{content:"\f3a4"}.fa-vuejs:before{content:"\f41f"}.fa-accusoft:before{content:"\f369"}.fa-ioxhost:before{content:"\f208"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-app-store:before{content:"\f36f"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-itunes-note:before{content:"\f3b5"}.fa-golang:before{content:"\e40f"}.fa-kickstarter:before,.fa-square-kickstarter:before{content:"\f3bb"}.fa-grav:before{content:"\f2d6"}.fa-weibo:before{content:"\f18a"}.fa-uncharted:before{content:"\e084"}.fa-firstdraft:before{content:"\f3a1"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-wikipedia-w:before{content:"\f266"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-angellist:before{content:"\f209"}.fa-galactic-republic:before{content:"\f50c"}.fa-nfc-directional:before{content:"\e530"}.fa-skype:before{content:"\f17e"}.fa-joget:before{content:"\f3b7"}.fa-fedora:before{content:"\f798"}.fa-stripe-s:before{content:"\f42a"}.fa-meta:before{content:"\e49b"}.fa-laravel:before{content:"\f3bd"}.fa-hotjar:before{content:"\f3b1"}.fa-bluetooth-b:before{content:"\f294"}.fa-square-letterboxd:before{content:"\e62e"}.fa-sticker-mule:before{content:"\f3f7"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-hips:before{content:"\f452"}.fa-behance:before{content:"\f1b4"}.fa-reddit:before{content:"\f1a1"}.fa-discord:before{content:"\f392"}.fa-chrome:before{content:"\f268"}.fa-app-store-ios:before{content:"\f370"}.fa-cc-discover:before{content:"\f1f2"}.fa-wpbeginner:before{content:"\f297"}.fa-confluence:before{content:"\f78d"}.fa-shoelace:before{content:"\e60c"}.fa-mdb:before{content:"\f8ca"}.fa-dochub:before{content:"\f394"}.fa-accessible-icon:before{content:"\f368"}.fa-ebay:before{content:"\f4f4"}.fa-amazon:before{content:"\f270"}.fa-unsplash:before{content:"\e07c"}.fa-yarn:before{content:"\f7e3"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-500px:before{content:"\f26e"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-asymmetrik:before{content:"\f372"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-gratipay:before{content:"\f184"}.fa-apple:before{content:"\f179"}.fa-hive:before{content:"\e07f"}.fa-gitkraken:before{content:"\f3a6"}.fa-keybase:before{content:"\f4f5"}.fa-apple-pay:before{content:"\f415"}.fa-padlet:before{content:"\e4a0"}.fa-amazon-pay:before{content:"\f42c"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-stumbleupon:before{content:"\f1a4"}.fa-fedex:before{content:"\f797"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-shopify:before{content:"\e057"}.fa-neos:before{content:"\f612"}.fa-square-threads:before{content:"\e619"}.fa-hackerrank:before{content:"\f5f7"}.fa-researchgate:before{content:"\f4f8"}.fa-swift:before{content:"\f8e1"}.fa-angular:before{content:"\f420"}.fa-speakap:before{content:"\f3f3"}.fa-angrycreative:before{content:"\f36e"}.fa-y-combinator:before{content:"\f23b"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-google-scholar:before{content:"\e63b"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-studiovinari:before{content:"\f3f8"}.fa-pied-piper:before{content:"\f2ae"}.fa-wordpress:before{content:"\f19a"}.fa-product-hunt:before{content:"\f288"}.fa-firefox:before{content:"\f269"}.fa-linode:before{content:"\f2b8"}.fa-goodreads:before{content:"\f3a8"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-jsfiddle:before{content:"\f1cc"}.fa-sith:before{content:"\f512"}.fa-themeisle:before{content:"\f2b2"}.fa-page4:before{content:"\f3d7"}.fa-hashnode:before{content:"\e499"}.fa-react:before{content:"\f41b"}.fa-cc-paypal:before{content:"\f1f4"}.fa-squarespace:before{content:"\f5be"}.fa-cc-stripe:before{content:"\f1f5"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-bitcoin:before{content:"\f379"}.fa-keycdn:before{content:"\f3ba"}.fa-opera:before{content:"\f26a"}.fa-itch-io:before{content:"\f83a"}.fa-umbraco:before{content:"\f8e8"}.fa-galactic-senate:before{content:"\f50d"}.fa-ubuntu:before{content:"\f7df"}.fa-draft2digital:before{content:"\f396"}.fa-stripe:before{content:"\f429"}.fa-houzz:before{content:"\f27c"}.fa-gg:before{content:"\f260"}.fa-dhl:before{content:"\f790"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-xing:before{content:"\f168"}.fa-blackberry:before{content:"\f37b"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-playstation:before{content:"\f3df"}.fa-quinscape:before{content:"\f459"}.fa-less:before{content:"\f41d"}.fa-blogger-b:before{content:"\f37d"}.fa-opencart:before{content:"\f23d"}.fa-vine:before{content:"\f1ca"}.fa-signal-messenger:before{content:"\e663"}.fa-paypal:before{content:"\f1ed"}.fa-gitlab:before{content:"\f296"}.fa-typo3:before{content:"\f42b"}.fa-reddit-alien:before{content:"\f281"}.fa-yahoo:before{content:"\f19e"}.fa-dailymotion:before{content:"\e052"}.fa-affiliatetheme:before{content:"\f36b"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-bootstrap:before{content:"\f836"}.fa-odnoklassniki:before{content:"\f263"}.fa-nfc-symbol:before{content:"\e531"}.fa-mintbit:before{content:"\e62f"}.fa-ethereum:before{content:"\f42e"}.fa-speaker-deck:before{content:"\f83c"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-patreon:before{content:"\f3d9"}.fa-avianex:before{content:"\f374"}.fa-ello:before{content:"\f5f1"}.fa-gofore:before{content:"\f3a7"}.fa-bimobject:before{content:"\f378"}.fa-brave-reverse:before{content:"\e63d"}.fa-facebook-f:before{content:"\f39e"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-web-awesome:before{content:"\e682"}.fa-mandalorian:before{content:"\f50f"}.fa-first-order-alt:before{content:"\f50a"}.fa-osi:before{content:"\f41a"}.fa-google-wallet:before{content:"\f1ee"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-periscope:before{content:"\f3da"}.fa-fulcrum:before{content:"\f50b"}.fa-cloudscale:before{content:"\f383"}.fa-forumbee:before{content:"\f211"}.fa-mizuni:before{content:"\f3cc"}.fa-schlix:before{content:"\f3ea"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-bandcamp:before{content:"\f2d5"}.fa-wpforms:before{content:"\f298"}.fa-cloudversify:before{content:"\f385"}.fa-usps:before{content:"\f7e1"}.fa-megaport:before{content:"\f5a3"}.fa-magento:before{content:"\f3c4"}.fa-spotify:before{content:"\f1bc"}.fa-optin-monster:before{content:"\f23c"}.fa-fly:before{content:"\f417"}.fa-aviato:before{content:"\f421"}.fa-itunes:before{content:"\f3b4"}.fa-cuttlefish:before{content:"\f38c"}.fa-blogger:before{content:"\f37c"}.fa-flickr:before{content:"\f16e"}.fa-viber:before{content:"\f409"}.fa-soundcloud:before{content:"\f1be"}.fa-digg:before{content:"\f1a6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-letterboxd:before{content:"\e62d"}.fa-symfony:before{content:"\f83d"}.fa-maxcdn:before{content:"\f136"}.fa-etsy:before{content:"\f2d7"}.fa-facebook-messenger:before{content:"\f39f"}.fa-audible:before{content:"\f373"}.fa-think-peaks:before{content:"\f731"}.fa-bilibili:before{content:"\e3d9"}.fa-erlang:before{content:"\f39d"}.fa-x-twitter:before{content:"\e61b"}.fa-cotton-bureau:before{content:"\f89e"}.fa-dashcube:before{content:"\f210"}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-stack-exchange:before{content:"\f18d"}.fa-elementor:before{content:"\f430"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-palfed:before{content:"\f3d8"}.fa-superpowers:before{content:"\f2dd"}.fa-resolving:before{content:"\f3e7"}.fa-xbox:before{content:"\f412"}.fa-square-web-awesome-stroke:before{content:"\e684"}.fa-searchengin:before{content:"\f3eb"}.fa-tiktok:before{content:"\e07b"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-renren:before{content:"\f18b"}.fa-linux:before{content:"\f17c"}.fa-glide:before{content:"\f2a5"}.fa-linkedin:before{content:"\f08c"}.fa-hubspot:before{content:"\f3b2"}.fa-deploydog:before{content:"\f38e"}.fa-twitch:before{content:"\f1e8"}.fa-ravelry:before{content:"\f2d9"}.fa-mixer:before{content:"\e056"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-vimeo:before{content:"\f40a"}.fa-mendeley:before{content:"\f7b3"}.fa-uniregistry:before{content:"\f404"}.fa-figma:before{content:"\f799"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-dropbox:before{content:"\f16b"}.fa-instagram:before{content:"\f16d"}.fa-cmplid:before{content:"\e360"}.fa-upwork:before{content:"\e641"}.fa-facebook:before{content:"\f09a"}.fa-gripfire:before{content:"\f3ac"}.fa-jedi-order:before{content:"\f50e"}.fa-uikit:before{content:"\f403"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-phabricator:before{content:"\f3db"}.fa-ussunnah:before{content:"\f407"}.fa-earlybirds:before{content:"\f39a"}.fa-trade-federation:before{content:"\f513"}.fa-autoprefixer:before{content:"\f41c"}.fa-whatsapp:before{content:"\f232"}.fa-square-upwork:before{content:"\e67c"}.fa-slideshare:before{content:"\f1e7"}.fa-google-play:before{content:"\f3ab"}.fa-viadeo:before{content:"\f2a9"}.fa-line:before{content:"\f3c0"}.fa-google-drive:before{content:"\f3aa"}.fa-servicestack:before{content:"\f3ec"}.fa-simplybuilt:before{content:"\f215"}.fa-bitbucket:before{content:"\f171"}.fa-imdb:before{content:"\f2d8"}.fa-deezer:before{content:"\e077"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-jira:before{content:"\f7b1"}.fa-docker:before{content:"\f395"}.fa-screenpal:before{content:"\e570"}.fa-bluetooth:before{content:"\f293"}.fa-gitter:before{content:"\f426"}.fa-d-and-d:before{content:"\f38d"}.fa-microblog:before{content:"\e01a"}.fa-cc-diners-club:before{content:"\f24c"}.fa-gg-circle:before{content:"\f261"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-yandex:before{content:"\f413"}.fa-readme:before{content:"\f4d5"}.fa-html5:before{content:"\f13b"}.fa-sellsy:before{content:"\f213"}.fa-square-web-awesome:before{content:"\e683"}.fa-sass:before{content:"\f41e"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-buromobelexperte:before{content:"\f37f"}.fa-salesforce:before{content:"\f83b"}.fa-octopus-deploy:before{content:"\e082"}.fa-medapps:before{content:"\f3c6"}.fa-ns8:before{content:"\f3d5"}.fa-pinterest-p:before{content:"\f231"}.fa-apper:before{content:"\f371"}.fa-fort-awesome:before{content:"\f286"}.fa-waze:before{content:"\f83f"}.fa-bluesky:before{content:"\e671"}.fa-cc-jcb:before{content:"\f24b"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-rust:before{content:"\e07a"}.fa-wix:before{content:"\f5cf"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-supple:before{content:"\f3f9"}.fa-webflow:before{content:"\e65c"}.fa-rebel:before{content:"\f1d0"}.fa-css3:before{content:"\f13c"}.fa-staylinked:before{content:"\f3f5"}.fa-kaggle:before{content:"\f5fa"}.fa-space-awesome:before{content:"\e5ac"}.fa-deviantart:before{content:"\f1bd"}.fa-cpanel:before{content:"\f388"}.fa-goodreads-g:before{content:"\f3a9"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-trello:before{content:"\f181"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-get-pocket:before{content:"\f265"}.fa-perbyte:before{content:"\e083"}.fa-grunt:before{content:"\f3ad"}.fa-weebly:before{content:"\f5cc"}.fa-connectdevelop:before{content:"\f20e"}.fa-leanpub:before{content:"\f212"}.fa-black-tie:before{content:"\f27e"}.fa-themeco:before{content:"\f5c6"}.fa-python:before{content:"\f3e2"}.fa-android:before{content:"\f17b"}.fa-bots:before{content:"\e340"}.fa-free-code-camp:before{content:"\f2c5"}.fa-hornbill:before{content:"\f592"}.fa-js:before{content:"\f3b8"}.fa-ideal:before{content:"\e013"}.fa-git:before{content:"\f1d3"}.fa-dev:before{content:"\f6cc"}.fa-sketch:before{content:"\f7c6"}.fa-yandex-international:before{content:"\f414"}.fa-cc-amex:before{content:"\f1f3"}.fa-uber:before{content:"\f402"}.fa-github:before{content:"\f09b"}.fa-php:before{content:"\f457"}.fa-alipay:before{content:"\f642"}.fa-youtube:before{content:"\f167"}.fa-skyatlas:before{content:"\f216"}.fa-firefox-browser:before{content:"\e007"}.fa-replyd:before{content:"\f3e6"}.fa-suse:before{content:"\f7d6"}.fa-jenkins:before{content:"\f3b6"}.fa-twitter:before{content:"\f099"}.fa-rockrms:before{content:"\f3e9"}.fa-pinterest:before{content:"\f0d2"}.fa-buffer:before{content:"\f837"}.fa-npm:before{content:"\f3d4"}.fa-yammer:before{content:"\f840"}.fa-btc:before{content:"\f15a"}.fa-dribbble:before{content:"\f17d"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-internet-explorer:before{content:"\f26b"}.fa-stubber:before{content:"\e5c7"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-old-republic:before{content:"\f510"}.fa-odysee:before{content:"\e5c6"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-node-js:before{content:"\f3d3"}.fa-edge-legacy:before{content:"\e078"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-medrt:before{content:"\f3c8"}.fa-usb:before{content:"\f287"}.fa-tumblr:before{content:"\f173"}.fa-vaadin:before{content:"\f408"}.fa-quora:before{content:"\f2c4"}.fa-square-x-twitter:before{content:"\e61a"}.fa-reacteurope:before{content:"\f75d"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-amilia:before{content:"\f36d"}.fa-mixcloud:before{content:"\f289"}.fa-flipboard:before{content:"\f44d"}.fa-viacoin:before{content:"\f237"}.fa-critical-role:before{content:"\f6c9"}.fa-sitrox:before{content:"\e44a"}.fa-discourse:before{content:"\f393"}.fa-joomla:before{content:"\f1aa"}.fa-mastodon:before{content:"\f4f6"}.fa-airbnb:before{content:"\f834"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-buy-n-large:before{content:"\f8a6"}.fa-gulp:before{content:"\f3ae"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-strava:before{content:"\f428"}.fa-ember:before{content:"\f423"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-teamspeak:before{content:"\f4f9"}.fa-pushed:before{content:"\f3e1"}.fa-wordpress-simple:before{content:"\f411"}.fa-nutritionix:before{content:"\f3d6"}.fa-wodu:before{content:"\e088"}.fa-google-pay:before{content:"\e079"}.fa-intercom:before{content:"\f7af"}.fa-zhihu:before{content:"\f63f"}.fa-korvue:before{content:"\f42f"}.fa-pix:before{content:"\e43a"}.fa-steam-symbol:before{content:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }@font-face{font-family:"FontAwesome";font-display:block;src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }@font-face{font-family:"FontAwesome";font-display:block;src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }@font-face{font-family:"FontAwesome";font-display:block;src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }@font-face{font-family:"FontAwesome";font-display:block;src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype"); }
\ No newline at end of file diff --git a/docs/dev/deps/font-awesome-6.5.2/css/v4-shims.css b/docs/dev/deps/font-awesome-6.5.2/css/v4-shims.css new file mode 100644 index 00000000..ea60ea4d --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/css/v4-shims.css @@ -0,0 +1,2194 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa.fa-glass:before { + content: "\f000"; } + +.fa.fa-envelope-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-envelope-o:before { + content: "\f0e0"; } + +.fa.fa-star-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-o:before { + content: "\f005"; } + +.fa.fa-remove:before { + content: "\f00d"; } + +.fa.fa-close:before { + content: "\f00d"; } + +.fa.fa-gear:before { + content: "\f013"; } + +.fa.fa-trash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-trash-o:before { + content: "\f2ed"; } + +.fa.fa-home:before { + content: "\f015"; } + +.fa.fa-file-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-o:before { + content: "\f15b"; } + +.fa.fa-clock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-clock-o:before { + content: "\f017"; } + +.fa.fa-arrow-circle-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-down:before { + content: "\f358"; } + +.fa.fa-arrow-circle-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-up:before { + content: "\f35b"; } + +.fa.fa-play-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-play-circle-o:before { + content: "\f144"; } + +.fa.fa-repeat:before { + content: "\f01e"; } + +.fa.fa-rotate-right:before { + content: "\f01e"; } + +.fa.fa-refresh:before { + content: "\f021"; } + +.fa.fa-list-alt { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-list-alt:before { + content: "\f022"; } + +.fa.fa-dedent:before { + content: "\f03b"; } + +.fa.fa-video-camera:before { + content: "\f03d"; } + +.fa.fa-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-picture-o:before { + content: "\f03e"; } + +.fa.fa-photo { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-photo:before { + content: "\f03e"; } + +.fa.fa-image { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-image:before { + content: "\f03e"; } + +.fa.fa-map-marker:before { + content: "\f3c5"; } + +.fa.fa-pencil-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-pencil-square-o:before { + content: "\f044"; } + +.fa.fa-edit { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-edit:before { + content: "\f044"; } + +.fa.fa-share-square-o:before { + content: "\f14d"; } + +.fa.fa-check-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-check-square-o:before { + content: "\f14a"; } + +.fa.fa-arrows:before { + content: "\f0b2"; } + +.fa.fa-times-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-circle-o:before { + content: "\f057"; } + +.fa.fa-check-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-check-circle-o:before { + content: "\f058"; } + +.fa.fa-mail-forward:before { + content: "\f064"; } + +.fa.fa-expand:before { + content: "\f424"; } + +.fa.fa-compress:before { + content: "\f422"; } + +.fa.fa-eye { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-eye-slash { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-warning:before { + content: "\f071"; } + +.fa.fa-calendar:before { + content: "\f073"; } + +.fa.fa-arrows-v:before { + content: "\f338"; } + +.fa.fa-arrows-h:before { + content: "\f337"; } + +.fa.fa-bar-chart:before { + content: "\e0e3"; } + +.fa.fa-bar-chart-o:before { + content: "\e0e3"; } + +.fa.fa-twitter-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-twitter-square:before { + content: "\f081"; } + +.fa.fa-facebook-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-square:before { + content: "\f082"; } + +.fa.fa-gears:before { + content: "\f085"; } + +.fa.fa-thumbs-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-thumbs-o-up:before { + content: "\f164"; } + +.fa.fa-thumbs-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-thumbs-o-down:before { + content: "\f165"; } + +.fa.fa-heart-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-heart-o:before { + content: "\f004"; } + +.fa.fa-sign-out:before { + content: "\f2f5"; } + +.fa.fa-linkedin-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linkedin-square:before { + content: "\f08c"; } + +.fa.fa-thumb-tack:before { + content: "\f08d"; } + +.fa.fa-external-link:before { + content: "\f35d"; } + +.fa.fa-sign-in:before { + content: "\f2f6"; } + +.fa.fa-github-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-github-square:before { + content: "\f092"; } + +.fa.fa-lemon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-lemon-o:before { + content: "\f094"; } + +.fa.fa-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-square-o:before { + content: "\f0c8"; } + +.fa.fa-bookmark-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bookmark-o:before { + content: "\f02e"; } + +.fa.fa-twitter { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook:before { + content: "\f39e"; } + +.fa.fa-facebook-f { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-f:before { + content: "\f39e"; } + +.fa.fa-github { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-credit-card { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-feed:before { + content: "\f09e"; } + +.fa.fa-hdd-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hdd-o:before { + content: "\f0a0"; } + +.fa.fa-hand-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-right:before { + content: "\f0a4"; } + +.fa.fa-hand-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-left:before { + content: "\f0a5"; } + +.fa.fa-hand-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-up:before { + content: "\f0a6"; } + +.fa.fa-hand-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-o-down:before { + content: "\f0a7"; } + +.fa.fa-globe:before { + content: "\f57d"; } + +.fa.fa-tasks:before { + content: "\f828"; } + +.fa.fa-arrows-alt:before { + content: "\f31e"; } + +.fa.fa-group:before { + content: "\f0c0"; } + +.fa.fa-chain:before { + content: "\f0c1"; } + +.fa.fa-cut:before { + content: "\f0c4"; } + +.fa.fa-files-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-files-o:before { + content: "\f0c5"; } + +.fa.fa-floppy-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-floppy-o:before { + content: "\f0c7"; } + +.fa.fa-save { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-save:before { + content: "\f0c7"; } + +.fa.fa-navicon:before { + content: "\f0c9"; } + +.fa.fa-reorder:before { + content: "\f0c9"; } + +.fa.fa-magic:before { + content: "\e2ca"; } + +.fa.fa-pinterest { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pinterest-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa.fa-google-plus-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa.fa-google-plus { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus:before { + content: "\f0d5"; } + +.fa.fa-money:before { + content: "\f3d1"; } + +.fa.fa-unsorted:before { + content: "\f0dc"; } + +.fa.fa-sort-desc:before { + content: "\f0dd"; } + +.fa.fa-sort-asc:before { + content: "\f0de"; } + +.fa.fa-linkedin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linkedin:before { + content: "\f0e1"; } + +.fa.fa-rotate-left:before { + content: "\f0e2"; } + +.fa.fa-legal:before { + content: "\f0e3"; } + +.fa.fa-tachometer:before { + content: "\f625"; } + +.fa.fa-dashboard:before { + content: "\f625"; } + +.fa.fa-comment-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-comment-o:before { + content: "\f075"; } + +.fa.fa-comments-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-comments-o:before { + content: "\f086"; } + +.fa.fa-flash:before { + content: "\f0e7"; } + +.fa.fa-clipboard:before { + content: "\f0ea"; } + +.fa.fa-lightbulb-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-lightbulb-o:before { + content: "\f0eb"; } + +.fa.fa-exchange:before { + content: "\f362"; } + +.fa.fa-cloud-download:before { + content: "\f0ed"; } + +.fa.fa-cloud-upload:before { + content: "\f0ee"; } + +.fa.fa-bell-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bell-o:before { + content: "\f0f3"; } + +.fa.fa-cutlery:before { + content: "\f2e7"; } + +.fa.fa-file-text-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-text-o:before { + content: "\f15c"; } + +.fa.fa-building-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-building-o:before { + content: "\f1ad"; } + +.fa.fa-hospital-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hospital-o:before { + content: "\f0f8"; } + +.fa.fa-tablet:before { + content: "\f3fa"; } + +.fa.fa-mobile:before { + content: "\f3cd"; } + +.fa.fa-mobile-phone:before { + content: "\f3cd"; } + +.fa.fa-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-circle-o:before { + content: "\f111"; } + +.fa.fa-mail-reply:before { + content: "\f3e5"; } + +.fa.fa-github-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-folder-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-folder-o:before { + content: "\f07b"; } + +.fa.fa-folder-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-folder-open-o:before { + content: "\f07c"; } + +.fa.fa-smile-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-smile-o:before { + content: "\f118"; } + +.fa.fa-frown-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-frown-o:before { + content: "\f119"; } + +.fa.fa-meh-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-meh-o:before { + content: "\f11a"; } + +.fa.fa-keyboard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-keyboard-o:before { + content: "\f11c"; } + +.fa.fa-flag-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-flag-o:before { + content: "\f024"; } + +.fa.fa-mail-reply-all:before { + content: "\f122"; } + +.fa.fa-star-half-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-o:before { + content: "\f5c0"; } + +.fa.fa-star-half-empty { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-empty:before { + content: "\f5c0"; } + +.fa.fa-star-half-full { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-star-half-full:before { + content: "\f5c0"; } + +.fa.fa-code-fork:before { + content: "\f126"; } + +.fa.fa-chain-broken:before { + content: "\f127"; } + +.fa.fa-unlink:before { + content: "\f127"; } + +.fa.fa-calendar-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-o:before { + content: "\f133"; } + +.fa.fa-maxcdn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-html5 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-css3 { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-unlock-alt:before { + content: "\f09c"; } + +.fa.fa-minus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-minus-square-o:before { + content: "\f146"; } + +.fa.fa-level-up:before { + content: "\f3bf"; } + +.fa.fa-level-down:before { + content: "\f3be"; } + +.fa.fa-pencil-square:before { + content: "\f14b"; } + +.fa.fa-external-link-square:before { + content: "\f360"; } + +.fa.fa-compass { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-down:before { + content: "\f150"; } + +.fa.fa-toggle-down { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-down:before { + content: "\f150"; } + +.fa.fa-caret-square-o-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-up:before { + content: "\f151"; } + +.fa.fa-toggle-up { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-up:before { + content: "\f151"; } + +.fa.fa-caret-square-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-right:before { + content: "\f152"; } + +.fa.fa-toggle-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-right:before { + content: "\f152"; } + +.fa.fa-eur:before { + content: "\f153"; } + +.fa.fa-euro:before { + content: "\f153"; } + +.fa.fa-gbp:before { + content: "\f154"; } + +.fa.fa-usd:before { + content: "\24"; } + +.fa.fa-dollar:before { + content: "\24"; } + +.fa.fa-inr:before { + content: "\e1bc"; } + +.fa.fa-rupee:before { + content: "\e1bc"; } + +.fa.fa-jpy:before { + content: "\f157"; } + +.fa.fa-cny:before { + content: "\f157"; } + +.fa.fa-rmb:before { + content: "\f157"; } + +.fa.fa-yen:before { + content: "\f157"; } + +.fa.fa-rub:before { + content: "\f158"; } + +.fa.fa-ruble:before { + content: "\f158"; } + +.fa.fa-rouble:before { + content: "\f158"; } + +.fa.fa-krw:before { + content: "\f159"; } + +.fa.fa-won:before { + content: "\f159"; } + +.fa.fa-btc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin:before { + content: "\f15a"; } + +.fa.fa-file-text:before { + content: "\f15c"; } + +.fa.fa-sort-alpha-asc:before { + content: "\f15d"; } + +.fa.fa-sort-alpha-desc:before { + content: "\f881"; } + +.fa.fa-sort-amount-asc:before { + content: "\f884"; } + +.fa.fa-sort-amount-desc:before { + content: "\f160"; } + +.fa.fa-sort-numeric-asc:before { + content: "\f162"; } + +.fa.fa-sort-numeric-desc:before { + content: "\f886"; } + +.fa.fa-youtube-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-youtube-square:before { + content: "\f431"; } + +.fa.fa-youtube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-xing-square:before { + content: "\f169"; } + +.fa.fa-youtube-play { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-youtube-play:before { + content: "\f167"; } + +.fa.fa-dropbox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stack-overflow { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-instagram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-flickr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-adn { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square:before { + content: "\f171"; } + +.fa.fa-tumblr { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-tumblr-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-tumblr-square:before { + content: "\f174"; } + +.fa.fa-long-arrow-down:before { + content: "\f309"; } + +.fa.fa-long-arrow-up:before { + content: "\f30c"; } + +.fa.fa-long-arrow-left:before { + content: "\f30a"; } + +.fa.fa-long-arrow-right:before { + content: "\f30b"; } + +.fa.fa-apple { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-windows { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-android { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-linux { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-dribbble { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-skype { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-foursquare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-trello { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gratipay { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gittip { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gittip:before { + content: "\f184"; } + +.fa.fa-sun-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sun-o:before { + content: "\f185"; } + +.fa.fa-moon-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-moon-o:before { + content: "\f186"; } + +.fa.fa-vk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-renren { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pagelines { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stack-exchange { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-right { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-right:before { + content: "\f35a"; } + +.fa.fa-arrow-circle-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-left:before { + content: "\f359"; } + +.fa.fa-caret-square-o-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-left:before { + content: "\f191"; } + +.fa.fa-toggle-left { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-toggle-left:before { + content: "\f191"; } + +.fa.fa-dot-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-dot-circle-o:before { + content: "\f192"; } + +.fa.fa-vimeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo-square:before { + content: "\f194"; } + +.fa.fa-try:before { + content: "\e2bb"; } + +.fa.fa-turkish-lira:before { + content: "\e2bb"; } + +.fa.fa-plus-square-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-plus-square-o:before { + content: "\f0fe"; } + +.fa.fa-slack { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wordpress { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-openid { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-institution:before { + content: "\f19c"; } + +.fa.fa-bank:before { + content: "\f19c"; } + +.fa.fa-mortar-board:before { + content: "\f19d"; } + +.fa.fa-yahoo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square:before { + content: "\f1a2"; } + +.fa.fa-stumbleupon-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-stumbleupon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-delicious { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-digg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-pp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-drupal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-joomla { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-behance-square:before { + content: "\f1b5"; } + +.fa.fa-steam { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-steam-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-steam-square:before { + content: "\f1b7"; } + +.fa.fa-automobile:before { + content: "\f1b9"; } + +.fa.fa-cab:before { + content: "\f1ba"; } + +.fa.fa-spotify { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-deviantart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-soundcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-file-pdf-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-pdf-o:before { + content: "\f1c1"; } + +.fa.fa-file-word-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-word-o:before { + content: "\f1c2"; } + +.fa.fa-file-excel-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-excel-o:before { + content: "\f1c3"; } + +.fa.fa-file-powerpoint-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-powerpoint-o:before { + content: "\f1c4"; } + +.fa.fa-file-image-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-image-o:before { + content: "\f1c5"; } + +.fa.fa-file-photo-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-photo-o:before { + content: "\f1c5"; } + +.fa.fa-file-picture-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-picture-o:before { + content: "\f1c5"; } + +.fa.fa-file-archive-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-archive-o:before { + content: "\f1c6"; } + +.fa.fa-file-zip-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-zip-o:before { + content: "\f1c6"; } + +.fa.fa-file-audio-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-audio-o:before { + content: "\f1c7"; } + +.fa.fa-file-sound-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-sound-o:before { + content: "\f1c7"; } + +.fa.fa-file-video-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-video-o:before { + content: "\f1c8"; } + +.fa.fa-file-movie-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-movie-o:before { + content: "\f1c8"; } + +.fa.fa-file-code-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-file-code-o:before { + content: "\f1c9"; } + +.fa.fa-vine { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-codepen { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-jsfiddle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-life-bouy:before { + content: "\f1cd"; } + +.fa.fa-life-buoy:before { + content: "\f1cd"; } + +.fa.fa-life-saver:before { + content: "\f1cd"; } + +.fa.fa-support:before { + content: "\f1cd"; } + +.fa.fa-circle-o-notch:before { + content: "\f1ce"; } + +.fa.fa-rebel { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ra { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ra:before { + content: "\f1d0"; } + +.fa.fa-resistance { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-resistance:before { + content: "\f1d0"; } + +.fa.fa-empire { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ge:before { + content: "\f1d1"; } + +.fa.fa-git-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-git-square:before { + content: "\f1d2"; } + +.fa.fa-git { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-hacker-news { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator-square:before { + content: "\f1d4"; } + +.fa.fa-yc-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc-square:before { + content: "\f1d4"; } + +.fa.fa-tencent-weibo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-qq { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-weixin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wechat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wechat:before { + content: "\f1d7"; } + +.fa.fa-send:before { + content: "\f1d8"; } + +.fa.fa-paper-plane-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-paper-plane-o:before { + content: "\f1d8"; } + +.fa.fa-send-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-send-o:before { + content: "\f1d8"; } + +.fa.fa-circle-thin { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-circle-thin:before { + content: "\f111"; } + +.fa.fa-header:before { + content: "\f1dc"; } + +.fa.fa-futbol-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-futbol-o:before { + content: "\f1e3"; } + +.fa.fa-soccer-ball-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-soccer-ball-o:before { + content: "\f1e3"; } + +.fa.fa-slideshare { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-twitch { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yelp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-newspaper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-newspaper-o:before { + content: "\f1ea"; } + +.fa.fa-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-wallet { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-visa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-mastercard { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-discover { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-amex { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-paypal { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-stripe { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bell-slash-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-bell-slash-o:before { + content: "\f1f6"; } + +.fa.fa-trash:before { + content: "\f2ed"; } + +.fa.fa-copyright { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-eyedropper:before { + content: "\f1fb"; } + +.fa.fa-area-chart:before { + content: "\f1fe"; } + +.fa.fa-pie-chart:before { + content: "\f200"; } + +.fa.fa-line-chart:before { + content: "\f201"; } + +.fa.fa-lastfm { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square:before { + content: "\f203"; } + +.fa.fa-ioxhost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-angellist { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-cc:before { + content: "\f20a"; } + +.fa.fa-ils:before { + content: "\f20b"; } + +.fa.fa-shekel:before { + content: "\f20b"; } + +.fa.fa-sheqel:before { + content: "\f20b"; } + +.fa.fa-buysellads { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-connectdevelop { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-dashcube { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-forumbee { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-leanpub { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-sellsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-shirtsinbulk { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-simplybuilt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-skyatlas { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-diamond { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-diamond:before { + content: "\f3a5"; } + +.fa.fa-transgender:before { + content: "\f224"; } + +.fa.fa-intersex:before { + content: "\f224"; } + +.fa.fa-transgender-alt:before { + content: "\f225"; } + +.fa.fa-facebook-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-facebook-official:before { + content: "\f09a"; } + +.fa.fa-pinterest-p { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-whatsapp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-hotel:before { + content: "\f236"; } + +.fa.fa-viacoin { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-medium { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yc:before { + content: "\f23b"; } + +.fa.fa-optin-monster { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-opencart { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-expeditedssl { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-battery-4:before { + content: "\f240"; } + +.fa.fa-battery:before { + content: "\f240"; } + +.fa.fa-battery-3:before { + content: "\f241"; } + +.fa.fa-battery-2:before { + content: "\f242"; } + +.fa.fa-battery-1:before { + content: "\f243"; } + +.fa.fa-battery-0:before { + content: "\f244"; } + +.fa.fa-object-group { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-object-ungroup { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sticky-note-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-sticky-note-o:before { + content: "\f249"; } + +.fa.fa-cc-jcb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-cc-diners-club { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-clone { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hourglass-o:before { + content: "\f254"; } + +.fa.fa-hourglass-1:before { + content: "\f251"; } + +.fa.fa-hourglass-2:before { + content: "\f252"; } + +.fa.fa-hourglass-3:before { + content: "\f253"; } + +.fa.fa-hand-rock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-rock-o:before { + content: "\f255"; } + +.fa.fa-hand-grab-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-grab-o:before { + content: "\f255"; } + +.fa.fa-hand-paper-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-paper-o:before { + content: "\f256"; } + +.fa.fa-hand-stop-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-stop-o:before { + content: "\f256"; } + +.fa.fa-hand-scissors-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-scissors-o:before { + content: "\f257"; } + +.fa.fa-hand-lizard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-lizard-o:before { + content: "\f258"; } + +.fa.fa-hand-spock-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-spock-o:before { + content: "\f259"; } + +.fa.fa-hand-pointer-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-pointer-o:before { + content: "\f25a"; } + +.fa.fa-hand-peace-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-hand-peace-o:before { + content: "\f25b"; } + +.fa.fa-registered { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-creative-commons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gg { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gg-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa.fa-get-pocket { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wikipedia-w { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-safari { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-chrome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-firefox { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-opera { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-internet-explorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-television:before { + content: "\f26c"; } + +.fa.fa-contao { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-500px { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-amazon { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-calendar-plus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-plus-o:before { + content: "\f271"; } + +.fa.fa-calendar-minus-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-minus-o:before { + content: "\f272"; } + +.fa.fa-calendar-times-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-times-o:before { + content: "\f273"; } + +.fa.fa-calendar-check-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-calendar-check-o:before { + content: "\f274"; } + +.fa.fa-map-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-map-o:before { + content: "\f279"; } + +.fa.fa-commenting:before { + content: "\f4ad"; } + +.fa.fa-commenting-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-commenting-o:before { + content: "\f4ad"; } + +.fa.fa-houzz { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-vimeo:before { + content: "\f27d"; } + +.fa.fa-black-tie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fonticons { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-reddit-alien { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-edge { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-credit-card-alt:before { + content: "\f09d"; } + +.fa.fa-codiepie { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-modx { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fort-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-usb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-product-hunt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-mixcloud { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-scribd { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-pause-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-pause-circle-o:before { + content: "\f28b"; } + +.fa.fa-stop-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-stop-circle-o:before { + content: "\f28d"; } + +.fa.fa-bluetooth { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-bluetooth-b { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-gitlab { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpbeginner { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpforms { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-envira { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt:before { + content: "\f368"; } + +.fa.fa-question-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-question-circle-o:before { + content: "\f059"; } + +.fa.fa-volume-control-phone:before { + content: "\f2a0"; } + +.fa.fa-asl-interpreting:before { + content: "\f2a3"; } + +.fa.fa-deafness:before { + content: "\f2a4"; } + +.fa.fa-hard-of-hearing:before { + content: "\f2a4"; } + +.fa.fa-glide { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-glide-g { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-signing:before { + content: "\f2a7"; } + +.fa.fa-viadeo { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa.fa-snapchat { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-ghost { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa.fa-snapchat-square { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa.fa-pied-piper { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-first-order { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-yoast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-themeisle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official:before { + content: "\f2b3"; } + +.fa.fa-google-plus-circle { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-circle:before { + content: "\f2b3"; } + +.fa.fa-font-awesome { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fa { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-fa:before { + content: "\f2b4"; } + +.fa.fa-handshake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-handshake-o:before { + content: "\f2b5"; } + +.fa.fa-envelope-open-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-envelope-open-o:before { + content: "\f2b6"; } + +.fa.fa-linode { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-address-book-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-address-book-o:before { + content: "\f2b9"; } + +.fa.fa-vcard:before { + content: "\f2bb"; } + +.fa.fa-address-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-address-card-o:before { + content: "\f2bb"; } + +.fa.fa-vcard-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-vcard-o:before { + content: "\f2bb"; } + +.fa.fa-user-circle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-user-circle-o:before { + content: "\f2bd"; } + +.fa.fa-user-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-user-o:before { + content: "\f007"; } + +.fa.fa-id-badge { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-drivers-license:before { + content: "\f2c2"; } + +.fa.fa-id-card-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-id-card-o:before { + content: "\f2c2"; } + +.fa.fa-drivers-license-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-drivers-license-o:before { + content: "\f2c2"; } + +.fa.fa-quora { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-free-code-camp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-telegram { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-thermometer-4:before { + content: "\f2c7"; } + +.fa.fa-thermometer:before { + content: "\f2c7"; } + +.fa.fa-thermometer-3:before { + content: "\f2c8"; } + +.fa.fa-thermometer-2:before { + content: "\f2c9"; } + +.fa.fa-thermometer-1:before { + content: "\f2ca"; } + +.fa.fa-thermometer-0:before { + content: "\f2cb"; } + +.fa.fa-bathtub:before { + content: "\f2cd"; } + +.fa.fa-s15:before { + content: "\f2cd"; } + +.fa.fa-window-maximize { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-window-restore { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-rectangle:before { + content: "\f410"; } + +.fa.fa-window-close-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-window-close-o:before { + content: "\f410"; } + +.fa.fa-times-rectangle-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-times-rectangle-o:before { + content: "\f410"; } + +.fa.fa-bandcamp { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-grav { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-etsy { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-imdb { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-ravelry { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-eercast { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-eercast:before { + content: "\f2da"; } + +.fa.fa-snowflake-o { + font-family: 'Font Awesome 6 Free'; + font-weight: 400; } + +.fa.fa-snowflake-o:before { + content: "\f2dc"; } + +.fa.fa-superpowers { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-wpexplorer { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } + +.fa.fa-meetup { + font-family: 'Font Awesome 6 Brands'; + font-weight: 400; } diff --git a/docs/dev/deps/font-awesome-6.5.2/css/v4-shims.min.css b/docs/dev/deps/font-awesome-6.5.2/css/v4-shims.min.css new file mode 100644 index 00000000..09baf5fc --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/css/v4-shims.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2024 Fonticons, Inc. + */ +.fa.fa-glass:before{content:"\f000"}.fa.fa-envelope-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-star-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-home:before{content:"\f015"}.fa.fa-file-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-list-alt:before{content:"\f022"}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-edit{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-edit:before{content:"\f044"}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart-o:before,.fa.fa-bar-chart:before{content:"\e0e3"}.fa.fa-twitter-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-twitter-square:before{content:"\f081"}.fa.fa-facebook-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-square:before{content:"\f082"}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-github-square:before{content:"\f092"}.fa.fa-lemon-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-globe:before{content:"\f57d"}.fa.fa-tasks:before{content:"\f828"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-cut:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-save{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-save:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-magic:before{content:"\e2ca"}.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-pinterest-square:before{content:"\f0d3"}.fa.fa-google-plus-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-square:before{content:"\f0d4"}.fa.fa-google-plus{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f625"}.fa.fa-comment-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard:before{content:"\f0ea"}.fa.fa-lightbulb-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f0ed"}.fa.fa-cloud-upload:before{content:"\f0ee"}.fa.fa-bell-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f5c0"}.fa.fa-star-half-empty{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f5c0"}.fa.fa-star-half-full{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f5c0"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before,.fa.fa-unlink:before{content:"\f127"}.fa.fa-calendar-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-unlock-alt:before{content:"\f09c"}.fa.fa-minus-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\24"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\e1bc"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f884"}.fa.fa-sort-amount-desc:before{content:"\f160"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-youtube-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-youtube-square:before{content:"\f431"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-xing-square:before{content:"\f169"}.fa.fa-youtube-play{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-tumblr-square:before{content:"\f174"}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-vimeo-square:before{content:"\f194"}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\e2bb"}.fa.fa-plus-square-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-google,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-yahoo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-reddit-square:before{content:"\f1a2"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-behance-square:before{content:"\f1b5"}.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-steam-square:before{content:"\f1b7"}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-cab:before{content:"\f1ba"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-life-bouy:before,.fa.fa-life-buoy:before,.fa.fa-life-saver:before,.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-git-square:before{content:"\f1d2"}.fa.fa-git,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-futbol-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-lastfm-square:before{content:"\f203"}.fa.fa-angellist,.fa.fa-ioxhost{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before,.fa.fa-transgender:before{content:"\f224"}.fa.fa-transgender-alt:before{content:"\f225"}.fa.fa-facebook-official{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-clone{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-creative-commons,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-odnoklassniki-square:before{content:"\f264"}.fa.fa-chrome,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-internet-explorer,.fa.fa-opera,.fa.fa-safari,.fa.fa-wikipedia-w{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-viadeo,.fa.fa-viadeo-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-viadeo-square:before{content:"\f2aa"}.fa.fa-snapchat,.fa.fa-snapchat-ghost{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-snapchat-ghost:before{content:"\f2ab"}.fa.fa-snapchat-square{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-snapchat-square:before{content:"\f2ad"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-themeisle,.fa.fa-yoast{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 6 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 6 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-meetup,.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 6 Brands";font-weight:400}
\ No newline at end of file diff --git a/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-brands-400.ttf b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-brands-400.ttf Binary files differnew file mode 100644 index 00000000..1fbb1f7c --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-brands-400.ttf diff --git a/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-brands-400.woff2 b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-brands-400.woff2 Binary files differnew file mode 100644 index 00000000..5d280216 --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-brands-400.woff2 diff --git a/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-regular-400.ttf b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-regular-400.ttf Binary files differnew file mode 100644 index 00000000..549d68dc --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-regular-400.ttf diff --git a/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-regular-400.woff2 b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-regular-400.woff2 Binary files differnew file mode 100644 index 00000000..18400d7f --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-regular-400.woff2 diff --git a/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-solid-900.ttf b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-solid-900.ttf Binary files differnew file mode 100644 index 00000000..bb2a8695 --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-solid-900.ttf diff --git a/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-solid-900.woff2 b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-solid-900.woff2 Binary files differnew file mode 100644 index 00000000..758dd4f6 --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-solid-900.woff2 diff --git a/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.ttf b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.ttf Binary files differnew file mode 100644 index 00000000..8c5864c4 --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.ttf diff --git a/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.woff2 b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.woff2 Binary files differnew file mode 100644 index 00000000..f94bec22 --- /dev/null +++ b/docs/dev/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.woff2 diff --git a/docs/dev/deps/headroom-0.11.0/headroom.min.js b/docs/dev/deps/headroom-0.11.0/headroom.min.js new file mode 100644 index 00000000..433069fd --- /dev/null +++ b/docs/dev/deps/headroom-0.11.0/headroom.min.js @@ -0,0 +1,7 @@ +/*! + * headroom.js v0.11.0 - Give your page some headroom. Hide your header until you need it + * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js + * License: MIT + */ + +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=l<t?"down":"up",a.distance=Math.abs(t-l),a.isOutOfBounds=t<0||o<t+n,a.top=t<=s.offset,a.bottom=o<=t+n,a.toleranceExceeded=a.distance>s.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t,n){n=n||{},Object.assign(this,o.options,n),this.classes=Object.assign({},o.options.classes,n.classes),this.elem=t,this.tolerance=function(t){return t===Object(t)?t:{down:t,up:t}}(this.tolerance),this.initialised=!1,this.frozen=!1}return o.prototype={constructor:o,init:function(){return o.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},o.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},o.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),o});
\ No newline at end of file diff --git a/docs/dev/deps/headroom-0.11.0/jQuery.headroom.min.js b/docs/dev/deps/headroom-0.11.0/jQuery.headroom.min.js new file mode 100644 index 00000000..17f70c9e --- /dev/null +++ b/docs/dev/deps/headroom-0.11.0/jQuery.headroom.min.js @@ -0,0 +1,7 @@ +/*! + * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it + * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js + * License: MIT + */ + +!function(a){a&&(a.fn.headroom=function(b){return this.each(function(){var c=a(this),d=c.data("headroom"),e="object"==typeof b&&b;e=a.extend(!0,{},Headroom.options,e),d||(d=new Headroom(this,e),d.init(),c.data("headroom",d)),"string"==typeof b&&(d[b](),"destroy"===b&&c.removeData("headroom"))})},a("[data-headroom]").each(function(){var b=a(this);b.headroom(b.data())}))}(window.Zepto||window.jQuery);
\ No newline at end of file diff --git a/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.js b/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.js new file mode 100644 index 00000000..fc6c299b --- /dev/null +++ b/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.js @@ -0,0 +1,10881 @@ +/*! + * jQuery JavaScript Library v3.6.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2021-03-02T17:08Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML <object> elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.6 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2021-02-16 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" + + "<select id='" + expando + "-\r\\' msallowcapture=''>" + + "<option selected=''></option></select>"; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "<a href='' disabled='disabled'></a>" + + "<select disabled='disabled'><option/></select>"; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = "<a href='#'></a>"; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = "<input/>"; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // <object> elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = "<textarea>x</textarea>"; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces <option> tags with their contents when inserted outside of + // the select element. + div.innerHTML = "<option></option>"; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting <tbody> or other required elements. + thead: [ 1, "<table>", "</table>" ], + col: [ 2, "<table><colgroup>", "</colgroup></table>" ], + tr: [ 2, "<table><tbody>", "</tbody></table>" ], + td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG <use> instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /<script|<style|<link/i, + + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( "<script>" ) + .attr( s.scriptAttrs || {} ) + .prop( { charset: s.scriptCharset, src: s.url } ) + .on( "load error", callback = function( evt ) { + script.remove(); + callback = null; + if ( evt ) { + complete( evt.type === "error" ? 404 : 200, evt.type ); + } + } ); + + // Use native DOM manipulation to avoid our domManip AJAX trickery + document.head.appendChild( script[ 0 ] ); + }, + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +var oldCallbacks = [], + rjsonp = /(=)\?(?=&|$)|\?\?/; + +// Default jsonp settings +jQuery.ajaxSetup( { + jsonp: "callback", + jsonpCallback: function() { + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) ); + this[ callback ] = true; + return callback; + } +} ); + +// Detect, normalize options and install callbacks for jsonp requests +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { + + var callbackName, overwritten, responseContainer, + jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? + "url" : + typeof s.data === "string" && + ( s.contentType || "" ) + .indexOf( "application/x-www-form-urlencoded" ) === 0 && + rjsonp.test( s.data ) && "data" + ); + + // Handle iff the expected data type is "jsonp" or we have a parameter to set + if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { + + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? + s.jsonpCallback() : + s.jsonpCallback; + + // Insert callback into url or form data + if ( jsonProp ) { + s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); + } else if ( s.jsonp !== false ) { + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; + } + + // Use data converter to retrieve json after script execution + s.converters[ "script json" ] = function() { + if ( !responseContainer ) { + jQuery.error( callbackName + " was not called" ); + } + return responseContainer[ 0 ]; + }; + + // Force json dataType + s.dataTypes[ 0 ] = "json"; + + // Install callback + overwritten = window[ callbackName ]; + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always( function() { + + // If previous value didn't exist - remove it + if ( overwritten === undefined ) { + jQuery( window ).removeProp( callbackName ); + + // Otherwise restore preexisting value + } else { + window[ callbackName ] = overwritten; + } + + // Save back as free + if ( s[ callbackName ] ) { + + // Make sure that re-using the options doesn't screw things around + s.jsonpCallback = originalSettings.jsonpCallback; + + // Save the callback name for future use + oldCallbacks.push( callbackName ); + } + + // Call if it was a function and we have a response + if ( responseContainer && isFunction( overwritten ) ) { + overwritten( responseContainer[ 0 ] ); + } + + responseContainer = overwritten = undefined; + } ); + + // Delegate to script + return "script"; + } +} ); + + + + +// Support: Safari 8 only +// In Safari 8 documents created via document.implementation.createHTMLDocument +// collapse sibling forms: the second one becomes a child of the first one. +// Because of that, this security measure has to be disabled in Safari 8. +// https://bugs.webkit.org/show_bug.cgi?id=137337 +support.createHTMLDocument = ( function() { + var body = document.implementation.createHTMLDocument( "" ).body; + body.innerHTML = "<form></form><form></form>"; + return body.childNodes.length === 2; +} )(); + + +// Argument "data" should be string of html +// context (optional): If specified, the fragment will be created in this context, +// defaults to document +// keepScripts (optional): If true, will include scripts passed in the html string +jQuery.parseHTML = function( data, context, keepScripts ) { + if ( typeof data !== "string" ) { + return []; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + + var base, parsed, scripts; + + if ( !context ) { + + // Stop scripts or inline event handlers from being executed immediately + // by using document.implementation + if ( support.createHTMLDocument ) { + context = document.implementation.createHTMLDocument( "" ); + + // Set the base href for the created document + // so any parsed elements with URLs + // are based on the document's URL (gh-2965) + base = context.createElement( "base" ); + base.href = document.location.href; + context.head.appendChild( base ); + } else { + context = document; + } + } + + parsed = rsingleTag.exec( data ); + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[ 1 ] ) ]; + } + + parsed = buildFragment( [ data ], context, scripts ); + + if ( scripts && scripts.length ) { + jQuery( scripts ).remove(); + } + + return jQuery.merge( [], parsed.childNodes ); +}; + + +/** + * Load a url into a page + */ +jQuery.fn.load = function( url, params, callback ) { + var selector, type, response, + self = this, + off = url.indexOf( " " ); + + if ( off > -1 ) { + selector = stripAndCollapse( url.slice( off ) ); + url = url.slice( 0, off ); + } + + // If it's a function + if ( isFunction( params ) ) { + + // We assume that it's the callback + callback = params; + params = undefined; + + // Otherwise, build a param string + } else if ( params && typeof params === "object" ) { + type = "POST"; + } + + // If we have elements to modify, make the request + if ( self.length > 0 ) { + jQuery.ajax( { + url: url, + + // If "type" variable is undefined, then "GET" method will be used. + // Make value of this field explicit since + // user can override it through ajaxSetup method + type: type || "GET", + dataType: "html", + data: params + } ).done( function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + self.html( selector ? + + // If a selector was specified, locate the right elements in a dummy div + // Exclude scripts to avoid IE 'Permission Denied' errors + jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : + + // Otherwise use the full result + responseText ); + + // If the request succeeds, this function gets "data", "status", "jqXHR" + // but they are ignored because response was set above. + // If it fails, this function gets "jqXHR", "status", "error" + } ).always( callback && function( jqXHR, status ) { + self.each( function() { + callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); + } ); + } ); + } + + return this; +}; + + + + +jQuery.expr.pseudos.animated = function( elem ) { + return jQuery.grep( jQuery.timers, function( fn ) { + return elem === fn.elem; + } ).length; +}; + + + + +jQuery.offset = { + setOffset: function( elem, options, i ) { + var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, + position = jQuery.css( elem, "position" ), + curElem = jQuery( elem ), + props = {}; + + // Set position first, in-case top/left are set even on static elem + if ( position === "static" ) { + elem.style.position = "relative"; + } + + curOffset = curElem.offset(); + curCSSTop = jQuery.css( elem, "top" ); + curCSSLeft = jQuery.css( elem, "left" ); + calculatePosition = ( position === "absolute" || position === "fixed" ) && + ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; + + // Need to be able to calculate position if either + // top or left is auto and position is either absolute or fixed + if ( calculatePosition ) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + + } else { + curTop = parseFloat( curCSSTop ) || 0; + curLeft = parseFloat( curCSSLeft ) || 0; + } + + if ( isFunction( options ) ) { + + // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) + options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); + } + + if ( options.top != null ) { + props.top = ( options.top - curOffset.top ) + curTop; + } + if ( options.left != null ) { + props.left = ( options.left - curOffset.left ) + curLeft; + } + + if ( "using" in options ) { + options.using.call( elem, props ); + + } else { + curElem.css( props ); + } + } +}; + +jQuery.fn.extend( { + + // offset() relates an element's border box to the document origin + offset: function( options ) { + + // Preserve chaining for setter + if ( arguments.length ) { + return options === undefined ? + this : + this.each( function( i ) { + jQuery.offset.setOffset( this, options, i ); + } ); + } + + var rect, win, + elem = this[ 0 ]; + + if ( !elem ) { + return; + } + + // Return zeros for disconnected and hidden (display: none) elements (gh-2310) + // Support: IE <=11 only + // Running getBoundingClientRect on a + // disconnected node in IE throws an error + if ( !elem.getClientRects().length ) { + return { top: 0, left: 0 }; + } + + // Get document-relative position by adding viewport scroll to viewport-relative gBCR + rect = elem.getBoundingClientRect(); + win = elem.ownerDocument.defaultView; + return { + top: rect.top + win.pageYOffset, + left: rect.left + win.pageXOffset + }; + }, + + // position() relates an element's margin box to its offset parent's padding box + // This corresponds to the behavior of CSS absolute positioning + position: function() { + if ( !this[ 0 ] ) { + return; + } + + var offsetParent, offset, doc, + elem = this[ 0 ], + parentOffset = { top: 0, left: 0 }; + + // position:fixed elements are offset from the viewport, which itself always has zero offset + if ( jQuery.css( elem, "position" ) === "fixed" ) { + + // Assume position:fixed implies availability of getBoundingClientRect + offset = elem.getBoundingClientRect(); + + } else { + offset = this.offset(); + + // Account for the *real* offset parent, which can be the document or its root element + // when a statically positioned element is identified + doc = elem.ownerDocument; + offsetParent = elem.offsetParent || doc.documentElement; + while ( offsetParent && + ( offsetParent === doc.body || offsetParent === doc.documentElement ) && + jQuery.css( offsetParent, "position" ) === "static" ) { + + offsetParent = offsetParent.parentNode; + } + if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) { + + // Incorporate borders into its offset, since they are outside its content origin + parentOffset = jQuery( offsetParent ).offset(); + parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true ); + parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true ); + } + } + + // Subtract parent offsets and element margins + return { + top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), + left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) + }; + }, + + // This method will return documentElement in the following cases: + // 1) For the element inside the iframe without offsetParent, this method will return + // documentElement of the parent window + // 2) For the hidden or detached element + // 3) For body or html element, i.e. in case of the html node - it will return itself + // + // but those exceptions were never presented as a real life use-cases + // and might be considered as more preferable results. + // + // This logic, however, is not guaranteed and can change at any point in the future + offsetParent: function() { + return this.map( function() { + var offsetParent = this.offsetParent; + + while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { + offsetParent = offsetParent.offsetParent; + } + + return offsetParent || documentElement; + } ); + } +} ); + +// Create scrollLeft and scrollTop methods +jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { + var top = "pageYOffset" === prop; + + jQuery.fn[ method ] = function( val ) { + return access( this, function( elem, method, val ) { + + // Coalesce documents and windows + var win; + if ( isWindow( elem ) ) { + win = elem; + } else if ( elem.nodeType === 9 ) { + win = elem.defaultView; + } + + if ( val === undefined ) { + return win ? win[ prop ] : elem[ method ]; + } + + if ( win ) { + win.scrollTo( + !top ? val : win.pageXOffset, + top ? val : win.pageYOffset + ); + + } else { + elem[ method ] = val; + } + }, method, val, arguments.length ); + }; +} ); + +// Support: Safari <=7 - 9.1, Chrome <=37 - 49 +// Add the top/left cssHooks using jQuery.fn.position +// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 +// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 +// getComputedStyle returns percent when specified for top/left/bottom/right; +// rather than make the css module depend on the offset module, just check for it here +jQuery.each( [ "top", "left" ], function( _i, prop ) { + jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, + function( elem, computed ) { + if ( computed ) { + computed = curCSS( elem, prop ); + + // If curCSS returns percentage, fallback to offset + return rnumnonpx.test( computed ) ? + jQuery( elem ).position()[ prop ] + "px" : + computed; + } + } + ); +} ); + + +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { + jQuery.each( { + padding: "inner" + name, + content: type, + "": "outer" + name + }, function( defaultExtra, funcName ) { + + // Margin is only for outerHeight, outerWidth + jQuery.fn[ funcName ] = function( margin, value ) { + var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), + extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); + + return access( this, function( elem, type, value ) { + var doc; + + if ( isWindow( elem ) ) { + + // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) + return funcName.indexOf( "outer" ) === 0 ? + elem[ "inner" + name ] : + elem.document.documentElement[ "client" + name ]; + } + + // Get document width or height + if ( elem.nodeType === 9 ) { + doc = elem.documentElement; + + // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], + // whichever is greatest + return Math.max( + elem.body[ "scroll" + name ], doc[ "scroll" + name ], + elem.body[ "offset" + name ], doc[ "offset" + name ], + doc[ "client" + name ] + ); + } + + return value === undefined ? + + // Get width or height on the element, requesting but not forcing parseFloat + jQuery.css( elem, type, extra ) : + + // Set width or height on the element + jQuery.style( elem, type, value, extra ); + }, type, chainable ? margin : undefined, chainable ); + }; + } ); +} ); + + +jQuery.each( [ + "ajaxStart", + "ajaxStop", + "ajaxComplete", + "ajaxError", + "ajaxSuccess", + "ajaxSend" +], function( _i, type ) { + jQuery.fn[ type ] = function( fn ) { + return this.on( type, fn ); + }; +} ); + + + + +jQuery.fn.extend( { + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? + this.off( selector, "**" ) : + this.off( types, selector || "**", fn ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + +jQuery.each( + ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( _i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + } +); + + + + +// Support: Android <=4.0 only +// Make sure we trim BOM and NBSP +var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + +// Bind a function to a context, optionally partially applying any +// arguments. +// jQuery.proxy is deprecated to promote standards (specifically Function#bind) +// However, it is not slated for removal any time soon +jQuery.proxy = function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; +}; + +jQuery.holdReady = function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } +}; +jQuery.isArray = Array.isArray; +jQuery.parseJSON = JSON.parse; +jQuery.nodeName = nodeName; +jQuery.isFunction = isFunction; +jQuery.isWindow = isWindow; +jQuery.camelCase = camelCase; +jQuery.type = toType; + +jQuery.now = Date.now; + +jQuery.isNumeric = function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); +}; + +jQuery.trim = function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); +}; + + + +// Register as a named AMD module, since jQuery can be concatenated with other +// files that may use define, but not via a proper concatenation script that +// understands anonymous AMD modules. A named AMD is safest and most robust +// way to register. Lowercase jquery is used because AMD module names are +// derived from file names, and jQuery is normally delivered in a lowercase +// file name. Do this after creating the global so that if an AMD module wants +// to call noConflict to hide this version of jQuery, it will work. + +// Note that for maximum portability, libraries that are not jQuery should +// declare themselves as anonymous modules, and avoid setting a global if an +// AMD loader is present. jQuery is a special case. For more information, see +// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon + +if ( typeof define === "function" && define.amd ) { + define( "jquery", [], function() { + return jQuery; + } ); +} + + + + +var + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$; + +jQuery.noConflict = function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; +}; + +// Expose jQuery and $ identifiers, even in AMD +// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) +// and CommonJS for browser emulators (#13566) +if ( typeof noGlobal === "undefined" ) { + window.jQuery = window.$ = jQuery; +} + + + + +return jQuery; +} ); diff --git a/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.min.js b/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.min.js new file mode 100644 index 00000000..c4c6022f --- /dev/null +++ b/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S}); diff --git a/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.min.map b/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.min.map new file mode 100644 index 00000000..7d86eb16 --- /dev/null +++ b/docs/dev/deps/jquery-3.6.0/jquery-3.6.0.min.map @@ -0,0 +1 @@ +{"version":3,"sources":["jquery-3.6.0.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","flat","array","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","item","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery-3.6.0.min.js"}
\ No newline at end of file diff --git a/docs/dev/deps/search-1.0.0/autocomplete.jquery.min.js b/docs/dev/deps/search-1.0.0/autocomplete.jquery.min.js new file mode 100644 index 00000000..fb63a6a2 --- /dev/null +++ b/docs/dev/deps/search-1.0.0/autocomplete.jquery.min.js @@ -0,0 +1,7 @@ +/*! + * autocomplete.js 0.38.0 + * https://github.com/algolia/autocomplete.js + * Copyright 2020 Algolia, Inc. and other contributors; Licensed MIT + */ +!function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";a.exports=c(1)},function(a,b,c){"use strict";var d=c(2),e=c(3);d.element=e;var f=c(4);f.isArray=e.isArray,f.isFunction=e.isFunction,f.isObject=e.isPlainObject,f.bind=e.proxy,f.each=function(a,b){function c(a,c){return b(c,a)}e.each(a,c)},f.map=e.map,f.mixin=e.extend,f.Event=e.Event;var g,h,i,j=c(5),k=c(6);g=e.fn.autocomplete,h="aaAutocomplete",i={initialize:function(a,b){function c(){var c,d=e(this),f=new k({el:d});c=new j({input:d,eventBus:f,dropdownMenuContainer:a.dropdownMenuContainer,hint:void 0===a.hint||!!a.hint,minLength:a.minLength,autoselect:a.autoselect,autoselectOnBlur:a.autoselectOnBlur,tabAutocomplete:a.tabAutocomplete,openOnFocus:a.openOnFocus,templates:a.templates,debug:a.debug,clearOnSelected:a.clearOnSelected,cssClasses:a.cssClasses,datasets:b,keyboardShortcuts:a.keyboardShortcuts,appendTo:a.appendTo,autoWidth:a.autoWidth}),d.data(h,c)}return b=f.isArray(b)?b:[].slice.call(arguments,1),a=a||{},this.each(c)},open:function(){function a(){var a,b=e(this);(a=b.data(h))&&a.open()}return this.each(a)},close:function(){function a(){var a,b=e(this);(a=b.data(h))&&a.close()}return this.each(a)},val:function(a){function b(){var b,c=e(this);(b=c.data(h))&&b.setVal(a)}return arguments.length?this.each(b):function(a){var b,c;return(b=a.data(h))&&(c=b.getVal()),c}(this.first())},destroy:function(){function a(){var a,b=e(this);(a=b.data(h))&&(a.destroy(),b.removeData(h))}return this.each(a)}},e.fn.autocomplete=function(a){var b;return i[a]&&"initialize"!==a?(b=this.filter(function(){return!!e(this).data(h)}),i[a].apply(b,[].slice.call(arguments,1))):i.initialize.apply(this,arguments)},e.fn.autocomplete.noConflict=function(){return e.fn.autocomplete=g,this},e.fn.autocomplete.sources=j.sources,e.fn.autocomplete.escapeHighlightedString=f.escapeHighlightedString,a.exports=e.fn.autocomplete},function(a,b){"use strict";a.exports={element:null}},function(a,b){a.exports=jQuery},function(a,b,c){"use strict";function d(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var e=c(2);a.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(a){if(void 0===a&&(a=navigator.userAgent),/(msie|trident)/i.test(a)){var b=a.match(/(msie |rv:)(\d+(.\d+)?)/i);if(b)return b[2]}return!1},escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(a){return"number"==typeof a},toStr:function(a){return void 0===a||null===a?"":a+""},cloneDeep:function(a){var b=this.mixin({},a),c=this;return this.each(b,function(a,d){a&&(c.isArray(a)?b[d]=[].concat(a):c.isObject(a)&&(b[d]=c.cloneDeep(a)))}),b},error:function(a){throw new Error(a)},every:function(a,b){var c=!0;return a?(this.each(a,function(d,e){c&&(c=b.call(null,d,e,a)&&c)}),!!c):c},any:function(a,b){var c=!1;return a?(this.each(a,function(d,e){if(b.call(null,d,e,a))return c=!0,!1}),c):c},getUniqueId:function(){var a=0;return function(){return a++}}(),templatify:function(a){if(this.isFunction(a))return a;var b=e.element(a);return"SCRIPT"===b.prop("tagName")?function(){return b.text()}:function(){return String(a)}},defer:function(a){setTimeout(a,0)},noop:function(){},formatPrefix:function(a,b){return b?"":a+"-"},className:function(a,b,c){return(c?"":".")+a+b},escapeHighlightedString:function(a,b,c){b=b||"<em>";var e=document.createElement("div");e.appendChild(document.createTextNode(b)),c=c||"</em>";var f=document.createElement("div");f.appendChild(document.createTextNode(c));var g=document.createElement("div");return g.appendChild(document.createTextNode(a)),g.innerHTML.replace(RegExp(d(e.innerHTML),"g"),b).replace(RegExp(d(f.innerHTML),"g"),c)}}},function(a,b,c){"use strict";function d(a){var b,c;if(a=a||{},a.input||i.error("missing input"),this.isActivated=!1,this.debug=!!a.debug,this.autoselect=!!a.autoselect,this.autoselectOnBlur=!!a.autoselectOnBlur,this.openOnFocus=!!a.openOnFocus,this.minLength=i.isNumber(a.minLength)?a.minLength:1,this.autoWidth=void 0===a.autoWidth||!!a.autoWidth,this.clearOnSelected=!!a.clearOnSelected,this.tabAutocomplete=void 0===a.tabAutocomplete||!!a.tabAutocomplete,a.hint=!!a.hint,a.hint&&a.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=a.css=i.mixin({},o,a.appendTo?o.appendTo:{}),this.cssClasses=a.cssClasses=i.mixin({},o.defaultClasses,a.cssClasses||{}),this.cssClasses.prefix=a.cssClasses.formattedPrefix=i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=a.listboxId=[this.cssClasses.root,"listbox",i.getUniqueId()].join("-");var f=e(a);this.$node=f.wrapper;var g=this.$input=f.input;b=f.menu,c=f.hint,a.dropdownMenuContainer&&j.element(a.dropdownMenuContainer).css("position","relative").append(b.css("top","0")),g.on("blur.aa",function(a){var c=document.activeElement;i.isMsie()&&(b[0]===c||b[0].contains(c))&&(a.preventDefault(),a.stopImmediatePropagation(),i.defer(function(){g.focus()}))}),b.on("mousedown.aa",function(a){a.preventDefault()}),this.eventBus=a.eventBus||new k({el:g}),this.dropdown=new d.Dropdown({appendTo:a.appendTo,wrapper:this.$node,menu:b,datasets:a.datasets,templates:a.templates,cssClasses:a.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new d.Input({input:g,hint:c}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(a),this._setLanguageDirection()}function e(a){var b,c,d,e;b=j.element(a.input),c=j.element(n.wrapper.replace("%ROOT%",a.cssClasses.root)).css(a.css.wrapper),a.appendTo||"block"!==b.css("display")||"table"!==b.parent().css("display")||c.css("display","table-cell");var g=n.dropdown.replace("%PREFIX%",a.cssClasses.prefix).replace("%DROPDOWN_MENU%",a.cssClasses.dropdownMenu);d=j.element(g).css(a.css.dropdown).attr({role:"listbox",id:a.listboxId}),a.templates&&a.templates.dropdownMenu&&d.html(i.templatify(a.templates.dropdownMenu)()),e=b.clone().css(a.css.hint).css(f(b)),e.val("").addClass(i.className(a.cssClasses.prefix,a.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),e.removeData&&e.removeData(),b.data(h,{"aria-autocomplete":b.attr("aria-autocomplete"),"aria-expanded":b.attr("aria-expanded"),"aria-owns":b.attr("aria-owns"),autocomplete:b.attr("autocomplete"),dir:b.attr("dir"),role:b.attr("role"),spellcheck:b.attr("spellcheck"),style:b.attr("style"),type:b.attr("type")}),b.addClass(i.className(a.cssClasses.prefix,a.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":a.datasets&&a.datasets[0]&&a.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":a.ariaLabel,"aria-owns":a.listboxId}).css(a.hint?a.css.input:a.css.inputWithNoHint);try{b.attr("dir")||b.attr("dir","auto")}catch(a){}return c=a.appendTo?c.appendTo(j.element(a.appendTo).eq(0)).eq(0):b.wrap(c).parent(),c.prepend(a.hint?e:null).append(d),{wrapper:c,input:b,hint:e,menu:d}}function f(a){return{backgroundAttachment:a.css("background-attachment"),backgroundClip:a.css("background-clip"),backgroundColor:a.css("background-color"),backgroundImage:a.css("background-image"),backgroundOrigin:a.css("background-origin"),backgroundPosition:a.css("background-position"),backgroundRepeat:a.css("background-repeat"),backgroundSize:a.css("background-size")}}function g(a,b){var c=a.find(i.className(b.prefix,b.input));i.each(c.data(h),function(a,b){void 0===a?c.removeAttr(b):c.attr(b,a)}),c.detach().removeClass(i.className(b.prefix,b.input,!0)).insertAfter(a),c.removeData&&c.removeData(h),a.remove()}var h="aaAttrs",i=c(4),j=c(2),k=c(6),l=c(7),m=c(16),n=c(18),o=c(19);i.mixin(d.prototype,{_bindKeyboardShortcuts:function(a){if(a.keyboardShortcuts){var b=this.$input,c=[];i.each(a.keyboardShortcuts,function(a){"string"==typeof a&&(a=a.toUpperCase().charCodeAt(0)),c.push(a)}),j.element(document).keydown(function(a){var d=a.target||a.srcElement,e=d.tagName;if(!d.isContentEditable&&"INPUT"!==e&&"SELECT"!==e&&"TEXTAREA"!==e){var f=a.which||a.keyCode;c.indexOf(f)!==-1&&(b.focus(),a.stopPropagation(),a.preventDefault())}})}},_onSuggestionClicked:function(a,b){var c,d={selectionMethod:"click"};(c=this.dropdown.getDatumForSuggestion(b))&&this._select(c,d)},_onCursorMoved:function(a,b){var c=this.dropdown.getDatumForCursor(),d=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(d),c&&(b&&this.input.setInputValue(c.value,!0),this.eventBus.trigger("cursorchanged",c.raw,c.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var a=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",a.width+"px");var b=this.$node[0].getBoundingClientRect(),c=a.bottom-b.top;this.$node.css("top",c+"px");var d=a.left-b.left;this.$node.css("left",d+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var a=this.input.getQuery();a.length>=this.minLength?this.dropdown.update(a):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var a,b;a=this.dropdown.getDatumForCursor(),b=this.dropdown.getDatumForTopSuggestion();var c={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&a?this._select(a,c):this.autoselectOnBlur&&b?this._select(b,c):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(a,b){var c,d;c=this.dropdown.getDatumForCursor(),d=this.dropdown.getDatumForTopSuggestion();var e={selectionMethod:"enterKey"};c?(this._select(c,e),b.preventDefault()):this.autoselect&&d&&(this._select(d,e),b.preventDefault())},_onTabKeyed:function(a,b){if(!this.tabAutocomplete)return void this.dropdown.close();var c,d={selectionMethod:"tabKey"};(c=this.dropdown.getDatumForCursor())?(this._select(c,d),b.preventDefault()):this._autocomplete(!0)},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var a=this.input.getQuery();this.dropdown.isEmpty&&a.length>=this.minLength?this.dropdown.update(a):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var a=this.input.getQuery();this.dropdown.isEmpty&&a.length>=this.minLength?this.dropdown.update(a):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(a,b){this.input.clearHintIfInvalid(),b.length>=this.minLength?this.dropdown.update(b):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var a=this.input.getLanguageDirection();this.dir!==a&&(this.dir=a,this.$node.css("direction",a),this.dropdown.setLanguageDirection(a))},_updateHint:function(){var a,b,c,d,e,f;a=this.dropdown.getDatumForTopSuggestion(),a&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(b=this.input.getInputValue(),c=l.normalizeQuery(b),d=i.escapeRegExChars(c),e=new RegExp("^(?:"+d+")(.+$)","i"),f=e.exec(a.value),f?this.input.setHint(b+f[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(a){var b,c,d,e;b=this.input.getHint(),c=this.input.getQuery(),d=a||this.input.isCursorAtEnd(),b&&c!==b&&d&&(e=this.dropdown.getDatumForTopSuggestion(),e&&this.input.setInputValue(e.value),this.eventBus.trigger("autocompleted",e.raw,e.datasetName))},_select:function(a,b){void 0!==a.value&&this.input.setQuery(a.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(a.value,!0),this._setLanguageDirection(),this.eventBus.trigger("selected",a.raw,a.datasetName,b).isDefaultPrevented()===!1&&(this.dropdown.close(),i.defer(i.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var a=this.input.getInputValue();a.length>=this.minLength?this.dropdown.update(a):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(a){a=i.toStr(a),this.isActivated?this.input.setInputValue(a):(this.input.setQuery(a),this.input.setInputValue(a,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),g(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),d.Dropdown=m,d.Input=l,d.sources=c(20),a.exports=d},function(a,b,c){"use strict";function d(a){a&&a.el||e.error("EventBus initialized without el"),this.$el=f.element(a.el)}var e=c(4),f=c(2);e.mixin(d.prototype,{trigger:function(a,b,c,d){var f=e.Event("autocomplete:"+a);return this.$el.trigger(f,[b,c,d]),f}}),a.exports=d},function(a,b,c){"use strict";function d(a){var b,c,d,f,g=this;a=a||{},a.input||i.error("input is missing"),b=i.bind(this._onBlur,this),c=i.bind(this._onFocus,this),d=i.bind(this._onKeydown,this),f=i.bind(this._onInput,this),this.$hint=j.element(a.hint),this.$input=j.element(a.input).on("blur.aa",b).on("focus.aa",c).on("keydown.aa",d),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=i.noop),i.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function(a){h[a.which||a.keyCode]||i.defer(i.bind(g._onInput,g,a))}):this.$input.on("input.aa",f),this.query=this.$input.val(),this.$overflowHelper=e(this.$input)}function e(a){return j.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:a.css("font-family"),fontSize:a.css("font-size"),fontStyle:a.css("font-style"),fontVariant:a.css("font-variant"),fontWeight:a.css("font-weight"),wordSpacing:a.css("word-spacing"),letterSpacing:a.css("letter-spacing"),textIndent:a.css("text-indent"),textRendering:a.css("text-rendering"),textTransform:a.css("text-transform")}).insertAfter(a)}function f(a,b){return d.normalizeQuery(a)===d.normalizeQuery(b)}function g(a){return a.altKey||a.ctrlKey||a.metaKey||a.shiftKey}var h;h={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var i=c(4),j=c(2),k=c(8);d.normalizeQuery=function(a){return(a||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},i.mixin(d.prototype,k,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(a){var b=h[a.which||a.keyCode];this._managePreventDefault(b,a),b&&this._shouldTrigger(b,a)&&this.trigger(b+"Keyed",a)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(a,b){var c,d,e;switch(a){case"tab":d=this.getHint(),e=this.getInputValue(),c=d&&d!==e&&!g(b);break;case"up":case"down":c=!g(b);break;default:c=!1}c&&b.preventDefault()},_shouldTrigger:function(a,b){var c;switch(a){case"tab":c=!g(b);break;default:c=!0}return c},_checkInputValue:function(){var a,b,c;a=this.getInputValue(),b=f(a,this.query),c=!(!b||!this.query)&&this.query.length!==a.length,this.query=a,b?c&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(a){this.query=a},getInputValue:function(){return this.$input.val()},setInputValue:function(a,b){void 0===a&&(a=this.query),this.$input.val(a),b?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(a){this.$input.attr("aria-activedescendant",a)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(a){this.$hint.val(a)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var a,b,c,d;a=this.getInputValue(),b=this.getHint(),c=a!==b&&0===b.indexOf(a),(d=""!==a&&c&&!this.hasOverflow())||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var a=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=a},isCursorAtEnd:function(){var a,b,c;return a=this.$input.val().length,b=this.$input[0].selectionStart,i.isNumber(b)?b===a:!document.selection||(c=document.selection.createRange(),c.moveStart("character",-a),a===c.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),a.exports=d},function(a,b,c){"use strict";function d(a,b,c,d){var e;if(!c)return this;for(b=b.split(l),c=d?j(c,d):c,this._callbacks=this._callbacks||{};e=b.shift();)this._callbacks[e]=this._callbacks[e]||{sync:[],async:[]},this._callbacks[e][a].push(c);return this}function e(a,b,c){return d.call(this,"async",a,b,c)}function f(a,b,c){return d.call(this,"sync",a,b,c)}function g(a){var b;if(!this._callbacks)return this;for(a=a.split(l);b=a.shift();)delete this._callbacks[b];return this}function h(a){var b,c,d,e,f;if(!this._callbacks)return this;for(a=a.split(l),d=[].slice.call(arguments,1);(b=a.shift())&&(c=this._callbacks[b]);)e=i(c.sync,this,[b].concat(d)),f=i(c.async,this,[b].concat(d)),e()&&k(f);return this}function i(a,b,c){function d(){for(var d,e=0,f=a.length;!d&&e<f;e+=1)d=a[e].apply(b,c)===!1;return!d}return d}function j(a,b){return a.bind?a.bind(b):function(){a.apply(b,[].slice.call(arguments,0))}}var k=c(9),l=/\s+/;a.exports={onSync:f,onAsync:e,off:g,trigger:h}},function(a,b,c){"use strict";function d(){h&&i&&(h=!1,i.length?m=i.concat(m):l=-1,m.length&&e())}function e(){if(!h){n=!1,h=!0;for(var a=m.length,b=setTimeout(d);a;){for(i=m,m=[];i&&++l<a;)i[l].run();l=-1,a=m.length}i=null,l=-1,h=!1,clearTimeout(b)}}function f(a,b){this.fun=a,this.array=b}function g(a){var b=new Array(arguments.length-1);if(arguments.length>1)for(var c=1;c<arguments.length;c++)b[c-1]=arguments[c];m.push(new f(a,b)),n||h||(n=!0,j())}for(var h,i,j,k=[c(10),c(12),c(13),c(14),c(15)],l=-1,m=[],n=!1,o=-1,p=k.length;++o<p;)if(k[o]&&k[o].test&&k[o].test()){j=k[o].install(e);break}f.prototype.run=function(){var a=this.fun,b=this.array;switch(b.length){case 0:return a();case 1:return a(b[0]);case 2:return a(b[0],b[1]);case 3:return a(b[0],b[1],b[2]);default:return a.apply(null,b)}},a.exports=g},function(a,b,c){(function(a){"use strict";b.test=function(){return void 0!==a&&!a.browser},b.install=function(b){return function(){a.nextTick(b)}}}).call(b,c(11))},function(a,b){function c(){throw new Error("setTimeout has not been defined")}function d(){throw new Error("clearTimeout has not been defined")}function e(a){if(k===setTimeout)return setTimeout(a,0);if((k===c||!k)&&setTimeout)return k=setTimeout,setTimeout(a,0);try{return k(a,0)}catch(b){try{return k.call(null,a,0)}catch(b){return k.call(this,a,0)}}}function f(a){if(l===clearTimeout)return clearTimeout(a);if((l===d||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(a);try{return l(a)}catch(b){try{return l.call(null,a)}catch(b){return l.call(this,a)}}}function g(){p&&n&&(p=!1,n.length?o=n.concat(o):q=-1,o.length&&h())}function h(){if(!p){var a=e(g);p=!0;for(var b=o.length;b;){for(n=o,o=[];++q<b;)n&&n[q].run();q=-1,b=o.length}n=null,p=!1,f(a)}}function i(a,b){this.fun=a,this.array=b}function j(){}var k,l,m=a.exports={};!function(){try{k="function"==typeof setTimeout?setTimeout:c}catch(a){k=c}try{l="function"==typeof clearTimeout?clearTimeout:d}catch(a){l=d}}();var n,o=[],p=!1,q=-1;m.nextTick=function(a){var b=new Array(arguments.length-1);if(arguments.length>1)for(var c=1;c<arguments.length;c++)b[c-1]=arguments[c];o.push(new i(a,b)),1!==o.length||p||e(h)},i.prototype.run=function(){this.fun.apply(null,this.array)},m.title="browser",m.browser=!0,m.env={},m.argv=[],m.version="",m.versions={},m.on=j,m.addListener=j,m.once=j,m.off=j,m.removeListener=j,m.removeAllListeners=j,m.emit=j,m.binding=function(a){throw new Error("process.binding is not supported")},m.cwd=function(){return"/"},m.chdir=function(a){throw new Error("process.chdir is not supported")},m.umask=function(){return 0}},function(a,b){(function(a){"use strict";var c=a.MutationObserver||a.WebKitMutationObserver;b.test=function(){return c},b.install=function(b){var d=0,e=new c(b),f=a.document.createTextNode("");return e.observe(f,{characterData:!0}),function(){f.data=d=++d%2}}}).call(b,function(){return this}())},function(a,b){(function(a){"use strict";b.test=function(){return!a.setImmediate&&void 0!==a.MessageChannel},b.install=function(b){var c=new a.MessageChannel;return c.port1.onmessage=b,function(){c.port2.postMessage(0)}}}).call(b,function(){return this}())},function(a,b){(function(a){"use strict";b.test=function(){return"document"in a&&"onreadystatechange"in a.document.createElement("script")},b.install=function(b){return function(){var c=a.document.createElement("script");return c.onreadystatechange=function(){b(),c.onreadystatechange=null,c.parentNode.removeChild(c),c=null},a.document.documentElement.appendChild(c),b}}}).call(b,function(){return this}())},function(a,b){"use strict";b.test=function(){return!0},b.install=function(a){return function(){setTimeout(a,0)}}},function(a,b,c){"use strict";function d(a){var b,c,d,h=this;a=a||{},a.menu||f.error("menu is required"),f.isArray(a.datasets)||f.isObject(a.datasets)||f.error("1 or more datasets required"),a.datasets||f.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=a.minLength||0,this.templates={},this.appendTo=a.appendTo||!1,this.css=f.mixin({},j,a.appendTo?j.appendTo:{}),this.cssClasses=a.cssClasses=f.mixin({},j.defaultClasses,a.cssClasses||{}),this.cssClasses.prefix=a.cssClasses.formattedPrefix||f.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),b=f.bind(this._onSuggestionClick,this),c=f.bind(this._onSuggestionMouseEnter,this),d=f.bind(this._onSuggestionMouseLeave,this);var i=f.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=g.element(a.menu).on("mouseenter.aa",i,c).on("mouseleave.aa",i,d).on("click.aa",i,b),this.$container=a.appendTo?a.wrapper:this.$menu,a.templates&&a.templates.header&&(this.templates.header=f.templatify(a.templates.header),this.$menu.prepend(this.templates.header())),a.templates&&a.templates.empty&&(this.templates.empty=f.templatify(a.templates.empty),this.$empty=g.element('<div class="'+f.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=f.map(a.datasets,function(b){return e(h.$menu,b,a.cssClasses)}),f.each(this.datasets,function(a){var b=a.getRoot();b&&0===b.parent().length&&h.$menu.append(b),a.onSync("rendered",h._onRendered,h)}),a.templates&&a.templates.footer&&(this.templates.footer=f.templatify(a.templates.footer),this.$menu.append(this.templates.footer()));var k=this;g.element(window).resize(function(){k._redraw()})}function e(a,b,c){return new d.Dataset(f.mixin({$menu:a,cssClasses:c},b))}var f=c(4),g=c(2),h=c(8),i=c(17),j=c(19);f.mixin(d.prototype,h,{_onSuggestionClick:function(a){this.trigger("suggestionClicked",g.element(a.currentTarget))},_onSuggestionMouseEnter:function(a){var b=g.element(a.currentTarget);if(!b.hasClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var c=this;setTimeout(function(){c._setCursor(b,!1)},0)}},_onSuggestionMouseLeave:function(a){if(a.relatedTarget){if(g.element(a.relatedTarget).closest("."+f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return}this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(a,b){function c(a){return a.isEmpty()}function d(a){return a.templates&&a.templates.empty}if(this.isEmpty=f.every(this.datasets,c),this.isEmpty)if(b.length>=this.minLength&&this.trigger("empty"),this.$empty)if(b.length<this.minLength)this._hide();else{var e=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(e),this.$empty.show(),this._show()}else f.any(this.datasets,d)?b.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),b.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(f.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(f.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(a,b){a.first().addClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",b)},_removeCursor:function(){this._getCursor().removeClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(a){var b,c,d,e;if(this.isOpen){if(c=this._getCursor(),b=this._getSuggestions(),this._removeCursor(),d=b.index(c)+a,(d=(d+1)%(b.length+1)-1)===-1)return void this.trigger("cursorRemoved");d<-1&&(d=b.length-1),this._setCursor(e=b.eq(d),!0),this._ensureVisible(e)}},_ensureVisible:function(a){var b,c,d,e;b=a.position().top,c=b+a.height()+parseInt(a.css("margin-top"),10)+parseInt(a.css("margin-bottom"),10),d=this.$menu.scrollTop(),e=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),b<0?this.$menu.scrollTop(d+b):e<c&&this.$menu.scrollTop(d+(c-e))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(a){this.$menu.css("ltr"===a?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(a){var b=null;return a.length&&(b={raw:i.extractDatum(a),value:i.extractValue(a),datasetName:i.extractDatasetName(a)}),b},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(a){function b(b){b.update(a)}f.each(this.datasets,b)},empty:function(){function a(a){a.clear()}f.each(this.datasets,a),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){function a(a){a.destroy()}this.$menu.off(".aa"),this.$menu=null,f.each(this.datasets,a)}}),d.Dataset=i,a.exports=d},function(a,b,c){"use strict";function d(a){a=a||{},a.templates=a.templates||{},a.source||k.error("missing source"),a.name&&!g(a.name)&&k.error("invalid dataset name: "+a.name),this.query=null,this._isEmpty=!0,this.highlight=!!a.highlight,this.name=void 0===a.name||null===a.name?k.getUniqueId():a.name,this.source=a.source,this.displayFn=e(a.display||a.displayKey),this.debounce=a.debounce,this.cache=a.cache!==!1,this.templates=f(a.templates,this.displayFn),this.css=k.mixin({},n,a.appendTo?n.appendTo:{}),this.cssClasses=a.cssClasses=k.mixin({},n.defaultClasses,a.cssClasses||{}),this.cssClasses.prefix=a.cssClasses.formattedPrefix||k.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var b=k.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=a.$menu&&a.$menu.find(b+"-"+this.name).length>0?l.element(a.$menu.find(b+"-"+this.name)[0]):l.element(m.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=a.$menu,this.clearCachedSuggestions()}function e(a){function b(b){return b[a]}return a=a||"value",k.isFunction(a)?a:b}function f(a,b){function c(a){return"<p>"+b(a)+"</p>"}return{empty:a.empty&&k.templatify(a.empty),header:a.header&&k.templatify(a.header),footer:a.footer&&k.templatify(a.footer),suggestion:a.suggestion||c}}function g(a){return/^[_a-zA-Z0-9-]+$/.test(a)}var h="aaDataset",i="aaValue",j="aaDatum",k=c(4),l=c(2),m=c(18),n=c(19),o=c(8);d.extractDatasetName=function(a){return l.element(a).data(h)},d.extractValue=function(a){return l.element(a).data(i)},d.extractDatum=function(a){var b=l.element(a).data(j);return"string"==typeof b&&(b=JSON.parse(b)),b},k.mixin(d.prototype,o,{_render:function(a,b){function c(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!0}].concat(b),n.templates.empty.apply(this,b)}function d(){function a(a){var b,c=m.suggestion.replace("%PREFIX%",f.cssClasses.prefix).replace("%SUGGESTION%",f.cssClasses.suggestion);return b=l.element(c).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(n.templates.suggestion.apply(this,[a].concat(e))),b.data(h,n.name),b.data(i,n.displayFn(a)||void 0),b.data(j,JSON.stringify(a)),b.children().each(function(){l.element(this).css(f.css.suggestionChild)}),b}var c,d,e=[].slice.call(arguments,0),f=this,g=m.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return c=l.element(g).css(this.css.suggestions),d=k.map(b,a),c.append.apply(c,d),c}function e(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.header.apply(this,b)}function f(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.footer.apply(this,b)}if(this.$el){var g,n=this,o=[].slice.call(arguments,2);if(this.$el.empty(),g=b&&b.length,this._isEmpty=!g,!g&&this.templates.empty)this.$el.html(c.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(g)this.$el.html(d.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(b&&!Array.isArray(b))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(g?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(g?"without":"with")+"-"+this.name),this.trigger("rendered",a)}},getRoot:function(){return this.$el},update:function(a){function b(b){if(!this.canceled&&a===this.query){ +var c=[].slice.call(arguments,1);this.cacheSuggestions(a,b,c),this._render.apply(this,[a,b].concat(c))}}if(this.query=a,this.canceled=!1,this.shouldFetchFromCache(a))b.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var c=this,d=function(){c.canceled||c.source(a,b.bind(c))};if(this.debounce){var e=function(){c.debounceTimeout=null,d()};clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(e,this.debounce)}else d()}},cacheSuggestions:function(a,b,c){this.cachedQuery=a,this.cachedSuggestions=b,this.cachedRenderExtraArgs=c},shouldFetchFromCache:function(a){return this.cache&&this.cachedQuery===a&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),a.exports=d},function(a,b){"use strict";a.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},function(a,b,c){"use strict";var d=c(4),e={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};d.isMsie()&&d.mixin(e.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),d.isMsie()&&d.isMsie()<=7&&d.mixin(e.input,{marginTop:"-1px"}),a.exports=e},function(a,b,c){"use strict";a.exports={hits:c(21),popularIn:c(24)}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23),g=function(){function a(a,d){return window.Promise.resolve().then(function(){return b.length&&(e=a.search(b),b=[]),e}).then(function(a){if(a)return c=a.results,c[d]})}var b=[],c=[],e=window.Promise.resolve();return function(c,e){return function(f,g){a(c.as,b.push({indexName:c.indexName,query:f,params:e})-1).then(function(a){a&&g(a.hits,a)}).catch(function(a){d.error(a.message)})}}}();a.exports=function(a,b){var c=f(a.as._ua);if(c&&c[0]>=3&&c[1]>20){var d="autocomplete.js "+e;a.as._ua.indexOf(d)===-1&&(a.as._ua+="; "+d)}return g(a,b)}},function(a,b){a.exports="0.38.0"},function(a,b){"use strict";a.exports=function(a){var b=a.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||a.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(b)return[b[1],b[2],b[3]]}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23);a.exports=function(a,b,c,g){function h(h,i){a.search(h,b,function(a,h){if(a)return void d.error(a.message);if(h.hits.length>0){var l=h.hits[0],m=d.mixin({hitsPerPage:0},c);delete m.source,delete m.index;var n=f(k.as._ua);return n&&n[0]>=3&&n[1]>20&&(b.additionalUA="autocomplete.js "+e),void k.search(j(l),m,function(a,b){if(a)return void d.error(a.message);var c=[];if(g.includeAll){var e=g.allTitle||"All departments";c.push(d.mixin({facet:{value:e,count:b.nbHits}},d.cloneDeep(l)))}d.each(b.facets,function(a,b){d.each(a,function(a,e){c.push(d.mixin({facet:{facet:b,value:e,count:a}},d.cloneDeep(l)))})});for(var f=1;f<h.hits.length;++f)c.push(h.hits[f]);i(c,h)})}i([])})}var i=f(a.as._ua);if(i&&i[0]>=3&&i[1]>20&&(b=b||{},b.additionalUA="autocomplete.js "+e),!c.source)return d.error("Missing 'source' key");var j=d.isFunction(c.source)?c.source:function(a){return a[c.source]};if(!c.index)return d.error("Missing 'index' key");var k=c.index;return g=g||{},h}}]);
\ No newline at end of file diff --git a/docs/dev/deps/search-1.0.0/fuse.min.js b/docs/dev/deps/search-1.0.0/fuse.min.js new file mode 100644 index 00000000..7def5985 --- /dev/null +++ b/docs/dev/deps/search-1.0.0/fuse.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v6.4.6 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2021 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function f(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=s(e);if(t){var i=s(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return h(this,n)}}function l(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e){return Array.isArray?Array.isArray(e):"[object Array]"===b(e)}function g(e){return"string"==typeof e}function y(e){return"number"==typeof e}function p(e){return!0===e||!1===e||function(e){return m(e)&&null!==e}(e)&&"[object Boolean]"==b(e)}function m(t){return"object"===e(t)}function k(e){return null!=e}function M(e){return!e.trim().length}function b(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var x=function(e){return"Invalid value for key ".concat(e)},L=function(e){return"Pattern length exceeds max of ".concat(e,".")},S=Object.prototype.hasOwnProperty,w=function(){function e(n){var r=this;t(this,e),this._keys=[],this._keyMap={};var i=0;n.forEach((function(e){var t=_(e);i+=t.weight,r._keys.push(t),r._keyMap[t.id]=t,i+=t.weight})),this._keys.forEach((function(e){e.weight/=i}))}return r(e,[{key:"get",value:function(e){return this._keyMap[e]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),e}();function _(e){var t=null,n=null,r=null,i=1;if(g(e)||v(e))r=e,t=O(e),n=j(e);else{if(!S.call(e,"name"))throw new Error(function(e){return"Missing ".concat(e," property in key")}("name"));var o=e.name;if(r=o,S.call(e,"weight")&&(i=e.weight)<=0)throw new Error(function(e){return"Property 'weight' in key '".concat(e,"' must be a positive integer")}(o));t=O(o),n=j(o)}return{path:t,id:n,weight:i,src:r}}function O(e){return v(e)?e:e.split(".")}function j(e){return v(e)?e.join("."):e}var A=c({},{isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:function(e,t){return e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1}},{},{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},{},{location:0,threshold:.6,distance:100},{},{useExtendedSearch:!1,getFn:function(e,t){var n=[],r=!1;return function e(t,i,o){if(k(t))if(i[o]){var c=t[i[o]];if(!k(c))return;if(o===i.length-1&&(g(c)||y(c)||p(c)))n.push(function(e){return null==e?"":function(e){if("string"==typeof e)return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(c));else if(v(c)){r=!0;for(var a=0,s=c.length;a<s;a+=1)e(c[a],i,o+1)}else i.length&&e(c,i,o+1)}else n.push(t)}(e,g(t)?t.split("."):t,0),r?n:n[0]},ignoreLocation:!1,ignoreFieldNorm:!1}),I=/[^ ]+/g;function C(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3,t=new Map,n=Math.pow(10,e);return{get:function(e){var r=e.match(I).length;if(t.has(r))return t.get(r);var i=1/Math.sqrt(r),o=parseFloat(Math.round(i*n)/n);return t.set(r,o),o},clear:function(){t.clear()}}}var E=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.getFn,i=void 0===r?A.getFn:r;t(this,e),this.norm=C(3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return r(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t<n;t+=1)this.records[t].i-=1}},{key:"getValueForItemAtKeyId",value:function(e,t){return e[this._keysMap[t]]}},{key:"size",value:function(){return this.records.length}},{key:"_addString",value:function(e,t){if(k(e)&&!M(e)){var n={v:e,i:t,n:this.norm.get(e)};this.records.push(n)}}},{key:"_addObject",value:function(e,t){var n=this,r={i:t,$:{}};this.keys.forEach((function(t,i){var o=n.getFn(e,t.path);if(k(o))if(v(o))!function(){for(var e=[],t=[{nestedArrIndex:-1,value:o}];t.length;){var c=t.pop(),a=c.nestedArrIndex,s=c.value;if(k(s))if(g(s)&&!M(s)){var u={v:s,i:a,n:n.norm.get(s)};e.push(u)}else v(s)&&s.forEach((function(e,n){t.push({nestedArrIndex:n,value:e})}))}r.$[i]=e}();else if(!M(o)){var c={v:o,n:n.norm.get(o)};r.$[i]=c}})),this.records.push(r)}},{key:"toJSON",value:function(){return{keys:this.keys,records:this.records}}}]),e}();function $(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?A.getFn:r,o=new E({getFn:i});return o.setKeys(e.map(_)),o.setSources(t),o.create(),o}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?A.distance:s,h=t.ignoreLocation,f=void 0===h?A.ignoreLocation:h,l=r/e.length;if(f)return l;var d=Math.abs(a-o);return u?l+d/u:d?1:l}function F(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:A.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o<c;o+=1){var a=e[o];a&&-1===r?r=o:a||-1===r||((i=o-1)-r+1>=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}function P(e){for(var t={},n=0,r=e.length;n<r;n+=1){var i=e.charAt(n);t[i]=(t[i]||0)|1<<r-n-1}return t}var N=function(){function e(n){var r=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?A.location:o,a=i.threshold,s=void 0===a?A.threshold:a,u=i.distance,h=void 0===u?A.distance:u,f=i.includeMatches,l=void 0===f?A.includeMatches:f,d=i.findAllMatches,v=void 0===d?A.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?A.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?A.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?A.ignoreLocation:k;if(t(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:l,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?n:n.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){r.chunks.push({pattern:e,alphabet:P(e),startIndex:t})},x=this.pattern.length;if(x>32){for(var L=0,S=x%32,w=x-S;L<w;)b(this.pattern.substr(L,32),L),L+=32;if(S){var _=x-32;b(this.pattern.substr(_),_)}}else b(this.pattern,0)}}return r(e,[{key:"searchIn",value:function(e){var t=this.options,n=t.isCaseSensitive,r=t.includeMatches;if(n||(e=e.toLowerCase()),this.pattern===e){var i={isMatch:!0,score:0};return r&&(i.indices=[[0,e.length-1]]),i}var o=this.options,c=o.location,a=o.distance,s=o.threshold,u=o.findAllMatches,h=o.minMatchCharLength,f=o.ignoreLocation,d=[],v=0,g=!1;this.chunks.forEach((function(t){var n=t.pattern,i=t.alphabet,o=t.startIndex,y=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?A.location:i,c=r.distance,a=void 0===c?A.distance:c,s=r.threshold,u=void 0===s?A.threshold:s,h=r.findAllMatches,f=void 0===h?A.findAllMatches:h,l=r.minMatchCharLength,d=void 0===l?A.minMatchCharLength:l,v=r.includeMatches,g=void 0===v?A.includeMatches:v,y=r.ignoreLocation,p=void 0===y?A.ignoreLocation:y;if(t.length>32)throw new Error(L(32));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,S=b,w=d>1||g,_=w?Array(M):[];(m=e.indexOf(t,S))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),S=m+k,w)for(var j=0;j<k;)_[m+j]=1,j+=1}S=-1;for(var I=[],C=1,E=k+M,$=1<<k-1,P=0;P<k;P+=1){for(var N=0,D=E;N<D;){var z=R(t,{errors:P,currentLocation:b+D,expectedLocation:b,distance:a,ignoreLocation:p});z<=x?N=D:E=D,D=Math.floor((E-N)/2+N)}E=D;var K=Math.max(1,b-D+1),q=f?M:Math.min(b+D,M)+k,W=Array(q+2);W[q+1]=(1<<P)-1;for(var J=q;J>=K;J-=1){var T=J-1,U=n[e.charAt(T)];if(w&&(_[T]=+!!U),W[J]=(W[J+1]<<1|1)&U,P&&(W[J]|=(I[J+1]|I[J])<<1|1|I[J+1]),W[J]&$&&(C=R(t,{errors:P,currentLocation:T,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(S=T)<=b)break;K=Math.max(1,2*b-S)}}var V=R(t,{errors:P+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p});if(V>x)break;I=W}var B={isMatch:S>=0,score:Math.max(.001,C)};if(w){var G=F(_,d);G.length?g&&(B.indices=G):B.isMatch=!1}return B}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:f}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(l(d),l(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),D=function(){function e(n){t(this,e),this.pattern=n}return r(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return z(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return z(e,this.singleRegex)}}]),e}();function z(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),i}(D),q=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),i}(D),W=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),i}(D),J=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),i}(D),T=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),i}(D),U=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),i}(D),V=function(e){a(i,e);var n=f(i);function i(e){var r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?A.location:c,s=o.threshold,u=void 0===s?A.threshold:s,h=o.distance,f=void 0===h?A.distance:h,l=o.includeMatches,d=void 0===l?A.includeMatches:l,v=o.findAllMatches,g=void 0===v?A.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?A.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?A.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?A.ignoreLocation:M;return t(this,i),(r=n.call(this,e))._bitapSearch=new N(e,{location:a,threshold:u,distance:f,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),r}return r(i,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),i}(D),B=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),i}(D),G=[K,B,W,J,U,T,q,V],H=G.length,Q=/ +(?=([^\"]*\"[^\"]*\")*[^\"]*$)/;function X(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Q).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i<o;i+=1){for(var c=n[i],a=!1,s=-1;!a&&++s<H;){var u=G[s],h=u.isMultiMatch(c);h&&(r.push(new u(h,t)),a=!0)}if(!a)for(s=-1;++s<H;){var f=G[s],l=f.isSingleMatch(c);if(l){r.push(new f(l,t));break}}}return r}))}var Y=new Set([V.type,B.type]),Z=function(){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.isCaseSensitive,o=void 0===i?A.isCaseSensitive:i,c=r.includeMatches,a=void 0===c?A.includeMatches:c,s=r.minMatchCharLength,u=void 0===s?A.minMatchCharLength:s,h=r.ignoreLocation,f=void 0===h?A.ignoreLocation:h,l=r.findAllMatches,d=void 0===l?A.findAllMatches:l,v=r.location,g=void 0===v?A.location:v,y=r.threshold,p=void 0===y?A.threshold:y,m=r.distance,k=void 0===m?A.distance:m;t(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:f,location:g,threshold:p,distance:k},this.pattern=o?n:n.toLowerCase(),this.query=X(this.pattern,this.options)}return r(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a<s;a+=1){var u=t[a];o.length=0,i=0;for(var h=0,f=u.length;h<f;h+=1){var d=u[h],v=d.search(e),g=v.isMatch,y=v.indices,p=v.score;if(!g){c=0,i=0,o.length=0;break}if(i+=1,c+=p,r){var m=d.constructor.type;Y.has(m)?o=[].concat(l(o),l(y)):o.push(y)}}if(i){var k={isMatch:!0,score:c/i};return r&&(k.indices=o),k}}return{isMatch:!1,score:1}}}],[{key:"condition",value:function(e,t){return t.useExtendedSearch}}]),e}(),ee=[];function te(e,t){for(var n=0,r=ee.length;n<r;n+=1){var i=ee[n];if(i.condition(e,t))return new i(e,t)}return new N(e,t)}var ne="$and",re="$or",ie="$path",oe="$val",ce=function(e){return!(!e[ne]&&!e[re])},ae=function(e){return!!e[ie]},se=function(e){return!v(e)&&m(e)&&!ce(e)},ue=function(e){return i({},ne,Object.keys(e).map((function(t){return i({},t,e[t])})))};function he(e,t){var n=t.ignoreFieldNorm,r=void 0===n?A.ignoreFieldNorm:n;e.forEach((function(e){var t=1;e.matches.forEach((function(e){var n=e.key,i=e.norm,o=e.score,c=n?n.weight:null;t*=Math.pow(0===o&&c?Number.EPSILON:o,(c||1)*(r?1:i))})),e.score=t}))}function fe(e,t){var n=e.matches;t.matches=[],k(n)&&n.forEach((function(e){if(k(e.indices)&&e.indices.length){var n={indices:e.indices,value:e.value};e.key&&(n.key=e.key.src),e.idx>-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function le(e,t){t.score=e.score}function de(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?A.includeMatches:r,o=n.includeScore,c=void 0===o?A.includeScore:o,a=[];return i&&a.push(fe),c&&a.push(le),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ve=function(){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;t(this,e),this.options=c({},A,{},r),this.options.useExtendedSearch,this._keyStore=new w(this.options.keys),this.setCollection(n,i)}return r(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof E))throw new Error("Incorrect 'index' type");this._myIndex=t||$(this.options.keys,this._docs,{getFn:this.options.getFn})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n<r;n+=1){var i=this._docs[n];e(i,n)&&(this.removeAt(n),n-=1,r-=1,t.push(i))}return t}},{key:"removeAt",value:function(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}},{key:"getIndex",value:function(){return this._myIndex}},{key:"search",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return he(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),de(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=te(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.auto,i=void 0===r||r,o=function e(n){var r=Object.keys(n),o=ae(n);if(!o&&r.length>1&&!ce(n))return e(ue(n));if(se(n)){var c=o?n[ie]:r[0],a=o?n[oe]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return i&&(s.searcher=te(a,t)),s}var u={children:[],operator:r[0]};return r.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return ce(e)||(e=ue(e)),o(e)}(e,this.options),r=this._myIndex.records,i={},o=[];return r.forEach((function(e){var r=e.$,c=e.i;if(k(r)){var a=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}switch(n.operator){case ne:for(var s=[],u=0,h=n.children.length;u<h;u+=1){var f=e(n.children[u],r,i);if(!f.length)return[];s.push.apply(s,l(f))}return s;case re:for(var d=[],v=0,g=n.children.length;v<g;v+=1){var y=e(n.children[v],r,i);if(y.length){d.push.apply(d,l(y));break}}return d}}(n,r,c);a.length&&(i[c]||(i[c]={idx:c,item:r,matches:[]},o.push(i[c])),a.forEach((function(e){var t,n=e.matches;(t=i[c].matches).push.apply(t,l(n))})))}})),o}},{key:"_searchObjectList",value:function(e){var t=this,n=te(e,this.options),r=this._myIndex,i=r.keys,o=r.records,c=[];return o.forEach((function(e){var r=e.$,o=e.i;if(k(r)){var a=[];i.forEach((function(e,i){a.push.apply(a,l(t._findMatches({key:e,value:r[i],searcher:n})))})),a.length&&c.push({idx:o,item:r,matches:a})}})),c}},{key:"_findMatches",value:function(e){var t=e.key,n=e.value,r=e.searcher;if(!k(n))return[];var i=[];if(v(n))n.forEach((function(e){var n=e.v,o=e.i,c=e.n;if(k(n)){var a=r.searchIn(n),s=a.isMatch,u=a.score,h=a.indices;s&&i.push({score:u,key:t,value:n,idx:o,norm:c,indices:h})}}));else{var o=n.v,c=n.n,a=r.searchIn(o),s=a.isMatch,u=a.score,h=a.indices;s&&i.push({score:u,key:t,value:o,norm:c,indices:h})}return i}}]),e}();return ve.version="6.4.6",ve.createIndex=$,ve.parseIndex=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?A.getFn:n,i=e.keys,o=e.records,c=new E({getFn:r});return c.setKeys(i),c.setIndexRecords(o),c},ve.config=A,function(){ee.push.apply(ee,arguments)}(Z),ve},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Fuse=t();
\ No newline at end of file diff --git a/docs/dev/deps/search-1.0.0/mark.min.js b/docs/dev/deps/search-1.0.0/mark.min.js new file mode 100644 index 00000000..1eea0533 --- /dev/null +++ b/docs/dev/deps/search-1.0.0/mark.min.js @@ -0,0 +1,7 @@ +/*!*************************************************** +* mark.js v8.11.1 +* https://markjs.io/ +* Copyright (c) 2014–2018, Julian Kühnel +* Released under the MIT license https://git.io/vwTVl +*****************************************************/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Mark=t()}(this,function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=i,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach(function(t){var n=e.filter(function(e){return e.contains(t)}).length>0;-1!==e.indexOf(t)||n||e.push(t)}),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var i=e.contentWindow;if(r=i.document,!i||!r)throw new Error("iframe inaccessible")}catch(e){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t=e.getAttribute("src").trim();return"about:blank"===e.contentWindow.location.href&&"about:blank"!==t&&t}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,i=!1,o=null,a=function a(){if(!i){i=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",a),r.getIframeContents(e,t,n))}catch(e){n()}}};e.addEventListener("load",a),o=setTimeout(a,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(e){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,function(){return!0},function(e){r++,n.waitForIframes(e.querySelector("html"),function(){--r||t()})},function(e){e||t()})}},{key:"forEachIframe",value:function(t,n,r){var i=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=t.querySelectorAll("iframe"),s=a.length,c=0;a=Array.prototype.slice.call(a);var u=function(){--s<=0&&o(c)};s||u(),a.forEach(function(t){e.matches(t,i.exclude)?u():i.onIframeReady(t,function(e){n(t)&&(c++,r(e)),u()},u)})}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:null===t?e.nextNode():e.nextNode()&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var i=!1,o=!1;return r.forEach(function(e,t){e.val===n&&(i=t,o=e.handled)}),this.compareNodeIframe(e,t,n)?(!1!==i||o?!1===i||o||(r[i].handled=!0):r.push({val:n,handled:!0}),!0):(!1===i&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var i=this;e.forEach(function(e){e.handled||i.getIframeContents(e.val,function(e){i.createInstanceOnIframe(e).forEachNode(t,n,r)})})}},{key:"iterateThroughNodes",value:function(e,t,n,r,i){for(var o,a=this,s=this.createIterator(t,e,r),c=[],u=[],l=void 0,h=void 0;void 0,o=a.getIteratorNode(s),h=o.prevNode,l=o.node;)this.iframes&&this.forEachIframe(t,function(e){return a.checkIframeFilter(l,h,e,c)},function(t){a.createInstanceOnIframe(t).forEachNode(e,function(e){return u.push(e)},r)}),u.push(l);u.forEach(function(e){n(e)}),this.iframes&&this.handleOpenIframes(c,e,n,r),i()}},{key:"forEachNode",value:function(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),a=o.length;a||i(),o.forEach(function(o){var s=function(){r.iterateThroughNodes(e,o,t,n,function(){--a<=0&&i()})};r.iframes?r.waitForIframes(o,s):s()})}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var i=!1;return n.every(function(t){return!r.call(e,t)||(i=!0,!1)}),i}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var i in t)if(t.hasOwnProperty(i)){var o=t[i],a="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(i):this.escapeStr(i),s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==a&&""!==s&&(e=e.replace(new RegExp("("+this.escapeStr(a)+"|"+this.escapeStr(s)+")","gm"+n),r+"("+this.processSynomyms(a)+"|"+this.processSynomyms(s)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,function(e){return"\\"===e.charAt(0)?"?":""})).replace(/(?:\\)*\*/g,function(e){return"\\"===e.charAt(0)?"*":""})}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"})}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],r=[];return e.split("").forEach(function(i){n.every(function(n){if(-1!==n.indexOf(i)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0})}),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n=this.opt.accuracy,r="string"==typeof n?n:n.value,i="";switch(("string"==typeof n?[]:n.limiters).forEach(function(e){i+="|"+t.escapeStr(e)}),r){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿")))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach(function(e){t.opt.separateWordSearch?e.split(" ").forEach(function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)}):e.trim()&&-1===n.indexOf(e)&&n.push(e)}),{keywords:n.sort(function(e,t){return t.length-e.length}),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort(function(e,t){return e.start-t.start}).forEach(function(e){var i=t.callNoMatchOnInvalidRanges(e,r),o=i.start,a=i.end;i.valid&&(e.start=o,e.length=a-o,n.push(e),r=a)}),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,i=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?i=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:i}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,i=!0,o=n.length,a=t-o,s=parseInt(e.start,10)-a;return(r=(s=s>o?o:s)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),s<0||r-s<0||s>o||r>o?(i=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(s,r).replace(/\s+/g,"")&&(i=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:r,valid:i}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})},function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){e({value:n,nodes:r})})}},{key:"matchesExclude",value:function(e){return i.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",i=e.splitText(t),o=i.splitText(n-t),a=document.createElement(r);return a.setAttribute("data-markjs","true"),this.opt.className&&a.setAttribute("class",this.opt.className),a.textContent=i.textContent,i.parentNode.replaceChild(a,i),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,i){var o=this;e.nodes.every(function(a,s){var c=e.nodes[s+1];if(void 0===c||c.start>t){if(!r(a.node))return!1;var u=t-a.start,l=(n>a.end?a.end:n)-a.start,h=e.value.substr(0,a.start),f=e.value.substr(l+a.start);if(a.node=o.wrapRangeInTextNode(a.node,u,l),e.value=h+f,e.nodes.forEach(function(t,n){n>=s&&(e.nodes[n].start>0&&n!==s&&(e.nodes[n].start-=l),e.nodes[n].end-=l)}),n-=l,i(a.node.previousSibling,a.start),!(n>a.end))return!1;t=a.end}return!0})}},{key:"wrapMatches",value:function(e,t,n,r,i){var o=this,a=0===t?0:t+1;this.getTextNodes(function(t){t.nodes.forEach(function(t){t=t.node;for(var i=void 0;null!==(i=e.exec(t.textContent))&&""!==i[a];)if(n(i[a],t)){var s=i.index;if(0!==a)for(var c=1;c<a;c++)s+=i[c].length;t=o.wrapRangeInTextNode(t,s,s+i[a].length),r(t.previousSibling),e.lastIndex=0}}),i()})}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,i){var o=this,a=0===t?0:t+1;this.getTextNodes(function(t){for(var s=void 0;null!==(s=e.exec(t.value))&&""!==s[a];){var c=s.index;if(0!==a)for(var u=1;u<a;u++)c+=s[u].length;var l=c+s[a].length;o.wrapRangeInMappedTextNode(t,c,l,function(e){return n(s[a],e)},function(t,n){e.lastIndex=n,r(t)})}i()})}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var i=this;this.getTextNodes(function(o){var a=o.value.length;e.forEach(function(e,r){var s=i.checkWhitespaceRanges(e,a,o.value),c=s.start,u=s.end;s.valid&&i.wrapRangeInMappedTextNode(o,c,u,function(n){return t(n,e,o.value.substring(c,u),r)},function(t){n(t,e)})}),r()})}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,i="wrapMatches";this.opt.acrossElements&&(i="wrapMatchesAcrossElements"),this[i](e,this.opt.ignoreGroups,function(e,t){return n.opt.filter(t,e,r)},function(e){r++,n.opt.each(e)},function(){0===r&&n.opt.noMatch(e),n.opt.done(r)})}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,i="wrapMatches",o=this.getSeparatedKeywords("string"==typeof e?[e]:e),a=o.keywords,s=o.length,c=this.opt.caseSensitive?"":"i";this.opt.acrossElements&&(i="wrapMatchesAcrossElements"),0===s?this.opt.done(r):function e(t){var o=new RegExp(n.createRegExp(t),"gm"+c),u=0;n.log('Searching with expression "'+o+'"'),n[i](o,1,function(e,i){return n.opt.filter(i,t,r,u)},function(e){u++,r++,n.opt.each(e)},function(){0===u&&n.opt.noMatch(t),a[s-1]===t?n.opt.done(r):e(a[a.indexOf(t)+1])})}(a[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,i=this.checkRanges(e);i&&i.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(i)),this.wrapRangeFromIndex(i,function(e,t,r,i){return n.opt.filter(e,t,r,i)},function(e,t){r++,n.opt.each(e,t)},function(){n.opt.done(r)})):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,function(e){t.unwrapMatches(e)},function(e){var r=i.matches(e,n),o=t.matchesExclude(e);return!r||o?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new i(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),o}();return function(e){var t=this,n=new o(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}}); diff --git a/docs/dev/index.html b/docs/dev/index.html new file mode 100644 index 00000000..c9eddc8c --- /dev/null +++ b/docs/dev/index.html @@ -0,0 +1,280 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<title>Kinetic Evaluation of Chemical Degradation Data • mkin</title> +<script src="deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> +<link href="deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"> +<script src="deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"> +<link href="deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"> +<script src="deps/headroom-0.11.0/headroom.min.js"></script><script src="deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="deps/search-1.0.0/fuse.min.js"></script><script src="deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="pkgdown.js"></script><meta property="og:title" content="Kinetic Evaluation of Chemical Degradation Data"> +<meta name="description" content="Calculation routines based on the FOCUS Kinetics Report (2006, 2014). Includes a function for conveniently defining differential equation models, model solution based on eigenvalues if possible or using numerical solvers. If a C compiler (on windows: Rtools) is installed, differential equation models are solved using automatically generated C functions. Non-constant errors can be taken into account using variance by variable or two-component error models <doi:10.3390/environments6120124>. Hierarchical degradation models can be fitted using nonlinear mixed-effects model packages as a back end <doi:10.3390/environments8080071>. Please note that no warranty is implied for correctness of results or fitness for a particular purpose."> +<meta property="og:description" content="Calculation routines based on the FOCUS Kinetics Report (2006, 2014). Includes a function for conveniently defining differential equation models, model solution based on eigenvalues if possible or using numerical solvers. If a C compiler (on windows: Rtools) is installed, differential equation models are solved using automatically generated C functions. Non-constant errors can be taken into account using variance by variable or two-component error models <doi:10.3390/environments6120124>. Hierarchical degradation models can be fitted using nonlinear mixed-effects model packages as a back end <doi:10.3390/environments8080071>. Please note that no warranty is implied for correctness of results or fitness for a particular purpose."> +<meta name="robots" content="noindex"> +</head> +<body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"> +<li class="nav-item"><a class="nav-link" href="reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"> +<li><a class="dropdown-item" href="articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul> +</li> +<li class="nav-item"><a class="nav-link" href="coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="news/index.html">News</a></li> + </ul> +<ul class="navbar-nav"> +<li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="search.json"> +</form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul> +</div> + + + </div> +</nav><div class="container template-home"> +<div class="row"> + <main id="main" class="col-md-9"><div class="section level1"> +<div class="page-header"><h1 id="mkin">mkin<a class="anchor" aria-label="anchor" href="#mkin"></a> +</h1></div> +<!-- badges: start --> + +<p>The <a href="https://www.r-project.org" class="external-link">R</a> package <strong>mkin</strong> provides calculation routines for the analysis of chemical degradation data, including <b>m</b>ulticompartment <b>kin</b>etics as needed for modelling the formation and decline of transformation products, or if several degradation compartments are involved. It provides stable functionality for kinetic evaluations according to the FOCUS guidance (see below for details). In addition, it provides functionality to do hierarchical kinetics based on nonlinear mixed-effects models.</p> +<div class="section level2"> +<h2 id="installation">Installation<a class="anchor" aria-label="anchor" href="#installation"></a> +</h2> +<p>You can install the latest released version from <a href="https://cran.r-project.org/package=mkin" class="external-link">CRAN</a> from within R:</p> +<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r"> +<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/utils/install.packages.html" class="external-link">install.packages</a></span><span class="op">(</span><span class="st">"mkin"</span><span class="op">)</span></span></code></pre></div> +</div> +<div class="section level2"> +<h2 id="background">Background<a class="anchor" aria-label="anchor" href="#background"></a> +</h2> +<p>In the regulatory evaluation of chemical substances like plant protection products (pesticides), biocides and other chemicals, degradation data play an important role. For the evaluation of pesticide degradation experiments, detailed guidance and various helpful tools have been developed as detailed in ‘Credits and historical remarks’ below. This package aims to provide a one stop solution for degradation kinetics, addressing modellers that are willing to, or even prefer to work with R.</p> +</div> +<div class="section level2"> +<h2 id="basic-usage">Basic usage<a class="anchor" aria-label="anchor" href="#basic-usage"></a> +</h2> +<p>For a start, have a look at the code examples provided for <a href="https://pkgdown.jrwb.de/mkin/reference/plot.mkinfit.html"><code>plot.mkinfit</code></a> and <a href="https://pkgdown.jrwb.de/mkin/reference/plot.mmkin.html"><code>plot.mmkin</code></a>, and at the package vignettes <a href="https://pkgdown.jrwb.de/mkin/articles/FOCUS_L.html"><code>FOCUS L</code></a> and <a href="https://pkgdown.jrwb.de/mkin/articles/FOCUS_D.html"><code>FOCUS D</code></a>.</p> +</div> +<div class="section level2"> +<h2 id="documentation">Documentation<a class="anchor" aria-label="anchor" href="#documentation"></a> +</h2> +<p>The HTML documentation of the latest version released to CRAN is available at <a href="https://pkgdown.jrwb.de/mkin/">jrwb.de</a> and <a href="https://jranke.github.io/mkin/" class="external-link">github</a>.</p> +<p>Documentation of the development version is found in the <a href="https://pkgdown.jrwb.de/mkin/dev/">‘dev’ subdirectory</a>. In the articles section of this documentation, you can also find demonstrations of the application of nonlinear hierarchical models, also known as nonlinear mixed-effects models, to more complex data, including transformation products and covariates.</p> +</div> +<div class="section level2"> +<h2 id="features">Features<a class="anchor" aria-label="anchor" href="#features"></a> +</h2> +<div class="section level3"> +<h3 id="general">General<a class="anchor" aria-label="anchor" href="#general"></a> +</h3> +<ul> +<li>Highly flexible model specification using <a href="https://pkgdown.jrwb.de/mkin/reference/mkinmod.html"><code>mkinmod</code></a>, including equilibrium reactions and using the single first-order reversible binding (SFORB) model, which will automatically create two state variables for the observed variable.</li> +<li>Model solution (forward modelling) in the function <a href="https://pkgdown.jrwb.de/mkin/reference/mkinpredict.html"><code>mkinpredict</code></a> is performed either using the analytical solution for the case of parent only degradation or some simple models involving a single transformation product, , an eigenvalue based solution if only simple first-order (SFO) or SFORB kinetics are used in the model, or using a numeric solver from the <code>deSolve</code> package (default is <code>lsoda</code>).</li> +<li>The usual one-sided t-test for significant difference from zero is shown based on estimators for the untransformed parameters.</li> +<li>Summary and plotting functions. The <code>summary</code> of an <code>mkinfit</code> object is in fact a full report that should give enough information to be able to approximately reproduce the fit with other tools.</li> +<li>The chi-squared error level as defined in the FOCUS kinetics guidance (see below) is calculated for each observed variable.</li> +<li>The ‘variance by variable’ error model which is often fitted using Iteratively Reweighted Least Squares (IRLS) can be specified as <code>error_model = "obs"</code>.</li> +</ul> +</div> +<div class="section level3"> +<h3 id="unique-in-mkin">Unique in mkin<a class="anchor" aria-label="anchor" href="#unique-in-mkin"></a> +</h3> +<ul> +<li>Three different error models can be selected using the argument <code>error_model</code> to the <a href="https://pkgdown.jrwb.de/mkin/reference/mkinfit.html"><code>mkinfit</code></a> function. A two-component error model similar to the one proposed by <a href="https://pkgdown.jrwb.de/mkin/reference/sigma_twocomp.html">Rocke and Lorenzato</a> can be selected using the argument <code>error_model = "tc"</code>.</li> +<li>Model comparisons using the Akaike Information Criterion (AIC) are supported which can also be used for non-constant variance. In such cases the FOCUS chi-squared error level is not meaningful.</li> +<li>By default, kinetic rate constants and kinetic formation fractions are transformed internally using <a href="https://pkgdown.jrwb.de/mkin/reference/transform_odeparms.html"><code>transform_odeparms</code></a> so their estimators can more reasonably be expected to follow a normal distribution.</li> +<li>When parameter estimates are backtransformed to match the model definition, confidence intervals calculated from standard errors are also backtransformed to the correct scale, and will not include meaningless values like negative rate constants or formation fractions adding up to more than 1, which cannot occur in a single experiment with a single defined radiolabel position.</li> +<li>When a metabolite decline phase is not described well by SFO kinetics, SFORB kinetics can be used for the metabolite. Mathematically, the SFORB model is equivalent to the DFOP model. However, the SFORB model has the advantage that there is a mechanistic interpretation of the model parameters.</li> +<li>Nonlinear mixed-effects models (hierarchical models) can be created from fits of the same degradation model to different datasets for the same compound by using the <a href="https://pkgdown.jrwb.de/mkin/reference/nlme.mmkin.html">nlme.mmkin</a> and <a href="https://pkgdown.jrwb.de/mkin/reference/saem.html">saem.mmkin</a> methods. Note that the convergence of the nlme fits depends on the quality of the data. Convergence is better for simple models and data for many groups (e.g. soils). The saem method uses the <code>saemix</code> package as a backend. Analytical solutions suitable for use with this package have been implemented for parent only models and the most important models including one metabolite (SFO-SFO and DFOP-SFO). Fitting other models with <code>saem.mmkin</code>, while it makes use of the compiled ODE models that mkin provides, has longer run times (from a couple of minutes to more than an hour).</li> +</ul> +</div> +<div class="section level3"> +<h3 id="performance">Performance<a class="anchor" aria-label="anchor" href="#performance"></a> +</h3> +<ul> +<li>Parallel fitting of several models to several datasets is supported, see for example <a href="https://pkgdown.jrwb.de/mkin/reference/plot.mmkin.html"><code>plot.mmkin</code></a>.</li> +<li>If a C compiler is installed, the kinetic models are compiled from automatically generated C code, see <a href="https://pkgdown.jrwb.de/mkin/articles/web_only/compiled_models.html">vignette <code>compiled_models</code></a>. The autogeneration of C code was inspired by the <a href="https://github.com/karlines/ccSolve" class="external-link"><code>ccSolve</code></a> package. Thanks to Karline Soetaert for her work on that.</li> +<li>Even if no compiler is installed, many degradation models still give <a href="https://pkgdown.jrwb.de/mkin/articles/web_only/benchmarks.html">very good performance</a>, as current versions of mkin also have <a href="https://jrwb.de/performance-improvements-mkin/" class="external-link">analytical solutions for some models with one metabolite</a>, and if SFO or SFORB are used for the parent compound, Eigenvalue based solutions of the degradation model are available.</li> +</ul> +</div> +</div> +<div class="section level2"> +<h2 id="gui">GUI<a class="anchor" aria-label="anchor" href="#gui"></a> +</h2> +<p>There is a graphical user interface that may be useful. Please refer to its <a href="https://pkgdown.jrwb.de/gmkin/" class="external-link">documentation page</a> for installation instructions and a manual. It only supports evaluations using (generalised) nonlinear regression, but not simultaneous fits using nonlinear mixed-effects models.</p> +</div> +<div class="section level2"> +<h2 id="news">News<a class="anchor" aria-label="anchor" href="#news"></a> +</h2> +<p>There is a list of changes for the latest <a href="https://cran.r-project.org/package=mkin/news/news.html" class="external-link">CRAN release</a> and one for each github branch, e.g. <a href="https://github.com/jranke/mkin/blob/main/NEWS.md" class="external-link">the main branch</a>.</p> +</div> +<div class="section level2"> +<h2 id="credits-and-historical-remarks">Credits and historical remarks<a class="anchor" aria-label="anchor" href="#credits-and-historical-remarks"></a> +</h2> +<p><code>mkin</code> would not be possible without the underlying software stack consisting of, among others, R and the package <a href="https://cran.r-project.org/package=deSolve" class="external-link">deSolve</a>. In previous version, <code>mkin</code> was also using the functionality of the <a href="https://cran.r-project.org/package=FME" class="external-link">FME</a> package. Please refer to the <a href="https://cran.r-project.org/package=mkin" class="external-link">package page on CRAN</a> for the full list of imported and suggested R packages. Also, <a href="https://debian.org" class="external-link">Debian Linux</a>, the vim editor and the <a href="https://github.com/jalvesaq/Nvim-R" class="external-link">Nvim-R</a> plugin have been invaluable in its development.</p> +<p><code>mkin</code> could not have been written without me being introduced to regulatory fate modelling of pesticides by Adrian Gurney during my time at Harlan Laboratories Ltd (formerly RCC Ltd). <code>mkin</code> greatly profits from and largely follows the work done by the <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">FOCUS Degradation Kinetics Workgroup</a>, as detailed in their guidance document from 2006, slightly updated in 2011 and in 2014.</p> +<p>Also, it was inspired by the first version of KinGUI developed by BayerCropScience, which is based on the MatLab runtime environment.</p> +<p>The companion package <a href="http://kinfit.r-forge.r-project.org/kinfit_static/index.html" class="external-link">kinfit</a> (now deprecated) was <a href="https://r-forge.r-project.org/scm/viewvc.php?view=rev&root=kinfit&revision=2" class="external-link">started in 2008</a> and <a href="https://cran.r-project.org/src/contrib/Archive/kinfit/" class="external-link">first published</a> on CRAN on 01 May 2010.</p> +<p>The first <code>mkin</code> code was <a href="https://r-forge.r-project.org/scm/viewvc.php?view=rev&root=kinfit&revision=8" class="external-link">published on 11 May 2010</a> and the <a href="https://cran.r-project.org/src/contrib/Archive/mkin/" class="external-link">first CRAN version</a> on 18 May 2010.</p> +<p>In 2011, Bayer Crop Science started to distribute an R based successor to KinGUI named KinGUII whose R code is based on <code>mkin</code>, but which added, among other refinements, a closed source graphical user interface (GUI), iteratively reweighted least squares (IRLS) optimisation of the variance for each of the observed variables, and Markov Chain Monte Carlo (MCMC) simulation functionality, similar to what is available e.g. in the <code>FME</code> package.</p> +<p>Somewhat in parallel, Syngenta has sponsored the development of an <code>mkin</code> and KinGUII based GUI application called CAKE, which also adds IRLS and MCMC, is more limited in the model formulation, but puts more weight on usability. CAKE is available for download from the <a href="https://cake-kinetics.org" class="external-link">CAKE website</a>, where you can also find a zip archive of the R scripts derived from <code>mkin</code>, published under the GPL license.</p> +<p>Finally, there is <a href="https://github.com/zhenglei-gao/KineticEval" class="external-link">KineticEval</a>, which contains some further development of the scripts used for KinGUII.</p> +<p>Thanks to René Lehmann, formerly working at the Umweltbundesamt, for the nice cooperation on parameter transformations, especially the isometric log-ratio transformation that is now used for formation fractions in case there are more than two transformation targets.</p> +<p>Many inspirations for improvements of mkin resulted from doing kinetic evaluations of degradation data for my clients while working at Harlan Laboratories and at Eurofins Regulatory AG, and now as an independent consultant.</p> +<p>Funding was received from the Umweltbundesamt in the course of the projects</p> +<ul> +<li>Project Number 27452 (Testing and validation of modelling software as an alternative to ModelMaker 4.0, 2014-2015)</li> +<li>Project Number 56703 (Optimization of gmkin for routine use in the Umweltbundesamt, 2015)</li> +<li>Project Number 92570 (Update of Project Number 27452, 2017-2018)</li> +<li>Project Number 112407 (Testing the feasibility of using an error model according to Rocke and Lorenzato for more realistic parameter estimates in the kinetic evaluation of degradation data, 2018-2019)</li> +<li>Project Number 120667 (Development of objective criteria for the evaluation of the visual fit in the kinetic evaluation of degradation data, 2019-2020)</li> +<li>Project Number 146839 (Checking the feasibility of using mixed-effects models for the derivation of kinetic modelling parameters from degradation studies, 2020-2021)</li> +<li>Project Number 173340 (Application of nonlinear hierarchical models to the kinetic evaluation of chemical degradation data)</li> +</ul> +<p>Thanks to everyone involved for collaboration and support!</p> +<p>Thanks are due also to Emmanuelle Comets, maintainer of the saemix package, for her interest and support for using the SAEM algorithm and its implementation in saemix for the evaluation of chemical degradation data.</p> +<p>Regarding the application of nonlinear mixed-effects models to degradation data, von Götz et al (1999) have already proposed to use this technique in the context of environmental risk assessments of pesticides. However, this work was apparently not followed up, which is why we had to independently arrive at the idea and missed to cite this previous work on the topic in our first publications.</p> +</div> +<div class="section level2"> +<h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a> +</h2> +<table class="table"> +<tr> +<td> +Ranke J (2023) Application of nonlinear hierarchical models to the kinetic evaluation of chemical degradation data - Guidance for the use of an R markdown template file. <a href="https://www.umweltbundesamt.de/publikationen/application-of-nonlinear-hierarchical-models-to-the" class="external-link">Umweltbundesamt TEXTE 151/2023</a> +</td> +</tr> +<tr> +<td> +Ranke J, Wöltjen J, Schmidt J, and Comets E (2021) Taking kinetic evaluations of degradation data to the next level with nonlinear mixed-effects models. <i>Environments</i> <b>8</b> (8) 71 <a href="https://doi.org/10.3390/environments8080071" class="external-link">doi:10.3390/environments8080071</a> +</td> +</tr> +<tr> +<td> +Ranke J, Meinecke S (2019) Error Models for the Kinetic Evaluation of Chemical Degradation Data <i>Environments</i> <b>6</b> (12) 124 <a href="https://doi.org/10.3390/environments6120124" class="external-link">doi:10.3390/environments6120124</a> +</td> +</tr> +<tr> +<td> +Ranke J, Wöltjen J, Meinecke S (2018) Comparison of software tools for kinetic evaluation of chemical degradation data <i>Environmental Sciences Europe</i> <b>30</b> 17 <a href="https://doi.org/10.1186/s12302-018-0145-1" class="external-link">doi:10.1186/s12302-018-0145-1</a> +</td> +</tr> +<tr> +<td> +Von Götz N, Nörtersheuser P, Richter O (1999) Population based analysis of pesticide kinetics <i>Chemosphere</i> <b>38</b> 7 <a href="https://doi.org/10.1016/S0045-6535(98)00388-9" class="external-link">doi:10.1016/S0045-6535(98)00388-9</a> +</td> +</tr> +</table> +</div> +<div class="section level2"> +<h2 id="development">Development<a class="anchor" aria-label="anchor" href="#development"></a> +</h2> +<p>Contributions are welcome!</p> +</div> +</div> + </main><aside class="col-md-3"><div class="links"> +<h2 data-toc-skip>Links</h2> +<ul class="list-unstyled"> +<li><a href="https://cloud.r-project.org/package=mkin" class="external-link">View on CRAN</a></li> +<li><a href="https://github.com/jranke/mkin/" class="external-link">Browse source code</a></li> +<li><a href="https://github.com/jranke/mkin/issues/" class="external-link">Report a bug</a></li> +</ul> +</div> + +<div class="license"> +<h2 data-toc-skip>License</h2> +<ul class="list-unstyled"> +<li>GPL</li> +</ul> +</div> + + +<div class="citation"> +<h2 data-toc-skip>Citation</h2> +<ul class="list-unstyled"> +<li><a href="authors.html#citation">Citing mkin</a></li> +</ul> +</div> + +<div class="developers"> +<h2 data-toc-skip>Developers</h2> +<ul class="list-unstyled"> +<li>Johannes Ranke <br><small class="roles"> Author, maintainer, copyright holder </small> <a href="https://orcid.org/0000-0003-4371-6538" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a> </li> +<li><a href="authors.html">More about authors...</a></li> +</ul> +</div> + +<div class="dev-status"> +<h2 data-toc-skip>Dev status</h2> +<ul class="list-unstyled"> +<li><a href="https://cran.r-project.org/package=mkin" class="external-link"><img src="https://www.r-pkg.org/badges/version/mkin"></a></li> +<li><a href="https://jranke.r-universe.dev/#package:mkin" class="external-link"><img src="https://jranke.r-universe.dev/badges/mkin" alt="mkin status badge"></a></li> +<li><a href="https://app.travis-ci.com/jranke/mkin" class="external-link"><img src="https://app.travis-ci.com/jranke/mkin.svg?token=Sq9VuYWyRz2FbBLxu6DK&branch=main" alt="Build Status"></a></li> +</ul> +</div> + + </aside> +</div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer> +</div> + + + + + + </body> +</html> diff --git a/docs/dev/katex-auto.js b/docs/dev/katex-auto.js new file mode 100644 index 00000000..20651d9f --- /dev/null +++ b/docs/dev/katex-auto.js @@ -0,0 +1,14 @@ +// https://github.com/jgm/pandoc/blob/29fa97ab96b8e2d62d48326e1b949a71dc41f47a/src/Text/Pandoc/Writers/HTML.hs#L332-L345 +document.addEventListener("DOMContentLoaded", function () { + var mathElements = document.getElementsByClassName("math"); + var macros = []; + for (var i = 0; i < mathElements.length; i++) { + var texText = mathElements[i].firstChild; + if (mathElements[i].tagName == "SPAN") { + katex.render(texText.data, mathElements[i], { + displayMode: mathElements[i].classList.contains("display"), + throwOnError: false, + macros: macros, + fleqn: false + }); + }}}); diff --git a/docs/dev/lightswitch.js b/docs/dev/lightswitch.js new file mode 100644 index 00000000..9467125a --- /dev/null +++ b/docs/dev/lightswitch.js @@ -0,0 +1,85 @@ + +/*! + * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under the Creative Commons Attribution 3.0 Unported License. + * Updates for {pkgdown} by the {bslib} authors, also licensed under CC-BY-3.0. + */ + +const getStoredTheme = () => localStorage.getItem('theme') +const setStoredTheme = theme => localStorage.setItem('theme', theme) + +const getPreferredTheme = () => { + const storedTheme = getStoredTheme() + if (storedTheme) { + return storedTheme + } + + return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' +} + +const setTheme = theme => { + if (theme === 'auto') { + document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) + } else { + document.documentElement.setAttribute('data-bs-theme', theme) + } +} + +function bsSetupThemeToggle () { + 'use strict' + + const showActiveTheme = (theme, focus = false) => { + var activeLabel, activeIcon; + + document.querySelectorAll('[data-bs-theme-value]').forEach(element => { + const buttonTheme = element.getAttribute('data-bs-theme-value') + const isActive = buttonTheme == theme + + element.classList.toggle('active', isActive) + element.setAttribute('aria-pressed', isActive) + + if (isActive) { + activeLabel = element.textContent; + activeIcon = element.querySelector('span').classList.value; + } + }) + + const themeSwitcher = document.querySelector('#dropdown-lightswitch') + if (!themeSwitcher) { + return + } + + themeSwitcher.setAttribute('aria-label', activeLabel) + themeSwitcher.querySelector('span').classList.value = activeIcon; + + if (focus) { + themeSwitcher.focus() + } + } + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { + const storedTheme = getStoredTheme() + if (storedTheme !== 'light' && storedTheme !== 'dark') { + setTheme(getPreferredTheme()) + } + }) + + window.addEventListener('DOMContentLoaded', () => { + showActiveTheme(getPreferredTheme()) + + document + .querySelectorAll('[data-bs-theme-value]') + .forEach(toggle => { + toggle.addEventListener('click', () => { + const theme = toggle.getAttribute('data-bs-theme-value') + setTheme(theme) + setStoredTheme(theme) + showActiveTheme(theme, true) + }) + }) + }) +} + +setTheme(getPreferredTheme()); +bsSetupThemeToggle(); diff --git a/docs/dev/link.svg b/docs/dev/link.svg new file mode 100644 index 00000000..88ad8276 --- /dev/null +++ b/docs/dev/link.svg @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#75AADB;} +</style> +<path class="st0" d="M4,11.3h1.3v1.3H4c-2,0-4-2.3-4-4.7s2.1-4.7,4-4.7h5.3c1.9,0,4,2.3,4,4.7c0,1.9-1.2,3.6-2.7,4.3v-1.5 + C11.4,10.2,12,9.1,12,8c0-1.7-1.4-3.3-2.7-3.3H4C2.7,4.7,1.3,6.3,1.3,8S2.7,11.3,4,11.3z M16,7.3h-1.3v1.3H16c1.3,0,2.7,1.6,2.7,3.3 + s-1.4,3.3-2.7,3.3h-5.3C9.4,15.3,8,13.7,8,12c0-1.1,0.6-2.2,1.3-2.8V7.7C7.9,8.4,6.7,10.1,6.7,12c0,2.4,2.1,4.7,4,4.7H16 + c1.9,0,4-2.3,4-4.7S18,7.3,16,7.3z"/> +</svg> diff --git a/docs/dev/news/index.html b/docs/dev/news/index.html new file mode 100644 index 00000000..5e420fb4 --- /dev/null +++ b/docs/dev/news/index.html @@ -0,0 +1,675 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Changelog • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Changelog"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="active nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-news"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Changelog</h1> + <small>Source: <a href="https://github.com/jranke/mkin/blob/HEAD/NEWS.md" class="external-link"><code>NEWS.md</code></a></small> + </div> + + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.9.9000" id="mkin-1299000-unreleased">mkin 1.2.9.9000 (unreleased)<a class="anchor" aria-label="anchor" href="#mkin-1299000-unreleased"></a></h2> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.9" id="mkin-129-2024-02-13">mkin 1.2.9 (2024-02-13)<a class="anchor" aria-label="anchor" href="#mkin-129-2024-02-13"></a></h2> +<ul><li><p>‘R/plot.mixed.R’: Support more than 25 datasets</p></li> +<li><p>‘R/mkinfit.R’: Support passing the observed data as a ‘tibble’</p></li> +<li><p>‘R/parplot.R’: Support multistart objects with covariate models and filter negative values of scaled parameters (with a warning) for plotting.</p></li> +<li><p>’R/create_deg_func.R: Make sure that no reversible reactions are specified in the case of two observed variables, as this is not supported</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.8" id="mkin-128-unreleased">mkin 1.2.8 (unreleased)<a class="anchor" aria-label="anchor" href="#mkin-128-unreleased"></a></h2> +<ul><li>‘R/{mhmkin,status}.R’: Deal with ‘saem’ fits that fail when updating an ‘mhmkin’ object</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.7" id="mkin-127-unreleased">mkin 1.2.7 (unreleased)<a class="anchor" aria-label="anchor" href="#mkin-127-unreleased"></a></h2> +<ul><li>‘R/illparms.R’: Fix a bug that prevented an ill-defined random effect to be found if there was only one random effect in the model. Also add a test for this.</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.6" id="mkin-126-2023-10-14">mkin 1.2.6 (2023-10-14)<a class="anchor" aria-label="anchor" href="#mkin-126-2023-10-14"></a></h2> +<ul><li>‘inst/rmarkdown/templates/hierarchical_kinetics/skeleton/skeleton.Rmd’: Fix an erroneous call to the ‘endpoints()’ function</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.5" id="mkin-125-2023-08-09">mkin 1.2.5 (2023-08-09)<a class="anchor" aria-label="anchor" href="#mkin-125-2023-08-09"></a></h2> +<ul><li><p>‘vignettes/mesotrione_parent_2023.rnw’: Prebuilt vignette showing how covariate modelling can be done for all relevant parent degradation models.</p></li> +<li><p>‘inst/testdata/mesotrione_soil_efsa_2016}.xlsx’: Another example spreadsheets for use with ‘read_spreadsheet()’, featuring pH dependent degradation</p></li> +<li><p>R/illparms.R: Fix the detection of ill-defined slope or error model parameters for the case that the estimate is negative</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.4" id="mkin-124-2023-05-19">mkin 1.2.4 (2023-05-19)<a class="anchor" aria-label="anchor" href="#mkin-124-2023-05-19"></a></h2> +<ul><li>R/endpoints.R: Fix the calculation of endpoints for user specified covariate values</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.3.1" id="mkin-1231-unreleased">mkin 1.2.3.1 (unreleased)<a class="anchor" aria-label="anchor" href="#mkin-1231-unreleased"></a></h2> +<ul><li>Small fixes to get the online docs right (example code in R/hierarchical_kinetics, cluster setup in cyantraniliprole and dmta pathway vignettes, graphics and model comparison in multistart vignette), rebuild online docs</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.3" id="mkin-123-2023-04-17">mkin 1.2.3 (2023-04-17)<a class="anchor" aria-label="anchor" href="#mkin-123-2023-04-17"></a></h2> +<ul><li><p>‘R/{endpoints,parms,plot.mixed.mmkin,summary.saem.mmkin}.R’: Calculate parameters and endpoints and plot population curves for specific covariate values, or specific percentiles of covariate values used in saem fits.</p></li> +<li><p>Depend on current deSolve version with the possibility to avoid resolving symbols in a shared library (compiled models) over and over, thanks to Thomas Petzoldt.</p></li> +<li><p>‘inst/rmarkdown/templates/hierarchical_kinetics/skeleton/skeleton.Rmd’: Start a new cluster after creating a model stored in the user specified location, because otherwise symbols are not found by the worker processes.</p></li> +<li><p>‘tests/testthat/test_compiled_symbols.R’: Some new tests to control problems that may have been introduced by the possibility to use pre-resolved symbols.</p></li> +<li><p>‘R/mkinerrmin.R’: Fix typo in subset (use of = instead of ==), thanks to Sebastian Meyer for spotting this during his work on R 4.3.0.</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.2" id="mkin-122-unreleased">mkin 1.2.2 (unreleased)<a class="anchor" aria-label="anchor" href="#mkin-122-unreleased"></a></h2> +<ul><li><p>‘inst/rmarkdown/templates/hierarchical_kinetics’: R markdown template to facilitate the application of hierarchical kinetic models.</p></li> +<li><p>‘inst/testdata/{cyantraniliprole_soil_efsa_2014,lambda-cyhalothrin_soil_efsa_2014}.xlsx’: Example spreadsheets for use with ‘read_spreadsheet()’.</p></li> +<li><p>‘R/mhmkin.R’: Allow an ‘illparms.mhmkin’ object or a list with suitable dimensions as value of the argument ‘no_random_effects’, making it possible to exclude random effects that were ill-defined in simpler variants of the set of degradation models. Remove the possibility to exclude random effects based on separate fits, as it did not work well.</p></li> +<li><p>‘R/summary.saem.mmkin.R’: List all initial parameter values in the summary, including random effects and error model parameters. Avoid redundant warnings that occurred in the calculation of correlations of the fixed effects in the case that the Fisher information matrix could not be inverted. List correlations of random effects if specified by the user in the covariance model.</p></li> +<li><p>‘R/parplot.R’: Possibility to select the top ‘llquant’ fraction of the fits for the parameter plots, and improved legend text.</p></li> +<li><p>‘R/illparms.R’: Also check if confidence intervals for slope parameters in covariate models include zero. Only implemented for fits obtained with the saemix backend.</p></li> +<li><p>‘R/parplot.R’: Make the function work also in the case that some of the multistart runs failed.</p></li> +<li><p>‘R/intervals.R’: Include correlations of random effects in the model in case there are any.</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.1" id="mkin-121-2022-11-19">mkin 1.2.1 (2022-11-19)<a class="anchor" aria-label="anchor" href="#mkin-121-2022-11-19"></a></h2> +<ul><li><p>‘{data,R}/ds_mixed.rda’: Include the test data in the package instead of generating it in ‘tests/testthat/setup_script.R’. Refactor the generating code to make it consistent and update tests.</p></li> +<li><p>‘tests/testthat/setup_script.R’: Excluded another ill-defined random effect for the DFOP fit with ‘saem’, in an attempt to avoid a platform dependence that surfaced on Fedora systems on the CRAN check farm</p></li> +<li><p>‘tests/testthat/test_mixed.R’: Round parameters found by saemix to two significant digits before printing, to also help to avoid platform dependence of tests</p></li> +<li><p>‘R/saem.R’: Fix a bug that prevented that ‘error.ini’ is passed to ‘saemix_model’, and set default to c(1, 1) to avoid changing test results</p></li> +<li><p>‘R/parplot.R’: Show initial values for error model parameters</p></li> +<li><p>‘R/loglik.mkinfit.R’: Add ‘nobs’ attribute to the resulting ‘logLik’ object, in order to make test_AIC.R succeed on current R-devel</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.2.0" id="mkin-120-2022-11-17">mkin 1.2.0 (2022-11-17)<a class="anchor" aria-label="anchor" href="#mkin-120-2022-11-17"></a></h2> +<ul><li><p>‘R/saem.R’: ‘logLik’, ‘update’ and ‘anova’ methods for ‘saem.mmkin’ objects.</p></li> +<li><p>‘R/saem.R’: Automatic estimation of start parameters for random effects for the case of mkin transformations, nicely improving convergence and reducing problems with iterative ODE solutions.</p></li> +<li><p>‘R/status.R’: New generic to show status information for fit array objects with methods for ‘mmkin’, ‘mhmkin’ and ‘multistart’ objects.</p></li> +<li><p>‘R/mhmkin.R’: New method for performing multiple hierarchical mkin fits in one function call, optionally in parallel.</p></li> +<li><p>‘R/mhmkin.R’: ‘anova.mhmkin’ for conveniently comparing the resulting fits.</p></li> +<li><p>‘R/illparms.R’: New generic to show ill-defined parameters with methods for ‘mkinfit’, ‘mmkin’, ‘saem.mmkin’ and ‘mhmkin’ objects.</p></li> +<li><p>‘R/multistart.R’: New method for testing multiple start parameters for hierarchical model fits, with function ‘llhist’ and new generic ‘parplot’ for diagnostics, and new generics ‘which.best’ and ‘best’ for extracting the fit with the highest likelihood</p></li> +<li><p>‘R/summary.mmkin.R’: Summary method for mmkin objects.</p></li> +<li><p>‘R/saem.R’: Implement and test saemix transformations for FOMC and HS. Also, error out if saemix transformations are requested but not supported.</p></li> +<li><p>‘R/read_spreadsheet.R’: Conveniently read in data from a spreadsheet file.</p></li> +<li><p>‘R/tex_listings.R’: Conveniently include summaries of fit objects in R markdown documents that are compiled to LaTeX.</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.1.1" id="mkin-111-2022-07-12">mkin 1.1.1 (2022-07-12)<a class="anchor" aria-label="anchor" href="#mkin-111-2022-07-12"></a></h2> +<ul><li><p>’R/{mkinmod,mkinpredict}.R: Store DLL information in mkinmod objects and use that information in mkinpredict to avoid a performance regression brought by a bugfix in R 4.2.x. Thanks to Tomas Kalibera for his analysis of the problem on the r-package-devel list and his suggestion on how to fix it.</p></li> +<li><p>‘vignettes/FOCUS_L.rmd’: Remove an outdated note referring to a failure to calculate the covariance matrix for DFOP with the L2 dataset. Since 0.9.45.5 the covariance matrix is available</p></li> +<li><p>‘vignettes/web_only/benchmarks.rmd’: Add the first benchmark data using my laptop system, therefore add the CPU when showing the benchmark results.</p></li> +<li><p>‘dimethenamid_2018’: Update example code to use saemix</p></li> +<li><p>‘CAKE_export’: Check for validity of the map argument, updates</p></li> +<li><p>‘saem()’: Slightly improve speed in the case that no analytical solution for saemix is implemented, activate a test of the respective code</p></li> +<li><p>‘mean_degparms’: New argument ‘default_log_parms’ that makes it possible to supply a surrogate value (default) for log parameters that fail the t-test</p></li> +<li><p>‘plot.mixed.mmkin’: Pass the frame argument also to residual plots, take the ‘default_log_parms’ argument for ‘mean_degparms’ used for constructing approximate population curves, plot population curve last to avoid that it is covered by data</p></li> +<li><p>‘plot.mkinfit’: Respect argument ‘maxabs’ for residual plots, and make it possible to give ylim as a list, for row layouts</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.1.0" id="mkin-110-2022-03-14">mkin 1.1.0 (2022-03-14)<a class="anchor" aria-label="anchor" href="#mkin-110-2022-03-14"></a></h2> +<div class="section level3"> +<h3 id="mixed-effects-models-1-1-0">Mixed-effects models<a class="anchor" aria-label="anchor" href="#mixed-effects-models-1-1-0"></a></h3> +<ul><li><p>Reintroduce the interface to saemix version 3.0 (now on CRAN), in particular the generic function ‘saem’ with a generator ‘saem.mmkin’, currently using ‘saemix_model’ and ‘saemix_data’, summary and plot methods</p></li> +<li><p>‘mean_degparms’: New argument ‘test_log_parms’ that makes the function only consider log-transformed parameters where the untransformed parameters pass the t-test for a certain confidence level. This can be used to obtain more plausible starting parameters for the different mixed-effects model backends</p></li> +<li><p>‘plot.mixed.mmkin’: Gains arguments ‘test_log_parms’ and ‘conf.level’</p></li> +<li><p>‘vignettes/web_only/dimethenamid_2018.rmd’: Example evaluations of the dimethenamid data.</p></li> +<li><p>‘intervals’: Provide a method of this nlme function for ‘saem.mmkin’ objects.</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.0.5" id="mkin-105-2021-09-15">mkin 1.0.5 (2021-09-15)<a class="anchor" aria-label="anchor" href="#mkin-105-2021-09-15"></a></h2> +<ul><li>‘dimethenamid_2018’: Correct the data for the Borstel soil. The five observations from Staudenmaier (2013) that were previously stored as “Borstel 2” are actually just a subset of the 16 observations in “Borstel 1” which is now simply “Borstel”</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.0.4" id="mkin-104-2021-04-20">mkin 1.0.4 (2021-04-20)<a class="anchor" aria-label="anchor" href="#mkin-104-2021-04-20"></a></h2> +<ul><li><p>All plotting functions setting graphical parameters: Use on.exit() for resetting graphical parameters</p></li> +<li><p>‘plot.mkinfit’: Use xlab and xlim for the residual plot if show_residuals is TRUE</p></li> +<li><p>‘mmkin’: Use cores = 1 per default on Windows to make it easier for first time users</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.0.3" id="mkin-103-2021-02-15">mkin 1.0.3 (2021-02-15)<a class="anchor" aria-label="anchor" href="#mkin-103-2021-02-15"></a></h2> +<ul><li>Review and update README, the ‘Introduction to mkin’ vignette and some of the help pages</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.0.2" id="mkin-102-unreleased">mkin 1.0.2 (Unreleased)<a class="anchor" aria-label="anchor" href="#mkin-102-unreleased"></a></h2> +<ul><li>‘mkinfit’: Keep model names stored in ‘mkinmod’ objects, avoiding their loss in ‘gmkin’</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.0.1" id="mkin-101-2021-02-10">mkin 1.0.1 (2021-02-10)<a class="anchor" aria-label="anchor" href="#mkin-101-2021-02-10"></a></h2> +<ul><li><p>‘confint.mmkin’, ‘nlme.mmkin’, ‘transform_odeparms’: Fix example code in dontrun sections that failed with current defaults</p></li> +<li><p>‘logLik.mkinfit’: Improve example code to avoid warnings and show convenient syntax</p></li> +<li><p>‘mkinresplot’: Re-add Katrin Lindenberger as coauthor who was accidentally removed long ago</p></li> +<li><p>Remove tests relying on non-convergence of the FOMC fit to the FOCUS A dataset as this is platform dependent (revealed by the new additional tests on CRAN, thanks!)</p></li> +<li><p>Increase test tolerance for some parameter comparisons that also proved to be platform dependent</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="1.0.0" id="mkin-100-2021-02-03">mkin 1.0.0 (2021-02-03)<a class="anchor" aria-label="anchor" href="#mkin-100-2021-02-03"></a></h2> +<div class="section level3"> +<h3 id="general-1-0-0">General<a class="anchor" aria-label="anchor" href="#general-1-0-0"></a></h3> +<ul><li><p>‘mkinmod’ models gain arguments ‘name’ and ‘dll_dir’ which, in conjunction with a current version of the ‘inline’ package, make it possible to still use the DLL used for fast ODE solutions with ‘deSolve’ after saving and restoring the ‘mkinmod’ object.</p></li> +<li><p>‘mkindsg’ R6 class for groups of ‘mkinds’ datasets with metadata</p></li> +<li><p>‘f_norm_temp_focus’ generic function to normalise time intervals using the FOCUS method, with methods for numeric vectors and ‘mkindsg’ objects</p></li> +<li><p>‘D24_2014’ and ‘dimethenamid_2018’ datasets</p></li> +<li><p>‘focus_soil_moisture’ FOCUS default soil moisture data</p></li> +<li><p>‘update’ method for ‘mmkin’ objects</p></li> +<li><p>‘transform_odeparms’, ‘backtransform_odeparms’: Use logit transformation for solitary fractions like the g parameter of the DFOP model, or formation fractions for a pathway to only one target variable</p></li> +<li><p>‘plot.mmkin’: Add a ylab argument, making it possible to customize the y axis label of the panels on the left without affecting the residual plots. Reduce legend size and vertical distance between panels</p></li> +<li><p>‘plot.mkinfit’: Change default ylab from “Observed” to “Residue”. Pass xlab to residual plot if show_residuals is TRUE.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="mixed-effects-models-1-0-0">Mixed-effects models<a class="anchor" aria-label="anchor" href="#mixed-effects-models-1-0-0"></a></h3> +<ul><li><p>‘mixed.mmkin’ New container for mmkin objects for plotting with the ‘plot.mixed.mmkin’ method</p></li> +<li><p>‘plot.mixed.mmkin’ method used for ‘nlme.mmkin’ inheriting from ‘mixed.mmkin’ (currently virtual)</p></li> +<li><p>‘plot’, ‘summary’ and ‘print’ methods for ‘nlme.mmkin’ objects</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.50.3" id="mkin-09503-2020-10-08">mkin 0.9.50.3 (2020-10-08)<a class="anchor" aria-label="anchor" href="#mkin-09503-2020-10-08"></a></h2> +<ul><li><p>‘parms’: Add a method for mmkin objects</p></li> +<li><p>‘mmkin’ and ‘confint(method = ’profile’): Use all cores detected by parallel::detectCores() per default</p></li> +<li><p>‘confint(method = ’profile’): Choose accuracy based on ‘rel_tol’ argument, relative to the bounds obtained by the quadratic approximation</p></li> +<li><p>‘mkinfit’: Make ‘use_of_ff’ = “max” also the default for models specified using short names like “SFO” or “FOMC”</p></li> +<li><p>‘mkinfit’: Run ‘stats::shapiro.test()’ on standardized residuals and warn if p < 0.05</p></li> +<li><p>‘mkinfit’: ‘error_model_algorithm’ = ‘d_3’ does not fail if direct fitting fails, but reports that the results for the threestep algorithm are returned</p></li> +<li><p>‘mmkin’: Do not fail any more if one of the fits fails, but assign the try-error to the respective position in the mmkin object</p></li> +<li><p>‘mkinfit’: Ignore components of state.ini that do not correspond to state variables in the model</p></li> +<li><p>‘endpoints’: Back-calculate DT50 value from DT90 also for the biphasic models DFOP, HS and SFORB</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.50.2" id="mkin-09502-2020-05-12">mkin 0.9.50.2 (2020-05-12)<a class="anchor" aria-label="anchor" href="#mkin-09502-2020-05-12"></a></h2> +<ul><li><p>Increase tolerance for a platform specific test results on the Solaris test machine on CRAN</p></li> +<li><p>Updates and corrections (using the spelling package) to the documentation</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.50.1" id="mkin-09501-2020-05-11">mkin 0.9.50.1 (2020-05-11)<a class="anchor" aria-label="anchor" href="#mkin-09501-2020-05-11"></a></h2> +<ul><li><p>Support SFORB with formation fractions</p></li> +<li><p>‘mkinmod’: Make ‘use_of_ff’ = “max” the default</p></li> +<li><p>Improve performance by a) avoiding expensive calls in the cost function like merge() and data.frame(), and b) by implementing analytical solutions for SFO-SFO and DFOP-SFO</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.49.11" id="mkin-094911-2020-04-20">mkin 0.9.49.11 (2020-04-20)<a class="anchor" aria-label="anchor" href="#mkin-094911-2020-04-20"></a></h2> +<ul><li>Increase a test tolerance to make it pass on all CRAN check machines</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.49.10" id="mkin-094910-2020-04-18">mkin 0.9.49.10 (2020-04-18)<a class="anchor" aria-label="anchor" href="#mkin-094910-2020-04-18"></a></h2> +<ul><li><p>‘nlme.mmkin’: An nlme method for mmkin row objects and an associated S3 class with print, plot, anova and endpoint methods</p></li> +<li><p>‘mean_degparms, nlme_data, nlme_function’: Three new functions to facilitate building nlme models from mmkin row objects</p></li> +<li><p>‘endpoints’: Don’t return the SFORB list component if it’s empty. This reduces distraction and complies with the documentation</p></li> +<li><p>Article in compiled models: Add some platform specific code and suppress warnings about zero values being removed from the FOCUS D dataset</p></li> +<li><p>‘plot.mmkin’: Add the argument ‘standardized’ to avoid warnings that occurred when it was passed as part of the additional arguments captured by the dots (…)</p></li> +<li><p>‘summary.mkinfit’: Add AIC, BIC and log likelihood to the summary</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.49.9" id="mkin-09499-2020-03-31">mkin 0.9.49.9 (2020-03-31)<a class="anchor" aria-label="anchor" href="#mkin-09499-2020-03-31"></a></h2> +<ul><li><p>‘mkinmod’: Use pkgbuild::has_compiler instead of Sys.which(‘gcc’), as the latter will often fail even if Rtools are installed</p></li> +<li><p>‘mkinds’: Use roxygen for documenting fields and methods of this R6 class</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.49.8" id="mkin-09498-2020-01-09">mkin 0.9.49.8 (2020-01-09)<a class="anchor" aria-label="anchor" href="#mkin-09498-2020-01-09"></a></h2> +<ul><li><p>‘aw’: Generic function for calculating Akaike weights, methods for mkinfit objects and mmkin columns</p></li> +<li><p>‘loftest’: Add a lack-of-fit test</p></li> +<li><p>‘plot_res’, ‘plot_sep’ and ‘mkinerrplot’: Add the possibility to show standardized residuals and make it the default for fits with error models other than ‘const’</p></li> +<li><p>‘lrtest.mkinfit’: Improve naming of the compared fits in the case of fixed parameters</p></li> +<li><p>‘confint.mkinfit’: Make the quadratic approximation the default, as the likelihood profiling takes a lot of time, especially if the fit has more than three parameters</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.49.7" id="mkin-09497-2019-11-01">mkin 0.9.49.7 (2019-11-01)<a class="anchor" aria-label="anchor" href="#mkin-09497-2019-11-01"></a></h2> +<ul><li><p>Fix a bug introduced in 0.9.49.6 that occurred if the direct optimisation yielded a higher likelihood than the three-step optimisation in the d_3 algorithm, which caused the fitted parameters of the three-step optimisation to be returned instead of the parameters of the direct optimisation</p></li> +<li><p>Add a ‘nobs’ method for mkinfit objects, enabling the default ‘BIC’ method from the stats package. Also, add a ‘BIC’ method for mmkin column objects.</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.49.6" id="mkin-09496-2019-10-31">mkin 0.9.49.6 (2019-10-31)<a class="anchor" aria-label="anchor" href="#mkin-09496-2019-10-31"></a></h2> +<ul><li><p>Implement a likelihood ratio test as a method for ‘lrtest’ from the lmtest package</p></li> +<li><p>Add an ‘update’ method for mkinfit objects which remembers fitted parameters if appropriate</p></li> +<li><p>Add a ‘residuals’ method for mkinfit objects that supports scaling based on the error model</p></li> +<li><p>Fix a bug in ‘mkinfit’ that prevented summaries of objects fitted with fixed parameters to be generated</p></li> +<li><p>Add ‘parms’ and ‘confint’ methods for mkinfit objects. Confidence intervals based on the quadratic approximation as in the summary, and based on the profile likelihood</p></li> +<li><p>Move long-running tests to tests/testthat/slow with a separate test log. They currently take around 7 minutes on my system</p></li> +<li><p>‘mkinfit’: Clean the code and return functions to calculate the log-likelihood and the sum of squared residuals</p></li> +<li><p>Vignette ‘twa.html’: Add the maximum time weighted average formulas for the hockey stick model</p></li> +<li><p>Support frameless plots (‘frame = FALSE’)</p></li> +<li><p>Support to suppress the chi2 error level (‘show_errmin = FALSE’) in ‘plot.mmkin’</p></li> +<li><p>Update README and the introductory vignette</p></li> +<li><p>Report ‘OLS’ as error_model_algorithm in the summary in the case that the default error_model (‘const’) is used</p></li> +<li><p>Support summarizing ‘mkinfit’ objects generated with versions < 0.9.49.5</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.49.5" id="mkin-09495-2019-07-04">mkin 0.9.49.5 (2019-07-04)<a class="anchor" aria-label="anchor" href="#mkin-09495-2019-07-04"></a></h2> +<ul><li><p>Several algorithms for minimization of the negative log-likelihood for non-constant error models (two-component and variance by variable). In the case the error model is constant variance, least squares is used as this is more stable. The default algorithm ‘d_3’ tries direct minimization and a three-step procedure, and returns the model with the highest likelihood.</p></li> +<li><p>The argument ‘reweight.method’ to mkinfit and mmkin is now obsolete, use ‘error_model’ and ‘error_model_algorithm’ instead</p></li> +<li><p>Add a test that checks if we get the best known AIC for parent only fits to 12 test datasets. Add these test datasets for this purpose.</p></li> +<li><p>New function ‘mkinerrplot’. This function is also used for residual plots in ‘plot.mmkin’ if the argument ‘resplot = “errmod”’ is given, and in ‘plot.mkinfit’ if ‘show_errplot’ is set to TRUE.</p></li> +<li><p>Remove dependency on FME, only use nlminb for optimisation (‘Port’ algorithm). I cannot remember cases where one of the other optimisation algorithms was preferable, except that I sometime used Levenberg-Marquardt for speed in cases where I did not expect to get trapped in a local minimum.</p></li> +<li><p>Use the numDeriv package to calculate hessians. This results in slightly different confidence intervals, takes a bit longer, but is apparently more robust</p></li> +<li><p>Add a simple benchmark vignette to document the impact on performance.</p></li> +<li><p>The code for manual weighting was removed. This functionality might get added again at a later time. For the time being, please use an earlier version, e.g. 0.9.48.1 if you want to do manual weighting.</p></li> +<li><p>The fitting time reported in the summary now includes the time used for calculation of the hessians</p></li> +<li><p>Adapt tests</p></li> +<li><p>Fix an error in the FOCUS chi2 error level calculations that occurred if parameters were specified in parms.ini that were not in the model. A warning was already issued, but when fitting in parallel via mmkin this could go unnoticed.</p></li> +<li><p>Add example datasets obtained from risk assessment reports published by the European Food Safety Agency.</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.48.1" id="mkin-09481-2019-03-04">mkin 0.9.48.1 (2019-03-04)<a class="anchor" aria-label="anchor" href="#mkin-09481-2019-03-04"></a></h2> +<ul><li><p>Add the function ‘logLik.mkinfit’ which makes it possible to calculate an AIC for mkinfit objects</p></li> +<li><p>Add the function ‘AIC.mmkin’ to make it easy to compare columns of mmkin objects</p></li> +<li><p>‘add_err’: Respect the argument giving the number of replicates in the synthetic dataset</p></li> +<li><p>‘max_twa_parent’: Support maximum time weighted average concentration calculations for the hockey stick (HS) model</p></li> +<li><p>‘mkinpredict’: Make the function generic and create a method for mkinfit objects</p></li> +<li><p>‘mkinfit’: Improve the correctness of the fitted two component error model by fitting the mean absolute deviance at each observation against the observed values, weighting with the current two-component error model</p></li> +<li><p>‘tests/testthat/test_irls.R’: Test if the components of the error model used to generate the data can be reproduced with moderate accuracy</p></li> +<li><p>Add the function ‘CAKE_export’ to facilitate cross-checking of results</p></li> +<li><p>Implement the logistic model (only tested for parent fits)</p></li> +<li><p>‘nafta’: Add evaluations according to the NAFTA guidance</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.47.5" id="mkin-09475-2018-09-14">mkin 0.9.47.5 (2018-09-14)<a class="anchor" aria-label="anchor" href="#mkin-09475-2018-09-14"></a></h2> +<ul><li><p>Make the two-component error model stop in cases where it is inadequate to avoid nls crashes on windows</p></li> +<li><p>Move two vignettes to a location where they will not be built on CRAN (to avoid more NOTES from long execution times)</p></li> +<li><p>Exclude more example code from testing on CRAN to avoid NOTES from long execution times</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.47.3" id="mkin-09473">mkin 0.9.47.3<a class="anchor" aria-label="anchor" href="#mkin-09473"></a></h2> +<ul><li><p>‘mkinfit’: Improve fitting the error model for reweight.method = ‘tc’. Add ‘manual’ to possible arguments for ‘weight’</p></li> +<li><p>Test that FOCUS_2006_C can be evaluated with DFOP and reweight.method = ‘tc’</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.47.2" id="mkin-09472-2018-07-19">mkin 0.9.47.2 (2018-07-19)<a class="anchor" aria-label="anchor" href="#mkin-09472-2018-07-19"></a></h2> +<ul><li><p>‘sigma_twocomp’: Rename ‘sigma_rl’ to ‘sigma_twocomp’ as the Rocke and Lorenzato model assumes lognormal distribution for large y. Correct references to the Rocke and Lorenzato model accordingly.</p></li> +<li><p>‘mkinfit’: Use 1.1 as starting value for N parameter of IORE models to obtain convergence in more difficult cases. Show parameter names when ‘trace_parms’ is ‘TRUE’.</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.47.1" id="mkin-09471-2018-02-06">mkin 0.9.47.1 (2018-02-06)<a class="anchor" aria-label="anchor" href="#mkin-09471-2018-02-06"></a></h2> +<ul><li><p>Skip some tests on CRAN and winbuilder to avoid timeouts</p></li> +<li><p>‘test_data_from_UBA_2014’: Added this list of datasets containing experimental data used in the expertise from 2014</p></li> +<li><p>‘mkinfit’: Added the iterative reweighting method ‘tc’ using the two-component error model from Rocke and Lorenzato. NA values in the data are not returned any more.</p></li> +<li><p>‘mkinfit’: Work around a bug in the current FME version that prevented the convergence message to be returned in the case of non-convergence.</p></li> +<li><p>‘summary.mkinfit’: Improved output regarding weighting method. No predictions are returned for NA values in the model (see above).</p></li> +<li><p>‘summary.mkinfit’: Show versions of mkin and R used for fitting (not the ones used for the summary) if the fit was generated with mkin >= 0.9.47.1</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.46.3" id="mkin-09463-2017-11-16">mkin 0.9.46.3 (2017-11-16)<a class="anchor" aria-label="anchor" href="#mkin-09463-2017-11-16"></a></h2> +<ul><li><p><code>README.md</code>, <code>vignettes/mkin.Rmd</code>: URLs were updated</p></li> +<li><p><code>synthetic_data_for_UBA</code>: Add the code used to generate the data in the interest of reproducibility</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.46.2" id="mkin-09462-2017-10-10">mkin 0.9.46.2 (2017-10-10)<a class="anchor" aria-label="anchor" href="#mkin-09462-2017-10-10"></a></h2> +<ul><li><p>Converted the vignette FOCUS_Z from tex/pdf to markdown/html</p></li> +<li><p><code>DESCRIPTION</code>: Add ORCID</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.46.1" id="mkin-09461-2017-09-14">mkin 0.9.46.1 (2017-09-14)<a class="anchor" aria-label="anchor" href="#mkin-09461-2017-09-14"></a></h2> +<ul><li><p><code>plot.mkinfit</code>: Fix scaling of residual plots for the case of separate plots for each observed variable</p></li> +<li><p><code>plot.mkinfit</code>: Use all data points of the fitted curve for y axis scaling for the case of separate plots for each observed variable</p></li> +<li><p>Documentation updates</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.46" id="mkin-0946-2017-07-24">mkin 0.9.46 (2017-07-24)<a class="anchor" aria-label="anchor" href="#mkin-0946-2017-07-24"></a></h2> +<ul><li>Remove <code>test_FOMC_ill-defined.R</code> as it is too platform dependent</li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.45.2" id="mkin-09452-2017-07-24">mkin 0.9.45.2 (2017-07-24)<a class="anchor" aria-label="anchor" href="#mkin-09452-2017-07-24"></a></h2> +<ul><li><p>Rename <code>twa</code> to <code>max_twa_parent</code> to avoid conflict with <code>twa</code> from my <code>pfm</code> package</p></li> +<li><p>Update URLs in documentation</p></li> +<li><p>Limit test code to one core to pass on windows</p></li> +<li><p>Switch from <code>microbenchmark</code> to <code>rbenchmark</code> as the former is not supported on all platforms</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.45.1" id="mkin-09451-2016-12-20">mkin 0.9.45.1 (2016-12-20)<a class="anchor" aria-label="anchor" href="#mkin-09451-2016-12-20"></a></h2> +<div class="section level3"> +<h3 id="new-features-0-9-45-1">New features<a class="anchor" aria-label="anchor" href="#new-features-0-9-45-1"></a></h3> +<ul><li>A <code>twa</code> function, calculating maximum time weighted average concentrations for the parent (SFO, FOMC and DFOP).</li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.45" id="mkin-0945-2016-12-08">mkin 0.9.45 (2016-12-08)<a class="anchor" aria-label="anchor" href="#mkin-0945-2016-12-08"></a></h2> +<div class="section level3"> +<h3 id="minor-changes-0-9-45">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-45"></a></h3> +<ul><li><p><code>plot.mkinfit</code> and <code>plot.mmkin</code>: If the plotting device is <code>tikz</code>, LaTeX markup is being used for the chi2 error in the graphs.</p></li> +<li><p>Use <code>pkgdown</code>, the successor of <code>staticdocs</code> for generating static HTML documentation. Include example output and graphs also for <code>dontrun</code> sections.</p></li> +<li><p><code>plot.mkinfit</code>: Plotting does not fail any more when the compiled model is not available, e.g. because it was removed from the temporary directory. In this case, the uncompiled model is now used for plotting</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.44" id="mkin-0944-2016-06-29">mkin 0.9.44 (2016-06-29)<a class="anchor" aria-label="anchor" href="#mkin-0944-2016-06-29"></a></h2> +<div class="section level3"> +<h3 id="bug-fixes-0-9-44">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-44"></a></h3> +<ul><li>The test <code>test_FOMC_ill-defined</code> failed on several architectures, so the test is now skipped</li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.43" id="mkin-0943-2016-06-28">mkin 0.9.43 (2016-06-28)<a class="anchor" aria-label="anchor" href="#mkin-0943-2016-06-28"></a></h2> +<div class="section level3"> +<h3 id="major-changes-0-9-43">Major changes<a class="anchor" aria-label="anchor" href="#major-changes-0-9-43"></a></h3> +<ul><li><p>The title was changed to <code>Kinetic evaluations of chemical degradation data</code></p></li> +<li><p><code>plot.mkinfit</code>: Add the possibility to show fits (and residual plots if requested) separately for the observed variables</p></li> +<li><p><code>plot.mkinfit</code>: Add the possibility to show the chi2 error levels in the plot, similar to the way they are shown in <code>plot.mmkin</code></p></li> +<li><p><code>plot_sep</code>: Add this function as a convenience wrapper for plotting observed variables of mkinfit objects separately, with chi2 error values and residual plots.</p></li> +<li><p>Vignettes: The main vignette <code>mkin</code> was converted to R markdown and updated. The other vignettes were also updated to show current improved functionality.</p></li> +<li><p>The function <code>add_err</code> was added to the package, making it easy to generate simulated data using an error model based on the normal distribution</p></li> +</ul></div> +<div class="section level3"> +<h3 id="minor-changes-0-9-43">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-43"></a></h3> +<ul><li><p>Remove an outdated reference to the inline package in the <code>compiled_models</code> vignette</p></li> +<li><p><code>mkinfit</code>: Do not error out in cases where the fit converges, but the Jacobian for the untransformed model cost can not be estimated. Give a warning instead and return NA for the t-test results.</p></li> +<li><p><code>summary.mkinfit</code>: Give a warning message when the covariance matrix can not be obtained.</p></li> +<li><p>A test has been added to containing a corresponding edge case to check that the warnings are correctly issued and the fit does not terminate.</p></li> +<li><p><code>plot.mmkin</code>: Round the chi2 error value to three significant digits, instead of two decimal digits.</p></li> +<li><p><code>mkinfit</code>: Return the <code>err</code> values used on weighted fits as a column named <code>err</code>. Also include these inverse weights when the column <code>value</code> in the observed data is used, which is returned as <code>observed</code> in the data component of the mkinfit object.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="bug-fixes-0-9-43">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-43"></a></h3> +<ul><li><p><code>endpoints</code>: When the name of a substance degrading to a metabolite (e.g. a parent compound) used in the model formulation ended in the letter <code>f</code>, some rate parameters could be listed as formation fractions with mixed up names. These would also appear in the summary.</p></li> +<li><p><code>mkinfit</code>: Check for all observed variables when checking if the user tried to fix formation fractions when fitting them using ilr transformation.</p></li> +<li><p><code>plot.mmkin</code>: Set the plot margins correctly, also in the case of a single fit to be plotted, so the main title is placed in a reasonable way.</p></li> +<li><p><code>plot.mkinfit</code>: Correct default values for <code>col_obs</code>, <code>pch_obs</code> and <code>lty_obs</code> for the case that <code>obs_vars</code> is specified.</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9.42" id="mkin-0942-2016-03-25">mkin 0.9.42 (2016-03-25)<a class="anchor" aria-label="anchor" href="#mkin-0942-2016-03-25"></a></h2> +<div class="section level3"> +<h3 id="major-changes-0-9-42">Major changes<a class="anchor" aria-label="anchor" href="#major-changes-0-9-42"></a></h3> +<ul><li>Add the argument <code>from_max_mean</code> to <code>mkinfit</code>, for fitting only the decline from the maximum observed value for models with a single observed variable</li> +</ul></div> +<div class="section level3"> +<h3 id="minor-changes-0-9-42">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-42"></a></h3> +<ul><li><p>Add plots to <code>compiled_models</code> vignette</p></li> +<li><p>Give an explanatory error message when mkinmod fails due to a missing definition of a target variable</p></li> +<li><p><code><a href="../reference/mkinmod.html">print.mkinmod()</a></code>: Improve formatting when printing mkinmod model definitions</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-41" id="mkin-09-41-2015-11-09">mkin 0.9-41 (2015-11-09)<a class="anchor" aria-label="anchor" href="#mkin-09-41-2015-11-09"></a></h2> +<div class="section level3"> +<h3 id="minor-changes-0-9-41">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-41"></a></h3> +<ul><li><p>Add an R6 class <code>mkinds</code> representing datasets with a printing method</p></li> +<li><p>Add a printing method for mkinmod objects</p></li> +<li><p>Make it possible to specify arbitrary strings as names for the compounds in <code>mkinmod</code>, and show them in the plot</p></li> +<li><p>Use an index.r file to group help topics in static documentation</p></li> +</ul></div> +<div class="section level3"> +<h3 id="bug-fixes-0-9-41">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-41"></a></h3> +<ul><li> +<code><a href="../reference/summary.mkinfit.html">print.summary.mkinfit()</a></code>: Avoid an error that occurred when printing summaries generated with mkin versions before 0.9-36</li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-40" id="mkin-09-40-2015-07-21">mkin 0.9-40 (2015-07-21)<a class="anchor" aria-label="anchor" href="#mkin-09-40-2015-07-21"></a></h2> +<div class="section level3"> +<h3 id="bug-fixes-0-9-40">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-40"></a></h3> +<ul><li> +<code><a href="../reference/endpoints.html">endpoints()</a></code>: For DFOP and SFORB models, where <code><a href="https://rdrr.io/r/stats/optimize.html" class="external-link">optimize()</a></code> is used, make use of the fact that the DT50 must be between DT50_k1 and DT50_k2 (DFOP) or DT50_b1 and DT50_b2 (SFORB), as <code><a href="https://rdrr.io/r/stats/optimize.html" class="external-link">optimize()</a></code> sometimes did not find the minimum. Likewise for finding DT90 values. Also fit on the log scale to make the function more efficient.</li> +</ul></div> +<div class="section level3"> +<h3 id="internal-changes-0-9-40">Internal changes<a class="anchor" aria-label="anchor" href="#internal-changes-0-9-40"></a></h3> +<ul><li> +<code>DESCRIPTION</code>, <code>NAMESPACE</code>, <code>R/*.R</code>: Import (from) stats, graphics and methods packages, and qualify some function calls for non-base packages installed with R to avoid NOTES made by R CMD check –as-cran with upcoming R versions.</li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-39" id="mkin-09-39-2015-06-26">mkin 0.9-39 (2015-06-26)<a class="anchor" aria-label="anchor" href="#mkin-09-39-2015-06-26"></a></h2> +<div class="section level3"> +<h3 id="major-changes-0-9-39">Major changes<a class="anchor" aria-label="anchor" href="#major-changes-0-9-39"></a></h3> +<ul><li><p>New function <code><a href="../reference/mmkin.html">mmkin()</a></code>: This function takes a character vector of model shorthand names, or alternatively a list of mkinmod models, as well as a list of dataset as main arguments. It returns a matrix of mkinfit objects, with a row for each model and a column for each dataset. A subsetting method with single brackets is available. Fitting the models in parallel using the <code>parallel</code> package is supported.</p></li> +<li><p>New function <code><a href="../reference/plot.mmkin.html">plot.mmkin()</a></code>: Plots single-row or single-column <code>mmkin</code> objects including residual plots.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="bug-fixes-0-9-39">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-39"></a></h3> +<ul><li> +<code><a href="../reference/mkinparplot.html">mkinparplot()</a></code>: Fix the x axis scaling for rate constants and formation fractions that got confused by the introduction of the t-values of transformed parameters.</li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-38" id="mkin-09-38-2015-06-24">mkin 0.9-38 (2015-06-24)<a class="anchor" aria-label="anchor" href="#mkin-09-38-2015-06-24"></a></h2> +<div class="section level3"> +<h3 id="minor-changes-0-9-38">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-38"></a></h3> +<ul><li><p><code>vignettes/compiled_models.html</code>: Show the performance improvement factor actually obtained when building the vignette, as well as mkin version, some system info and the CPU model used for building the vignette.</p></li> +<li><p><code>GNUMakefile</code>,<code>vignettes/*</code>: Clean up vignette generation and include table of contents in HTML vignettes.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="bug-fixes-0-9-38">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-38"></a></h3> +<ul><li> +<code><a href="../reference/mkinmod.html">mkinmod()</a></code>: When generating the C code for the derivatives, only declare the time variable when it is needed and remove the ‘-W-no-unused-variable’ compiler flag as the C compiler used in the CRAN checks on Solaris does not know it.</li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-36" id="mkin-09-36-2015-06-21">mkin 0.9-36 (2015-06-21)<a class="anchor" aria-label="anchor" href="#mkin-09-36-2015-06-21"></a></h2> +<div class="section level3"> +<h3 id="major-changes-0-9-36">Major changes<a class="anchor" aria-label="anchor" href="#major-changes-0-9-36"></a></h3> +<ul><li><p><code><a href="../reference/summary.mkinfit.html">summary.mkinfit()</a></code>: A one-sided t-test for significant difference of untransformed parameters from zero is now always shown, based on the assumption of normal distribution for estimators of all untransformed parameters. Use with caution, as this assumption is unrealistic e.g. for rate constants in these nonlinear kinetic models.</p></li> +<li><p>If a compiler (gcc) is installed, use a version of the differential equation model compiled from C code, which is a huge performance boost for models where only the deSolve method works.</p></li> +<li><p><code><a href="../reference/mkinmod.html">mkinmod()</a></code>: Create a list component $cf (of class CFuncList) in the list returned by mkinmod, if a version can be compiled from autogenerated C code (see above).</p></li> +<li><p><code><a href="../reference/mkinfit.html">mkinfit()</a></code>: Set the default <code>solution_type</code> to <code>deSolve</code> when a compiled version of the model is present, except when an analytical solution is possible.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="minor-changes-0-9-36">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-36"></a></h3> +<ul><li>Added a simple showcase vignette with an evaluation of FOCUS example dataset D</li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-35" id="mkin-09-35-2015-05-15">mkin 0.9-35 (2015-05-15)<a class="anchor" aria-label="anchor" href="#mkin-09-35-2015-05-15"></a></h2> +<div class="section level3"> +<h3 id="major-changes-0-9-35">Major changes<a class="anchor" aria-label="anchor" href="#major-changes-0-9-35"></a></h3> +<ul><li>Switch from RUnit to testthat for testing</li> +</ul></div> +<div class="section level3"> +<h3 id="bug-fixes-0-9-35">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-35"></a></h3> +<ul><li><p><code><a href="../reference/mkinparplot.html">mkinparplot()</a></code>: Avoid warnings that occurred when not all confidence intervals were available in the summary of the fit</p></li> +<li><p><code><a href="../reference/summary.mkinfit.html">print.summary.mkinfit()</a></code>: Fix printing the summary for the case that the number of iterations is not available</p></li> +<li><p>NAMESPACE: export S3 methods plot.mkinfit, summary.mkinfit and print.summary.mkinfit to satisfy R CMD check on R-devel</p></li> +<li><p><code><a href="../reference/mkinparplot.html">mkinparplot()</a></code>: Avoid warning in R CMD check about undeclared global variable <code>Lower</code></p></li> +</ul></div> +<div class="section level3"> +<h3 id="new-features-0-9-35">New features<a class="anchor" aria-label="anchor" href="#new-features-0-9-35"></a></h3> +<ul><li><p><code><a href="../reference/mkinfit.html">mkinfit()</a></code>: Report successful termination when quiet = FALSE. This is helpful for more difficult problems fitted with reweight.method = obs, as no progress is often indicated during the reweighting.</p></li> +<li><p>A first test using results established in the expertise written for the German Federal Environmental Agency (UBA) was added.</p></li> +<li><p>Add synthetic datasets generated for expertise written for the German Federal Environmental Agency UBA</p></li> +<li><p>Add tests based on these datasets</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-34" id="mkin-09-34-2014-11-22">mkin 0.9-34 (2014-11-22)<a class="anchor" aria-label="anchor" href="#mkin-09-34-2014-11-22"></a></h2> +<div class="section level3"> +<h3 id="new-features-0-9-34">New features<a class="anchor" aria-label="anchor" href="#new-features-0-9-34"></a></h3> +<ul><li><p>Add the convenience function <code><a href="../reference/mkinmod.html">mkinsub()</a></code> for creating the lists used in <code><a href="../reference/mkinmod.html">mkinmod()</a></code></p></li> +<li><p>Add the possibility to fit indeterminate order rate equation (IORE) models using an analytical solution (parent only) or a numeric solution. Paths from IORE compounds to metabolites are supported when using formation fractions (use_of_ff = ‘max’). Note that the numerical solution (method.ode = ‘deSolve’) of the IORE differential equations sometimes fails due to numerical problems.</p></li> +<li><p>Switch to using the Port algorithm (using a model/trust region approach) per default. While needing more iterations than the Levenberg-Marquardt algorithm previously used per default, it is less sensitive to starting parameters.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="minor-changes-0-9-34">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-34"></a></h3> +<ul><li><p>The formatting of differential equations in the summary was further improved</p></li> +<li><p>Always include 0 on y axis when plotting during the fit</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-33" id="mkin-09-33-2014-10-22">mkin 0.9-33 (2014-10-22)<a class="anchor" aria-label="anchor" href="#mkin-09-33-2014-10-22"></a></h2> +<div class="section level3"> +<h3 id="new-features-0-9-33">New features<a class="anchor" aria-label="anchor" href="#new-features-0-9-33"></a></h3> +<ul><li><p>The initial value (state.ini) for the observed variable with the highest observed residue is set to 100 in case it has no time zero observation and <code>state.ini = "auto"</code></p></li> +<li><p>A basic unit test for <code><a href="../reference/mkinerrmin.html">mkinerrmin()</a></code> was written</p></li> +</ul></div> +<div class="section level3"> +<h3 id="bug-fixes-0-9-33">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-33"></a></h3> +<ul><li><p><code><a href="../reference/mkinfit.html">mkinfit()</a></code>: The internally fitted parameter for <code>g</code> was named <code>g_ilr</code> even when <code>transform_fractions=FALSE</code></p></li> +<li><p><code><a href="../reference/mkinfit.html">mkinfit()</a></code>: The initial value (state.ini) for the parent compound was not set when the parent was not the (only) variable with the highest value in the observed data.</p></li> +<li><p><code><a href="../reference/mkinerrmin.html">mkinerrmin()</a></code>: When checking for degrees of freedom for metabolites, check if their time zero value is fixed instead of checking if the observed value is zero. This ensures correct calculation of degrees of freedom also in cases where the metabolite residue at time zero is greater zero.</p></li> +<li><p><code><a href="../reference/plot.mkinfit.html">plot.mkinfit()</a></code>: Avoid a warning message about only using the first component of ylim that occurred when ylim was specified explicitly</p></li> +</ul></div> +<div class="section level3"> +<h3 id="minor-changes-0-9-33">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-33"></a></h3> +<ul><li><p>The formatting of differential equations in the summary was improved by wrapping overly long lines</p></li> +<li><p>The FOCUS_Z vignette was rebuilt with the above improvement and using a width of 70 to avoid output outside of the grey area</p></li> +<li><p><code><a href="../reference/summary.mkinfit.html">print.summary.mkinfit()</a></code>: Avoid a warning that occurred when gmkin showed summaries of initial fits without iterations</p></li> +<li><p><code><a href="../reference/mkinfit.html">mkinfit()</a></code>: Avoid a warning that occurred when summarising a fit that was performed with maxitmodFit = 0 as done in gmkin for configuring new fits.</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-32" id="mkin-09-32-2014-07-24">mkin 0.9-32 (2014-07-24)<a class="anchor" aria-label="anchor" href="#mkin-09-32-2014-07-24"></a></h2> +<div class="section level3"> +<h3 id="new-features-0-9-32">New features<a class="anchor" aria-label="anchor" href="#new-features-0-9-32"></a></h3> +<ul><li><p>The number of degrees of freedom is difficult to define in the case of ilr transformation of formation fractions. Now for each source compartment the number of ilr parameters (=number of optimised parameters) is divided by the number of pathways to metabolites (=number of affected data series) which leads to fractional degrees of freedom in some cases.</p></li> +<li><p>The default for the initial value for the first state value is now taken from the mean of the observations at time zero, if available.</p></li> +<li><p>The kinetic model can alternatively be specified with a shorthand name for parent only degradation models, e.g. <code>SFO</code>, or <code>DFOP</code>.</p></li> +<li><p>Optimisation method, number of model evaluations and time elapsed during optimisation are given in the summary of mkinfit objects.</p></li> +<li><p>The maximum number of iterations in the optimisation algorithm can be specified using the argument <code>maxit.modFit</code> to the mkinfit function.</p></li> +<li><p>mkinfit gives a warning when the fit does not converge (does not apply to SANN method). This warning is included in the summary.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="bug-fixes-0-9-32">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-32"></a></h3> +<ul><li><p>Avoid plotting an artificial 0 residual at time zero in <code>mkinresplot</code></p></li> +<li><p>In the determination of the degrees of freedom in <code>mkinerrmin</code>, formation fractions were accounted for multiple times in the case of parallel formation of metabolites. See the new feature described above for the solution.</p></li> +<li><p><code>transform_rates=FALSE</code> in <code>mkinfit</code> now also works for FOMC and HS models.</p></li> +<li><p>Initial values for formation fractions were not set in all cases.</p></li> +<li><p>No warning was given when the fit did not converge when a method other than the default Levenberg-Marquardt method <code>Marq</code> was used.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="minor-changes-0-9-32">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-32"></a></h3> +<ul><li><p>Vignettes were rebuilt to reflect the changes in the summary method.</p></li> +<li><p>Algorithm <code>Pseudo</code> was excluded because it needs user-defined parameter limits which are not supported.</p></li> +<li><p>Algorithm <code>Newton</code> was excluded because of its different way to specify the maximum number of iterations and because it does not appear to provide additional benefits.</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-31" id="mkin-09-31-2014-07-14">mkin 0.9-31 (2014-07-14)<a class="anchor" aria-label="anchor" href="#mkin-09-31-2014-07-14"></a></h2> +<div class="section level3"> +<h3 id="bug-fixes-0-9-31">Bug fixes<a class="anchor" aria-label="anchor" href="#bug-fixes-0-9-31"></a></h3> +<ul><li>The internal renaming of optimised parameters in Version 0.9-30 led to errors in the determination of the degrees of freedom for the chi2 error level calulations in <code><a href="../reference/mkinerrmin.html">mkinerrmin()</a></code> used by the summary function.</li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-30" id="mkin-09-30-2014-07-11">mkin 0.9-30 (2014-07-11)<a class="anchor" aria-label="anchor" href="#mkin-09-30-2014-07-11"></a></h2> +<div class="section level3"> +<h3 id="new-features-0-9-30">New features<a class="anchor" aria-label="anchor" href="#new-features-0-9-30"></a></h3> +<ul><li>It is now possible to use formation fractions in combination with turning off the sink in <code><a href="../reference/mkinmod.html">mkinmod()</a></code>.</li> +</ul></div> +<div class="section level3"> +<h3 id="major-changes-0-9-30">Major changes<a class="anchor" aria-label="anchor" href="#major-changes-0-9-30"></a></h3> +<ul><li><p>The original and the transformed parameters now have different names (e.g. <code>k_parent</code> and <code>log_k_parent</code>. They also differ in how many they are when we have formation fractions but no pathway to sink.</p></li> +<li><p>The order of some of the information blocks in <code>print.summary.mkinfit.R()</code> has been ordered in a more logical way.</p></li> +</ul></div> +<div class="section level3"> +<h3 id="minor-changes-0-9-30">Minor changes<a class="anchor" aria-label="anchor" href="#minor-changes-0-9-30"></a></h3> +<ul><li><p>The vignette FOCUS_Z has been simplified to use formation fractions with turning off the sink, and slightly amended to use the new versions of DT50 values calculated since mkin 0.9-29.</p></li> +<li><p>All vignettes have been rebuilt so they reflect all changes.</p></li> +<li><p>The ChangeLog was renamed to NEWS.md and the entries were converted to markdown syntax compatible with the <code>tools::news()</code> function built into R.</p></li> +<li><p>The test suite was overhauled. Tests of the DFOP and SFORB models with dataset FOCUS_2006_A were removed, as they were too much dependent on the optimisation algorithm and/or starting parameters, because the dataset is SFO (compare kinfit vignette).</p></li> +<li><p>Also, the Schaefer complex case can now be fitted using formation fractions, and with the ‘Port’ optimisation method we also fit A2 in the same way as published in the Piacenza paper.</p></li> +<li><p>Some more checks were introduced to <code><a href="../reference/mkinfit.html">mkinfit()</a></code>, leading to warnings or stopping execution if unsupported combinations of methods and parameters are requested.</p></li> +</ul></div> +</div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-29" id="mkin-09-29-2014-06-27">mkin 0.9-29 (2014-06-27)<a class="anchor" aria-label="anchor" href="#mkin-09-29-2014-06-27"></a></h2> +<ul><li><p>R/mkinresplot.R: Make it possible to specify <code>xlim</code></p></li> +<li><p>R/geometric_mean.R, man/geometric_mean.Rd: Add geometric mean function</p></li> +<li><p>R/endpoints.R, man/endpoints.Rd: Calculate additional (pseudo)-DT50 values for FOMC, DFOP, HS and SFORB. Avoid calculation of formation fractions from rate constants when they are directly fitted</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-28" id="mkin-09-28-2014-05-20">mkin 0.9-28 (2014-05-20)<a class="anchor" aria-label="anchor" href="#mkin-09-28-2014-05-20"></a></h2> +<ul><li><p>Do not backtransform confidence intervals for formation fractions if more than one compound is formed, as such parameters only define the pathways as a set</p></li> +<li><p>Add historical remarks and some background to the main package vignette</p></li> +<li><p>Correct ‘isotropic’ into ‘isometric’ for the ilr transformation</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-27" id="mkin-09-27-2014-05-10">mkin 0.9-27 (2014-05-10)<a class="anchor" aria-label="anchor" href="#mkin-09-27-2014-05-10"></a></h2> +<ul><li><p>Fork the GUI into a separate package <a href="https://github.com/jranke/gmkin" class="external-link">gmkin</a></p></li> +<li><p>DESCRIPTION, NAMESPACE, TODO: Adapt and add copyright information</p></li> +<li><p>Remove files belonging to the GUI</p></li> +<li><p>Possibility to fit without parameter transformations, using bounds as implemented in FME</p></li> +<li><p>Add McCall 2,4,5-T dataset</p></li> +<li><p>Enable selection of observed variables in plotting</p></li> +<li><p>Add possibility to show residual plot in <code>plot.mkinfit</code></p></li> +<li><p>R/mkinparplot.R, man/mkinparplot.Rd: plot parameters with confidence intervals</p></li> +<li><p>Change vignette format from Sweave to knitr</p></li> +<li><p>Split examples vignette to FOCUS_L and FOCUS_Z</p></li> +<li><p>Remove warning about constant formation fractions in mkinmod as it was based on a misconception</p></li> +<li><p>Restrict the unit test with the Schaefer data to parent and primary metabolites as formation fraction and DT50 for A2 are highly correlated and passing the test is platform dependent. For example, the test fails in 1 out of 14 platforms on CRAN as of today.</p></li> +<li><p>Add Eurofins Regulatory AG copyright notices</p></li> +<li><p>Import FME and deSolve instead of depending on them to have clean startup</p></li> +<li><p>Add a starter function for the GUI: <code>gmkin()</code></p></li> +<li><p>Change the format of the workspace files of gmkin so they can be distributed and documented in the package</p></li> +<li><p>Add gmkin workspace datasets FOCUS_2006_gmkin and FOCUS_2006_Z_gmkin</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-24" id="mkin-09-24-2013-11-06">mkin 0.9-24 (2013-11-06)<a class="anchor" aria-label="anchor" href="#mkin-09-24-2013-11-06"></a></h2> +<ul><li><p>Bugfix re-enabling the fixing of any combination of initial values for state variables</p></li> +<li><p>Default values for kinetic rate constants are not all 0.1 any more but are “salted” with a small increment to avoid numeric artefacts with the eigenvalue based solutions</p></li> +<li><p>Backtransform fixed ODE parameters for the summary</p></li> +</ul></div> + <div class="section level2"> +<h2 class="pkg-version" data-toc-text="0.9-22" id="mkin-09-22-2013-10-26">mkin 0.9-22 (2013-10-26)<a class="anchor" aria-label="anchor" href="#mkin-09-22-2013-10-26"></a></h2> +<ul><li><p>Get rid of the optimisation step in <code>mkinerrmin</code> - this was unnecessary. Thanks to KinGUII for the inspiration - actually this is equation 6-2 in FOCUS kinetics p. 91 that I had overlooked originally</p></li> +<li><p>Fix <code>plot.mkinfit</code> as it passed graphical arguments like main to the solver</p></li> +<li><p>Do not use <code>plot=TRUE</code> in <code><a href="../reference/mkinfit.html">mkinfit()</a></code> example</p></li> +<li><p>The first successful fits in the not so simple GUI</p></li> +<li><p>Fix iteratively reweighted least squares for the case of many metabolites</p></li> +<li><p>Unify naming of initial values of state variables</p></li> +<li><p>Unify naming in dataframes of optimised and fixed parameters in the summary</p></li> +<li><p>Show the weighting method for residuals in the summary</p></li> +<li><p>Correct the output of the data in the case of manual weighting</p></li> +<li><p>Implement IRLS assuming different variances for observed variables</p></li> +<li><p>Do not use 0 values at time zero for chi2 error level calculations. This is the way it is done in KinGUII and it makes sense. It does impact the chi2 error levels in the output. Generally they seem to be lower for metabolites now, presumably because the mean of the observed values is higher</p></li> +</ul><p>For a detailed list of changes to the mkin source please consult the commit history on <a href="http://github.com/jranke/mkin" class="external-link uri">http://github.com/jranke/mkin</a></p> +</div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/pkgdown.js b/docs/dev/pkgdown.js new file mode 100644 index 00000000..1a99c65f --- /dev/null +++ b/docs/dev/pkgdown.js @@ -0,0 +1,162 @@ +/* http://gregfranko.com/blog/jquery-best-practices/ */ +(function($) { + $(function() { + + $('nav.navbar').headroom(); + + Toc.init({ + $nav: $("#toc"), + $scope: $("main h2, main h3, main h4, main h5, main h6") + }); + + if ($('#toc').length) { + $('body').scrollspy({ + target: '#toc', + offset: $("nav.navbar").outerHeight() + 1 + }); + } + + // Activate popovers + $('[data-bs-toggle="popover"]').popover({ + container: 'body', + html: true, + trigger: 'focus', + placement: "top", + sanitize: false, + }); + + $('[data-bs-toggle="tooltip"]').tooltip(); + + /* Clipboard --------------------------*/ + + function changeTooltipMessage(element, msg) { + var tooltipOriginalTitle=element.getAttribute('data-bs-original-title'); + element.setAttribute('data-bs-original-title', msg); + $(element).tooltip('show'); + element.setAttribute('data-bs-original-title', tooltipOriginalTitle); + } + + if(ClipboardJS.isSupported()) { + $(document).ready(function() { + var copyButton = "<button type='button' class='btn btn-primary btn-copy-ex' title='Copy to clipboard' aria-label='Copy to clipboard' data-toggle='tooltip' data-placement='left' data-trigger='hover' data-clipboard-copy><i class='fa fa-copy'></i></button>"; + + $("div.sourceCode").addClass("hasCopyButton"); + + // Insert copy buttons: + $(copyButton).prependTo(".hasCopyButton"); + + // Initialize tooltips: + $('.btn-copy-ex').tooltip({container: 'body'}); + + // Initialize clipboard: + var clipboard = new ClipboardJS('[data-clipboard-copy]', { + text: function(trigger) { + return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); + } + }); + + clipboard.on('success', function(e) { + changeTooltipMessage(e.trigger, 'Copied!'); + e.clearSelection(); + }); + + clipboard.on('error', function(e) { + changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); + }); + + }); + } + + /* Search marking --------------------------*/ + var url = new URL(window.location.href); + var toMark = url.searchParams.get("q"); + var mark = new Mark("main#main"); + if (toMark) { + mark.mark(toMark, { + accuracy: { + value: "complementary", + limiters: [",", ".", ":", "/"], + } + }); + } + + /* Search --------------------------*/ + /* Adapted from https://github.com/rstudio/bookdown/blob/2d692ba4b61f1e466c92e78fd712b0ab08c11d31/inst/resources/bs4_book/bs4_book.js#L25 */ + // Initialise search index on focus + var fuse; + $("#search-input").focus(async function(e) { + if (fuse) { + return; + } + + $(e.target).addClass("loading"); + var response = await fetch($("#search-input").data("search-index")); + var data = await response.json(); + + var options = { + keys: ["what", "text", "code"], + ignoreLocation: true, + threshold: 0.1, + includeMatches: true, + includeScore: true, + }; + fuse = new Fuse(data, options); + + $(e.target).removeClass("loading"); + }); + + // Use algolia autocomplete + var options = { + autoselect: true, + debug: true, + hint: false, + minLength: 2, + }; + var q; +async function searchFuse(query, callback) { + await fuse; + + var items; + if (!fuse) { + items = []; + } else { + q = query; + var results = fuse.search(query, { limit: 20 }); + items = results + .filter((x) => x.score <= 0.75) + .map((x) => x.item); + if (items.length === 0) { + items = [{dir:"Sorry 😿",previous_headings:"",title:"No results found.",what:"No results found.",path:window.location.href}]; + } + } + callback(items); +} + $("#search-input").autocomplete(options, [ + { + name: "content", + source: searchFuse, + templates: { + suggestion: (s) => { + if (s.title == s.what) { + return `${s.dir} > <div class="search-details"> ${s.title}</div>`; + } else if (s.previous_headings == "") { + return `${s.dir} > <div class="search-details"> ${s.title}</div> > ${s.what}`; + } else { + return `${s.dir} > <div class="search-details"> ${s.title}</div> > ${s.previous_headings} > ${s.what}`; + } + }, + }, + }, + ]).on('autocomplete:selected', function(event, s) { + window.location.href = s.path + "?q=" + q + "#" + s.id; + }); + }); +})(window.jQuery || window.$) + +document.addEventListener('keydown', function(event) { + // Check if the pressed key is '/' + if (event.key === '/') { + event.preventDefault(); // Prevent any default action associated with the '/' key + document.getElementById('search-input').focus(); // Set focus to the search input + } +}); diff --git a/docs/dev/pkgdown.yml b/docs/dev/pkgdown.yml new file mode 100644 index 00000000..7f59d499 --- /dev/null +++ b/docs/dev/pkgdown.yml @@ -0,0 +1,23 @@ +pandoc: 2.17.1.1 +pkgdown: 2.1.1 +pkgdown_sha: ~ +articles: + prebuilt/2022_cyan_pathway: prebuilt/2022_cyan_pathway.html + prebuilt/2022_dmta_parent: prebuilt/2022_dmta_parent.html + prebuilt/2022_dmta_pathway: prebuilt/2022_dmta_pathway.html + prebuilt/2023_mesotrione_parent: prebuilt/2023_mesotrione_parent.html + web_only/benchmarks: web_only/benchmarks.html + web_only/compiled_models: web_only/compiled_models.html + web_only/dimethenamid_2018: web_only/dimethenamid_2018.html + FOCUS_D: FOCUS_D.html + FOCUS_L: FOCUS_L.html + web_only/FOCUS_Z: web_only/FOCUS_Z.html + mkin: mkin.html + web_only/multistart: web_only/multistart.html + web_only/NAFTA_examples: web_only/NAFTA_examples.html + web_only/saem_benchmarks: web_only/saem_benchmarks.html + twa: twa.html +last_built: 2025-02-14T06:24Z +urls: + reference: https://pkgdown.jrwb.de/mkin/reference + article: https://pkgdown.jrwb.de/mkin/articles diff --git a/docs/dev/reference/AIC.mmkin.html b/docs/dev/reference/AIC.mmkin.html new file mode 100644 index 00000000..06b92093 --- /dev/null +++ b/docs/dev/reference/AIC.mmkin.html @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Calculate the AIC for a column of an mmkin object — AIC.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Calculate the AIC for a column of an mmkin object — AIC.mmkin"><meta name="description" content="Provides a convenient way to compare different kinetic models fitted to the +same dataset."><meta property="og:description" content="Provides a convenient way to compare different kinetic models fitted to the +same dataset."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Calculate the AIC for a column of an mmkin object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/AIC.mmkin.R" class="external-link"><code>R/AIC.mmkin.R</code></a></small> + <div class="d-none name"><code>AIC.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Provides a convenient way to compare different kinetic models fitted to the +same dataset.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span>, k <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">BIC</a></span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An object of class <code><a href="mmkin.html">mmkin</a></code>, containing only one +column.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>For compatibility with the generic method</p></dd> + + +<dt id="arg-k">k<a class="anchor" aria-label="anchor" href="#arg-k"></a></dt> +<dd><p>As in the generic method</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>As in the generic method (a numeric value for single fits, or a +dataframe if there are several fits in the column).</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># skip, as it takes > 10 s on winbuilder</span></span></span> +<span class="r-in"><span> <span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"FOCUS A"</span> <span class="op">=</span> <span class="va">FOCUS_2006_A</span>,</span></span> +<span class="r-in"><span> <span class="st">"FOCUS C"</span> <span class="op">=</span> <span class="va">FOCUS_2006_C</span><span class="op">)</span>, cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Optimisation did not converge:</span> +<span class="r-wrn co"><span class="r-pr">#></span> false convergence (8)</span> +<span class="r-in"><span> <span class="co"># We get a warning because the FOMC model does not converge for the</span></span></span> +<span class="r-in"><span> <span class="co"># FOCUS A dataset, as it is well described by SFO</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="st">"FOCUS A"</span><span class="op">]</span><span class="op">)</span> <span class="co"># We get a single number for a single fit</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 55.28197</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f</span><span class="op">[[</span><span class="st">"SFO"</span>, <span class="st">"FOCUS A"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span> <span class="co"># or when extracting an mkinfit object</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 55.28197</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># For FOCUS A, the models fit almost equally well, so the higher the number</span></span></span> +<span class="r-in"><span> <span class="co"># of parameters, the higher (worse) the AIC</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span>, <span class="st">"FOCUS A"</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> df AIC</span> +<span class="r-out co"><span class="r-pr">#></span> SFO 3 55.28197</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC 4 57.28198</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP 5 59.28197</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span>, <span class="st">"FOCUS A"</span><span class="op">]</span>, k <span class="op">=</span> <span class="fl">0</span><span class="op">)</span> <span class="co"># If we do not penalize additional parameters, we get nearly the same</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> df AIC</span> +<span class="r-out co"><span class="r-pr">#></span> SFO 3 49.28197</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC 4 49.28198</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP 5 49.28197</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">BIC</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span>, <span class="st">"FOCUS A"</span><span class="op">]</span><span class="op">)</span> <span class="co"># Comparing the BIC gives a very similar picture</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> df BIC</span> +<span class="r-out co"><span class="r-pr">#></span> SFO 3 55.52030</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC 4 57.59974</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP 5 59.67918</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># For FOCUS C, the more complex models fit better</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span>, <span class="st">"FOCUS C"</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> df AIC</span> +<span class="r-out co"><span class="r-pr">#></span> SFO 3 59.29336</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC 4 44.68652</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP 5 29.02372</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">BIC</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span>, <span class="st">"FOCUS C"</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> df BIC</span> +<span class="r-out co"><span class="r-pr">#></span> SFO 3 59.88504</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC 4 45.47542</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP 5 30.00984</span> +<span class="r-in"><span> </span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/BIC.mmkin.html b/docs/dev/reference/BIC.mmkin.html new file mode 100644 index 00000000..d84916d6 --- /dev/null +++ b/docs/dev/reference/BIC.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/CAKE_export.html b/docs/dev/reference/CAKE_export.html new file mode 100644 index 00000000..026bc3da --- /dev/null +++ b/docs/dev/reference/CAKE_export.html @@ -0,0 +1,178 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Export a list of datasets format to a CAKE study file — CAKE_export • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Export a list of datasets format to a CAKE study file — CAKE_export"><meta name="description" content="In addition to the datasets, the pathways in the degradation model can be +specified as well."><meta property="og:description" content="In addition to the datasets, the pathways in the degradation model can be +specified as well."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Export a list of datasets format to a CAKE study file</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/CAKE_export.R" class="external-link"><code>R/CAKE_export.R</code></a></small> + <div class="d-none name"><code>CAKE_export.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>In addition to the datasets, the pathways in the degradation model can be +specified as well.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">CAKE_export</span><span class="op">(</span></span> +<span> <span class="va">ds</span>,</span> +<span> map <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="st">"Parent"</span><span class="op">)</span>,</span> +<span> links <span class="op">=</span> <span class="cn">NA</span>,</span> +<span> filename <span class="op">=</span> <span class="st">"CAKE_export.csf"</span>,</span> +<span> path <span class="op">=</span> <span class="st">"."</span>,</span> +<span> overwrite <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> study <span class="op">=</span> <span class="st">"Degradinol aerobic soil degradation"</span>,</span> +<span> description <span class="op">=</span> <span class="st">""</span>,</span> +<span> time_unit <span class="op">=</span> <span class="st">"days"</span>,</span> +<span> res_unit <span class="op">=</span> <span class="st">"% AR"</span>,</span> +<span> comment <span class="op">=</span> <span class="st">""</span>,</span> +<span> date <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Sys.time.html" class="external-link">Sys.Date</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> optimiser <span class="op">=</span> <span class="st">"IRLS"</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-ds">ds<a class="anchor" aria-label="anchor" href="#arg-ds"></a></dt> +<dd><p>A named list of datasets in long format as compatible with +<code><a href="mkinfit.html">mkinfit</a></code>.</p></dd> + + +<dt id="arg-map">map<a class="anchor" aria-label="anchor" href="#arg-map"></a></dt> +<dd><p>A character vector with CAKE compartment names (Parent, A1, ...), +named with the names used in the list of datasets.</p></dd> + + +<dt id="arg-links">links<a class="anchor" aria-label="anchor" href="#arg-links"></a></dt> +<dd><p>An optional character vector of target compartments, named with +the names of the source compartments. In order to make this easier, the +names are used as in the datasets supplied.</p></dd> + + +<dt id="arg-filename">filename<a class="anchor" aria-label="anchor" href="#arg-filename"></a></dt> +<dd><p>Where to write the result. Should end in .csf in order to be +compatible with CAKE.</p></dd> + + +<dt id="arg-path">path<a class="anchor" aria-label="anchor" href="#arg-path"></a></dt> +<dd><p>An optional path to the output file.</p></dd> + + +<dt id="arg-overwrite">overwrite<a class="anchor" aria-label="anchor" href="#arg-overwrite"></a></dt> +<dd><p>If TRUE, existing files are overwritten.</p></dd> + + +<dt id="arg-study">study<a class="anchor" aria-label="anchor" href="#arg-study"></a></dt> +<dd><p>The name of the study.</p></dd> + + +<dt id="arg-description">description<a class="anchor" aria-label="anchor" href="#arg-description"></a></dt> +<dd><p>An optional description.</p></dd> + + +<dt id="arg-time-unit">time_unit<a class="anchor" aria-label="anchor" href="#arg-time-unit"></a></dt> +<dd><p>The time unit for the residue data.</p></dd> + + +<dt id="arg-res-unit">res_unit<a class="anchor" aria-label="anchor" href="#arg-res-unit"></a></dt> +<dd><p>The unit used for the residues.</p></dd> + + +<dt id="arg-comment">comment<a class="anchor" aria-label="anchor" href="#arg-comment"></a></dt> +<dd><p>An optional comment.</p></dd> + + +<dt id="arg-date">date<a class="anchor" aria-label="anchor" href="#arg-date"></a></dt> +<dd><p>The date of file creation.</p></dd> + + +<dt id="arg-optimiser">optimiser<a class="anchor" aria-label="anchor" href="#arg-optimiser"></a></dt> +<dd><p>Can be OLS or IRLS.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The function is called for its side effect.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/D24_2014.html b/docs/dev/reference/D24_2014.html new file mode 100644 index 00000000..890e91d8 --- /dev/null +++ b/docs/dev/reference/D24_2014.html @@ -0,0 +1,218 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014 • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014"><meta name="description" content="The five datasets were extracted from the active substance evaluation dossier +published by EFSA. Kinetic evaluations shown for these datasets are intended +to illustrate and advance kinetic modelling. The fact that these data and +some results are shown here does not imply a license to use them in the +context of pesticide registrations, as the use of the data may be +constrained by data protection regulations."><meta property="og:description" content="The five datasets were extracted from the active substance evaluation dossier +published by EFSA. Kinetic evaluations shown for these datasets are intended +to illustrate and advance kinetic modelling. The fact that these data and +some results are shown here does not imply a license to use them in the +context of pesticide registrations, as the use of the data may be +constrained by data protection regulations."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Aerobic soil degradation data on 2,4-D from the EU assessment in 2014</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/D24_2014.R" class="external-link"><code>R/D24_2014.R</code></a></small> + <div class="d-none name"><code>D24_2014.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The five datasets were extracted from the active substance evaluation dossier +published by EFSA. Kinetic evaluations shown for these datasets are intended +to illustrate and advance kinetic modelling. The fact that these data and +some results are shown here does not imply a license to use them in the +context of pesticide registrations, as the use of the data may be +constrained by data protection regulations.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">D24_2014</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>An <a href="mkindsg.html">mkindsg</a> object grouping five datasets</p> + </div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>Hellenic Ministry of Rural Development and Agriculture (2014) +Final addendum to the Renewal Assessment Report - public version - 2,4-D +Volume 3 Annex B.8 Fate and behaviour in the environment +https://open.efsa.europa.eu/study-inventory/EFSA-Q-2013-00811</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>Data for the first dataset are from p. 685. Data for the other four +datasets were used in the preprocessed versions given in the kinetics +section (p. 761ff.), with the exception of residues smaller than 1 for DCP +in the soil from Site I2, where the values given on p. 694 were used.</p> +<p>The R code used to create this data object is installed with this package +in the 'dataset_generation' directory. In the code, page numbers are given for +specific pieces of information in the comments.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">D24_2014</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkindsg> holding 5 mkinds objects</span> +<span class="r-out co"><span class="r-pr">#></span> Title $title: Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 </span> +<span class="r-out co"><span class="r-pr">#></span> Occurrence of observed compounds $observed_n:</span> +<span class="r-out co"><span class="r-pr">#></span> D24 DCP DCA </span> +<span class="r-out co"><span class="r-pr">#></span> 5 4 4 </span> +<span class="r-out co"><span class="r-pr">#></span> Time normalisation factors $f_time_norm:</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 1.6062378 0.7118732 0.7156063 0.7156063 0.8977124</span> +<span class="r-out co"><span class="r-pr">#></span> Meta information $meta:</span> +<span class="r-out co"><span class="r-pr">#></span> study usda_soil_type study_moisture_ref_type</span> +<span class="r-out co"><span class="r-pr">#></span> Mississippi Cohen 1991 Silt loam <NA></span> +<span class="r-out co"><span class="r-pr">#></span> Fayette Liu and Adelfinskaya 2011 Silt loam pF1</span> +<span class="r-out co"><span class="r-pr">#></span> RefSol 03-G Liu and Adelfinskaya 2011 Loam pF1</span> +<span class="r-out co"><span class="r-pr">#></span> Site E1 Liu and Adelfinskaya 2011 Loam pF1</span> +<span class="r-out co"><span class="r-pr">#></span> Site I2 Liu and Adelfinskaya 2011 Loamy sand pF1</span> +<span class="r-out co"><span class="r-pr">#></span> rel_moisture temperature</span> +<span class="r-out co"><span class="r-pr">#></span> Mississippi NA 25</span> +<span class="r-out co"><span class="r-pr">#></span> Fayette 0.5 20</span> +<span class="r-out co"><span class="r-pr">#></span> RefSol 03-G 0.5 20</span> +<span class="r-out co"><span class="r-pr">#></span> Site E1 0.5 20</span> +<span class="r-out co"><span class="r-pr">#></span> Site I2 0.5 20</span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">D24_2014</span><span class="op">$</span><span class="va">ds</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span>, data <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Mississippi </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: D24 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 2, 4, 7, 15, 24, 35, 56, 71, 114, 183, 273, 365 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 1 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> time D24</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0 96.8</span> +<span class="r-out co"><span class="r-pr">#></span> 2 2 81.0</span> +<span class="r-out co"><span class="r-pr">#></span> 3 4 81.7</span> +<span class="r-out co"><span class="r-pr">#></span> 4 7 88.2</span> +<span class="r-out co"><span class="r-pr">#></span> 5 15 66.3</span> +<span class="r-out co"><span class="r-pr">#></span> 6 24 72.9</span> +<span class="r-out co"><span class="r-pr">#></span> 7 35 62.6</span> +<span class="r-out co"><span class="r-pr">#></span> 8 56 54.6</span> +<span class="r-out co"><span class="r-pr">#></span> 9 71 35.2</span> +<span class="r-out co"><span class="r-pr">#></span> 10 114 18.0</span> +<span class="r-out co"><span class="r-pr">#></span> 11 183 11.3</span> +<span class="r-out co"><span class="r-pr">#></span> 12 273 9.9</span> +<span class="r-out co"><span class="r-pr">#></span> 13 365 6.3</span> +<span class="r-in"><span><span class="va">m_D24</span> <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>D24 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"DCP"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> DCP <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"DCA"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> DCA <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">m_D24</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkinmod> model generated with</span> +<span class="r-out co"><span class="r-pr">#></span> Use of formation fractions $use_of_ff: max </span> +<span class="r-out co"><span class="r-pr">#></span> Specification $spec:</span> +<span class="r-out co"><span class="r-pr">#></span> $D24</span> +<span class="r-out co"><span class="r-pr">#></span> $type: SFO; $to: DCP; $sink: TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> $DCP</span> +<span class="r-out co"><span class="r-pr">#></span> $type: SFO; $to: DCA; $sink: TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> $DCA</span> +<span class="r-out co"><span class="r-pr">#></span> $type: SFO; $sink: TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> Coefficient matrix $coefmat available</span> +<span class="r-out co"><span class="r-pr">#></span> Compiled model $cf available</span> +<span class="r-out co"><span class="r-pr">#></span> Differential equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_D24/dt = - k_D24 * D24</span> +<span class="r-out co"><span class="r-pr">#></span> d_DCP/dt = + f_D24_to_DCP * k_D24 * D24 - k_DCP * DCP</span> +<span class="r-out co"><span class="r-pr">#></span> d_DCA/dt = + f_DCP_to_DCA * k_DCP * DCP - k_DCA * DCA</span> +<span class="r-in"><span><span class="va">m_D24_2</span> <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>D24 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, to <span class="op">=</span> <span class="st">"DCP"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> DCP <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"DCA"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> DCA <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">m_D24_2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkinmod> model generated with</span> +<span class="r-out co"><span class="r-pr">#></span> Use of formation fractions $use_of_ff: max </span> +<span class="r-out co"><span class="r-pr">#></span> Specification $spec:</span> +<span class="r-out co"><span class="r-pr">#></span> $D24</span> +<span class="r-out co"><span class="r-pr">#></span> $type: DFOP; $to: DCP; $sink: TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> $DCP</span> +<span class="r-out co"><span class="r-pr">#></span> $type: SFO; $to: DCA; $sink: TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> $DCA</span> +<span class="r-out co"><span class="r-pr">#></span> $type: SFO; $sink: TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> Compiled model $cf available</span> +<span class="r-out co"><span class="r-pr">#></span> Differential equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_D24/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span> +<span class="r-out co"><span class="r-pr">#></span> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span> +<span class="r-out co"><span class="r-pr">#></span> * D24</span> +<span class="r-out co"><span class="r-pr">#></span> d_DCP/dt = + f_D24_to_DCP * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) *</span> +<span class="r-out co"><span class="r-pr">#></span> exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2</span> +<span class="r-out co"><span class="r-pr">#></span> * time))) * D24 - k_DCP * DCP</span> +<span class="r-out co"><span class="r-pr">#></span> d_DCA/dt = + f_DCP_to_DCA * k_DCP * DCP - k_DCA * DCA</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/DFOP.solution-1.png b/docs/dev/reference/DFOP.solution-1.png Binary files differnew file mode 100644 index 00000000..6b78836f --- /dev/null +++ b/docs/dev/reference/DFOP.solution-1.png diff --git a/docs/dev/reference/DFOP.solution.html b/docs/dev/reference/DFOP.solution.html new file mode 100644 index 00000000..633e909c --- /dev/null +++ b/docs/dev/reference/DFOP.solution.html @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Double First-Order in Parallel kinetics — DFOP.solution • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Double First-Order in Parallel kinetics — DFOP.solution"><meta name="description" content="Function describing decline from a defined starting value using the sum of +two exponential decline functions."><meta property="og:description" content="Function describing decline from a defined starting value using the sum of +two exponential decline functions."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Double First-Order in Parallel kinetics</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parent_solutions.R" class="external-link"><code>R/parent_solutions.R</code></a></small> + <div class="d-none name"><code>DFOP.solution.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Function describing decline from a defined starting value using the sum of +two exponential decline functions.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">DFOP.solution</span><span class="op">(</span><span class="va">t</span>, <span class="va">parent_0</span>, <span class="va">k1</span>, <span class="va">k2</span>, <span class="va">g</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-t">t<a class="anchor" aria-label="anchor" href="#arg-t"></a></dt> +<dd><p>Time.</p></dd> + + +<dt id="arg-parent-">parent_0<a class="anchor" aria-label="anchor" href="#arg-parent-"></a></dt> +<dd><p>Starting value for the response variable at time zero.</p></dd> + + +<dt id="arg-k-">k1<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>First kinetic constant.</p></dd> + + +<dt id="arg-k-">k2<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>Second kinetic constant.</p></dd> + + +<dt id="arg-g">g<a class="anchor" aria-label="anchor" href="#arg-g"></a></dt> +<dd><p>Fraction of the starting value declining according to the first +kinetic constant.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The value of the response variable at time <code>t</code>.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a> +FOCUS (2014) “Generic guidance for Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +Version 1.1, 18 December 2014 +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Other parent solutions: +<code><a href="FOMC.solution.html">FOMC.solution</a>()</code>, +<code><a href="HS.solution.html">HS.solution</a>()</code>, +<code><a href="IORE.solution.html">IORE.solution</a>()</code>, +<code><a href="SFO.solution.html">SFO.solution</a>()</code>, +<code><a href="SFORB.solution.html">SFORB.solution</a>()</code>, +<code><a href="logistic.solution.html">logistic.solution</a>()</code></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">DFOP.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">5</span>, <span class="fl">0.5</span>, <span class="fl">0.3</span><span class="op">)</span>, <span class="fl">0</span>, <span class="fl">4</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>,<span class="fl">100</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="DFOP.solution-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/Extract.mmkin.html b/docs/dev/reference/Extract.mmkin.html new file mode 100644 index 00000000..a7b231f4 --- /dev/null +++ b/docs/dev/reference/Extract.mmkin.html @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Subsetting method for mmkin objects — [.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Subsetting method for mmkin objects — [.mmkin"><meta name="description" content="Subsetting method for mmkin objects"><meta property="og:description" content="Subsetting method for mmkin objects"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Subsetting method for mmkin objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mmkin.R" class="external-link"><code>R/mmkin.R</code></a></small> + <div class="d-none name"><code>Extract.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Subsetting method for mmkin objects</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="va">x</span><span class="op">[</span><span class="va">i</span>, <span class="va">j</span>, <span class="va">...</span>, drop <span class="op">=</span> <span class="cn">FALSE</span><span class="op">]</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An <code><a href="mmkin.html">mmkin</a> object</code></p></dd> + + +<dt id="arg-i">i<a class="anchor" aria-label="anchor" href="#arg-i"></a></dt> +<dd><p>Row index selecting the fits for specific models</p></dd> + + +<dt id="arg-j">j<a class="anchor" aria-label="anchor" href="#arg-j"></a></dt> +<dd><p>Column index selecting the fits to specific datasets</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used, only there to satisfy the generic method definition</p></dd> + + +<dt id="arg-drop">drop<a class="anchor" aria-label="anchor" href="#arg-drop"></a></dt> +<dd><p>If FALSE, the method always returns an mmkin object, otherwise +either a list of mkinfit objects or a single mkinfit object.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>An object of class <code><a href="mmkin.html">mmkin</a></code>.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># Only use one core, to pass R CMD check --as-cran</span></span></span> +<span class="r-in"><span> <span class="va">fits</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>B <span class="op">=</span> <span class="va">FOCUS_2006_B</span>, C <span class="op">=</span> <span class="va">FOCUS_2006_C</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">fits</span><span class="op">[</span><span class="st">"FOMC"</span>, <span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mmkin> object</span> +<span class="r-out co"><span class="r-pr">#></span> Status of individual fits:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model B C </span> +<span class="r-out co"><span class="r-pr">#></span> FOMC OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> OK: No warnings</span> +<span class="r-in"><span> <span class="va">fits</span><span class="op">[</span>, <span class="st">"B"</span><span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mmkin> object</span> +<span class="r-out co"><span class="r-pr">#></span> Status of individual fits:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model B </span> +<span class="r-out co"><span class="r-pr">#></span> SFO OK</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC OK</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> OK: No warnings</span> +<span class="r-in"><span> <span class="va">fits</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="st">"B"</span><span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mmkin> object</span> +<span class="r-out co"><span class="r-pr">#></span> Status of individual fits:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model B </span> +<span class="r-out co"><span class="r-pr">#></span> SFO OK</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> OK: No warnings</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/utils/head.html" class="external-link">head</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> <span class="co"># This extracts an mkinfit object with lots of components</span></span></span> +<span class="r-in"><span> <span class="va">fits</span><span class="op">[[</span><span class="st">"FOMC"</span>, <span class="st">"B"</span><span class="op">]</span><span class="op">]</span></span></span> +<span class="r-in"><span> <span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $par</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_alpha log_beta sigma </span> +<span class="r-out co"><span class="r-pr">#></span> 99.666192 2.549850 5.050587 1.890202 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $objective</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 28.58291</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $convergence</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $iterations</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 21</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $evaluations</span> +<span class="r-out co"><span class="r-pr">#></span> function gradient </span> +<span class="r-out co"><span class="r-pr">#></span> 25 78 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $message</span> +<span class="r-out co"><span class="r-pr">#></span> [1] "both X-convergence and relative convergence (5)"</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/FOCUS_2006_A.html b/docs/dev/reference/FOCUS_2006_A.html new file mode 100644 index 00000000..b819cd4d --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_A.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html"> + </head> +</html> + diff --git a/docs/dev/reference/FOCUS_2006_B.html b/docs/dev/reference/FOCUS_2006_B.html new file mode 100644 index 00000000..b819cd4d --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_B.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html"> + </head> +</html> + diff --git a/docs/dev/reference/FOCUS_2006_C.html b/docs/dev/reference/FOCUS_2006_C.html new file mode 100644 index 00000000..b819cd4d --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_C.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html"> + </head> +</html> + diff --git a/docs/dev/reference/FOCUS_2006_D.html b/docs/dev/reference/FOCUS_2006_D.html new file mode 100644 index 00000000..b819cd4d --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_D.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html"> + </head> +</html> + diff --git a/docs/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html b/docs/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html new file mode 100644 index 00000000..d315baa2 --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html @@ -0,0 +1,145 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) — FOCUS_2006_DFOP_ref_A_to_B • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) — FOCUS_2006_DFOP_ref_A_to_B"><meta name="description" content="A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit."><meta property="og:description" content="A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Results of fitting the DFOP model to Datasets A to B of FOCUS (2006)</h1> + + <div class="d-none name"><code>FOCUS_2006_DFOP_ref_A_to_B.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">FOCUS_2006_DFOP_ref_A_to_B</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A data frame containing the following variables.</p><dl><dt><code>package</code></dt> +<dd><p>a factor giving the name of the software package</p></dd> + + <dt><code>M0</code></dt> +<dd><p>The fitted initial concentration of the parent compound</p></dd> + + <dt><code>f</code></dt> +<dd><p>The fitted f parameter</p></dd> + + <dt><code>k1</code></dt> +<dd><p>The fitted k1 parameter</p></dd> + + <dt><code>k2</code></dt> +<dd><p>The fitted k2 parameter</p></dd> + + <dt><code>DT50</code></dt> +<dd><p>The resulting half-life of the parent compound</p></dd> + + <dt><code>DT90</code></dt> +<dd><p>The resulting DT90 of the parent compound</p></dd> + + <dt><code>dataset</code></dt> +<dd><p>The FOCUS dataset that was used</p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence and + Degradation Kinetics from Environmental Fate Studies on Pesticides in EU + Registration” Report of the FOCUS Work Group on Degradation Kinetics, + EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, + <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">FOCUS_2006_DFOP_ref_A_to_B</span><span class="op">)</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/FOCUS_2006_E.html b/docs/dev/reference/FOCUS_2006_E.html new file mode 100644 index 00000000..b819cd4d --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_E.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html"> + </head> +</html> + diff --git a/docs/dev/reference/FOCUS_2006_F.html b/docs/dev/reference/FOCUS_2006_F.html new file mode 100644 index 00000000..b819cd4d --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_F.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html"> + </head> +</html> + diff --git a/docs/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html b/docs/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html new file mode 100644 index 00000000..24bf6df8 --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html @@ -0,0 +1,142 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) — FOCUS_2006_FOMC_ref_A_to_F • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) — FOCUS_2006_FOMC_ref_A_to_F"><meta name="description" content="A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit."><meta property="og:description" content="A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Results of fitting the FOMC model to Datasets A to F of FOCUS (2006)</h1> + + <div class="d-none name"><code>FOCUS_2006_FOMC_ref_A_to_F.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">FOCUS_2006_FOMC_ref_A_to_F</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A data frame containing the following variables.</p><dl><dt><code>package</code></dt> +<dd><p>a factor giving the name of the software package</p></dd> + + <dt><code>M0</code></dt> +<dd><p>The fitted initial concentration of the parent compound</p></dd> + + <dt><code>alpha</code></dt> +<dd><p>The fitted alpha parameter</p></dd> + + <dt><code>beta</code></dt> +<dd><p>The fitted beta parameter</p></dd> + + <dt><code>DT50</code></dt> +<dd><p>The resulting half-life of the parent compound</p></dd> + + <dt><code>DT90</code></dt> +<dd><p>The resulting DT90 of the parent compound</p></dd> + + <dt><code>dataset</code></dt> +<dd><p>The FOCUS dataset that was used</p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence and + Degradation Kinetics from Environmental Fate Studies on Pesticides in EU + Registration” Report of the FOCUS Work Group on Degradation Kinetics, + EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, + <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">FOCUS_2006_FOMC_ref_A_to_F</span><span class="op">)</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/FOCUS_2006_HS_ref_A_to_F.html b/docs/dev/reference/FOCUS_2006_HS_ref_A_to_F.html new file mode 100644 index 00000000..1f7fad2f --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_HS_ref_A_to_F.html @@ -0,0 +1,145 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Results of fitting the HS model to Datasets A to F of FOCUS (2006) — FOCUS_2006_HS_ref_A_to_F • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Results of fitting the HS model to Datasets A to F of FOCUS (2006) — FOCUS_2006_HS_ref_A_to_F"><meta name="description" content="A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit."><meta property="og:description" content="A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Results of fitting the HS model to Datasets A to F of FOCUS (2006)</h1> + + <div class="d-none name"><code>FOCUS_2006_HS_ref_A_to_F.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">FOCUS_2006_HS_ref_A_to_F</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A data frame containing the following variables.</p><dl><dt><code>package</code></dt> +<dd><p>a factor giving the name of the software package</p></dd> + + <dt><code>M0</code></dt> +<dd><p>The fitted initial concentration of the parent compound</p></dd> + + <dt><code>tb</code></dt> +<dd><p>The fitted tb parameter</p></dd> + + <dt><code>k1</code></dt> +<dd><p>The fitted k1 parameter</p></dd> + + <dt><code>k2</code></dt> +<dd><p>The fitted k2 parameter</p></dd> + + <dt><code>DT50</code></dt> +<dd><p>The resulting half-life of the parent compound</p></dd> + + <dt><code>DT90</code></dt> +<dd><p>The resulting DT90 of the parent compound</p></dd> + + <dt><code>dataset</code></dt> +<dd><p>The FOCUS dataset that was used</p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence and + Degradation Kinetics from Environmental Fate Studies on Pesticides in EU + Registration” Report of the FOCUS Work Group on Degradation Kinetics, + EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, + <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">FOCUS_2006_HS_ref_A_to_F</span><span class="op">)</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html b/docs/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html new file mode 100644 index 00000000..39b06514 --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html @@ -0,0 +1,139 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Results of fitting the SFO model to Datasets A to F of FOCUS (2006) — FOCUS_2006_SFO_ref_A_to_F • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Results of fitting the SFO model to Datasets A to F of FOCUS (2006) — FOCUS_2006_SFO_ref_A_to_F"><meta name="description" content="A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit."><meta property="og:description" content="A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Results of fitting the SFO model to Datasets A to F of FOCUS (2006)</h1> + + <div class="d-none name"><code>FOCUS_2006_SFO_ref_A_to_F.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>A table with the fitted parameters and the resulting DT50 and DT90 values +generated with different software packages. Taken directly from FOCUS (2006). +The results from fitting the data with the Topfit software was removed, as +the initial concentration of the parent compound was fixed to a value of 100 +in this fit.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">FOCUS_2006_SFO_ref_A_to_F</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A data frame containing the following variables.</p><dl><dt><code>package</code></dt> +<dd><p>a factor giving the name of the software package</p></dd> + + <dt><code>M0</code></dt> +<dd><p>The fitted initial concentration of the parent compound</p></dd> + + <dt><code>k</code></dt> +<dd><p>The fitted first-order degradation rate constant</p></dd> + + <dt><code>DT50</code></dt> +<dd><p>The resulting half-life of the parent compound</p></dd> + + <dt><code>DT90</code></dt> +<dd><p>The resulting DT90 of the parent compound</p></dd> + + <dt><code>dataset</code></dt> +<dd><p>The FOCUS dataset that was used</p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence and + Degradation Kinetics from Environmental Fate Studies on Pesticides in EU + Registration” Report of the FOCUS Work Group on Degradation Kinetics, + EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, + <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/utils/data.html" class="external-link">data</a></span><span class="op">(</span><span class="va">FOCUS_2006_SFO_ref_A_to_F</span><span class="op">)</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/FOCUS_2006_datasets.html b/docs/dev/reference/FOCUS_2006_datasets.html new file mode 100644 index 00000000..a147a4f9 --- /dev/null +++ b/docs/dev/reference/FOCUS_2006_datasets.html @@ -0,0 +1,133 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Datasets A to F from the FOCUS Kinetics report from 2006 — FOCUS_2006_datasets • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Datasets A to F from the FOCUS Kinetics report from 2006 — FOCUS_2006_datasets"><meta name="description" content="Data taken from FOCUS (2006), p. 258."><meta property="og:description" content="Data taken from FOCUS (2006), p. 258."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Datasets A to F from the FOCUS Kinetics report from 2006</h1> + + <div class="d-none name"><code>FOCUS_2006_datasets.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Data taken from FOCUS (2006), p. 258.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">FOCUS_2006_A</span></span> +<span> <span class="va">FOCUS_2006_B</span></span> +<span> <span class="va">FOCUS_2006_C</span></span> +<span> <span class="va">FOCUS_2006_D</span></span> +<span> <span class="va">FOCUS_2006_E</span></span> +<span> <span class="va">FOCUS_2006_F</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>6 datasets with observations on the following variables.</p><dl><dt><code>name</code></dt> +<dd><p>a factor containing the name of the observed variable</p></dd> + + <dt><code>time</code></dt> +<dd><p>a numeric vector containing time points</p></dd> + + <dt><code>value</code></dt> +<dd><p>a numeric vector containing concentrations in percent of applied radioactivity</p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence and + Degradation Kinetics from Environmental Fate Studies on Pesticides in EU + Registration” Report of the FOCUS Work Group on Degradation Kinetics, + EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, + <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">FOCUS_2006_C</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> name time value</span> +<span class="r-out co"><span class="r-pr">#></span> 1 parent 0 85.1</span> +<span class="r-out co"><span class="r-pr">#></span> 2 parent 1 57.9</span> +<span class="r-out co"><span class="r-pr">#></span> 3 parent 3 29.9</span> +<span class="r-out co"><span class="r-pr">#></span> 4 parent 7 14.6</span> +<span class="r-out co"><span class="r-pr">#></span> 5 parent 14 9.7</span> +<span class="r-out co"><span class="r-pr">#></span> 6 parent 28 6.6</span> +<span class="r-out co"><span class="r-pr">#></span> 7 parent 63 4.0</span> +<span class="r-out co"><span class="r-pr">#></span> 8 parent 91 3.9</span> +<span class="r-out co"><span class="r-pr">#></span> 9 parent 119 0.6</span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/FOMC.solution-1.png b/docs/dev/reference/FOMC.solution-1.png Binary files differnew file mode 100644 index 00000000..18a4b586 --- /dev/null +++ b/docs/dev/reference/FOMC.solution-1.png diff --git a/docs/dev/reference/FOMC.solution.html b/docs/dev/reference/FOMC.solution.html new file mode 100644 index 00000000..5d1f2443 --- /dev/null +++ b/docs/dev/reference/FOMC.solution.html @@ -0,0 +1,166 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>First-Order Multi-Compartment kinetics — FOMC.solution • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="First-Order Multi-Compartment kinetics — FOMC.solution"><meta name="description" content="Function describing exponential decline from a defined starting value, with +a decreasing rate constant."><meta property="og:description" content="Function describing exponential decline from a defined starting value, with +a decreasing rate constant."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>First-Order Multi-Compartment kinetics</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parent_solutions.R" class="external-link"><code>R/parent_solutions.R</code></a></small> + <div class="d-none name"><code>FOMC.solution.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Function describing exponential decline from a defined starting value, with +a decreasing rate constant.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">FOMC.solution</span><span class="op">(</span><span class="va">t</span>, <span class="va">parent_0</span>, <span class="va">alpha</span>, <span class="va">beta</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-t">t<a class="anchor" aria-label="anchor" href="#arg-t"></a></dt> +<dd><p>Time.</p></dd> + + +<dt id="arg-parent-">parent_0<a class="anchor" aria-label="anchor" href="#arg-parent-"></a></dt> +<dd><p>Starting value for the response variable at time zero.</p></dd> + + +<dt id="arg-alpha">alpha<a class="anchor" aria-label="anchor" href="#arg-alpha"></a></dt> +<dd><p>Shape parameter determined by coefficient of variation of rate +constant values.</p></dd> + + +<dt id="arg-beta">beta<a class="anchor" aria-label="anchor" href="#arg-beta"></a></dt> +<dd><p>Location parameter.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The value of the response variable at time <code>t</code>.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>The form given here differs slightly from the original reference by +Gustafson and Holden (1990). The parameter <code>beta</code> corresponds to 1/beta +in the original equation.</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>The solution of the FOMC kinetic model reduces to the +<code><a href="SFO.solution.html">SFO.solution</a></code> for large values of <code>alpha</code> and <code>beta</code> +with \(k = \frac{\beta}{\alpha}\).</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> +<p>FOCUS (2014) “Generic guidance for Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +Version 1.1, 18 December 2014 +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> +<p>Gustafson DI and Holden LR (1990) Nonlinear pesticide dissipation in soil: +A new model based on spatial variability. <em>Environmental Science and +Technology</em> <b>24</b>, 1032-1038</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Other parent solutions: +<code><a href="DFOP.solution.html">DFOP.solution</a>()</code>, +<code><a href="HS.solution.html">HS.solution</a>()</code>, +<code><a href="IORE.solution.html">IORE.solution</a>()</code>, +<code><a href="SFO.solution.html">SFO.solution</a>()</code>, +<code><a href="SFORB.solution.html">SFORB.solution</a>()</code>, +<code><a href="logistic.solution.html">logistic.solution</a>()</code></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">FOMC.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">10</span>, <span class="fl">2</span><span class="op">)</span>, <span class="fl">0</span>, <span class="fl">2</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">100</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="FOMC.solution-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/HS.solution-1.png b/docs/dev/reference/HS.solution-1.png Binary files differnew file mode 100644 index 00000000..61d89dbc --- /dev/null +++ b/docs/dev/reference/HS.solution-1.png diff --git a/docs/dev/reference/HS.solution.html b/docs/dev/reference/HS.solution.html new file mode 100644 index 00000000..d15e75dd --- /dev/null +++ b/docs/dev/reference/HS.solution.html @@ -0,0 +1,156 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Hockey-Stick kinetics — HS.solution • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Hockey-Stick kinetics — HS.solution"><meta name="description" content="Function describing two exponential decline functions with a break point +between them."><meta property="og:description" content="Function describing two exponential decline functions with a break point +between them."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Hockey-Stick kinetics</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parent_solutions.R" class="external-link"><code>R/parent_solutions.R</code></a></small> + <div class="d-none name"><code>HS.solution.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Function describing two exponential decline functions with a break point +between them.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">HS.solution</span><span class="op">(</span><span class="va">t</span>, <span class="va">parent_0</span>, <span class="va">k1</span>, <span class="va">k2</span>, <span class="va">tb</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-t">t<a class="anchor" aria-label="anchor" href="#arg-t"></a></dt> +<dd><p>Time.</p></dd> + + +<dt id="arg-parent-">parent_0<a class="anchor" aria-label="anchor" href="#arg-parent-"></a></dt> +<dd><p>Starting value for the response variable at time zero.</p></dd> + + +<dt id="arg-k-">k1<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>First kinetic constant.</p></dd> + + +<dt id="arg-k-">k2<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>Second kinetic constant.</p></dd> + + +<dt id="arg-tb">tb<a class="anchor" aria-label="anchor" href="#arg-tb"></a></dt> +<dd><p>Break point. Before this time, exponential decline according to +<code>k1</code> is calculated, after this time, exponential decline proceeds +according to <code>k2</code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The value of the response variable at time <code>t</code>.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a> +FOCUS (2014) “Generic guidance for Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +Version 1.1, 18 December 2014 +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Other parent solutions: +<code><a href="DFOP.solution.html">DFOP.solution</a>()</code>, +<code><a href="FOMC.solution.html">FOMC.solution</a>()</code>, +<code><a href="IORE.solution.html">IORE.solution</a>()</code>, +<code><a href="SFO.solution.html">SFO.solution</a>()</code>, +<code><a href="SFORB.solution.html">SFORB.solution</a>()</code>, +<code><a href="logistic.solution.html">logistic.solution</a>()</code></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">HS.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">2</span>, <span class="fl">0.3</span>, <span class="fl">0.5</span><span class="op">)</span>, <span class="fl">0</span>, <span class="fl">2</span>, ylim<span class="op">=</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>,<span class="fl">100</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="HS.solution-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/IORE.solution-1.png b/docs/dev/reference/IORE.solution-1.png Binary files differnew file mode 100644 index 00000000..54c9dcae --- /dev/null +++ b/docs/dev/reference/IORE.solution-1.png diff --git a/docs/dev/reference/IORE.solution.html b/docs/dev/reference/IORE.solution.html new file mode 100644 index 00000000..47cc1e3d --- /dev/null +++ b/docs/dev/reference/IORE.solution.html @@ -0,0 +1,171 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Indeterminate order rate equation kinetics — IORE.solution • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Indeterminate order rate equation kinetics — IORE.solution"><meta name="description" content="Function describing exponential decline from a defined starting value, with +a concentration dependent rate constant."><meta property="og:description" content="Function describing exponential decline from a defined starting value, with +a concentration dependent rate constant."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Indeterminate order rate equation kinetics</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parent_solutions.R" class="external-link"><code>R/parent_solutions.R</code></a></small> + <div class="d-none name"><code>IORE.solution.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Function describing exponential decline from a defined starting value, with +a concentration dependent rate constant.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">IORE.solution</span><span class="op">(</span><span class="va">t</span>, <span class="va">parent_0</span>, <span class="va">k__iore</span>, <span class="va">N</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-t">t<a class="anchor" aria-label="anchor" href="#arg-t"></a></dt> +<dd><p>Time.</p></dd> + + +<dt id="arg-parent-">parent_0<a class="anchor" aria-label="anchor" href="#arg-parent-"></a></dt> +<dd><p>Starting value for the response variable at time zero.</p></dd> + + +<dt id="arg-k-iore">k__iore<a class="anchor" aria-label="anchor" href="#arg-k-iore"></a></dt> +<dd><p>Rate constant. Note that this depends on the concentration +units used.</p></dd> + + +<dt id="arg-n">N<a class="anchor" aria-label="anchor" href="#arg-n"></a></dt> +<dd><p>Exponent describing the nonlinearity of the rate equation</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The value of the response variable at time <code>t</code>.</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>The solution of the IORE kinetic model reduces to the +<code><a href="SFO.solution.html">SFO.solution</a></code> if N = 1. The parameters of the IORE model can +be transformed to equivalent parameters of the FOMC mode - see the NAFTA +guidance for details.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>NAFTA Technical Working Group on Pesticides (not dated) Guidance +for Evaluating and Calculating Degradation Kinetics in Environmental Media</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Other parent solutions: +<code><a href="DFOP.solution.html">DFOP.solution</a>()</code>, +<code><a href="FOMC.solution.html">FOMC.solution</a>()</code>, +<code><a href="HS.solution.html">HS.solution</a>()</code>, +<code><a href="SFO.solution.html">SFO.solution</a>()</code>, +<code><a href="SFORB.solution.html">SFORB.solution</a>()</code>, +<code><a href="logistic.solution.html">logistic.solution</a>()</code></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">IORE.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">0.2</span>, <span class="fl">1.3</span><span class="op">)</span>, <span class="fl">0</span>, <span class="fl">2</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">100</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="IORE.solution-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">fit.fomc</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">fit.iore</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"IORE"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">fit.iore.deS</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"IORE"</span>, <span class="va">FOCUS_2006_C</span>, solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Error in is.loaded(initfunc, PACKAGE = dllname, type = "") : </span> +<span class="r-out co"><span class="r-pr">#></span> invalid 'PACKAGE' argument</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span><span class="va">fit.fomc</span><span class="op">$</span><span class="va">par</span>, <span class="va">fit.iore</span><span class="op">$</span><span class="va">par</span>, <span class="va">fit.iore.deS</span><span class="op">$</span><span class="va">par</span>,</span></span> +<span class="r-in"><span> row.names <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"model par"</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">4</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> fit.fomc.par fit.iore.par fit.iore.deS.par</span> +<span class="r-out co"><span class="r-pr">#></span> model par 1 85.87489063 85.874890 85.874890</span> +<span class="r-out co"><span class="r-pr">#></span> model par 2 0.05192238 -4.826631 -4.826631</span> +<span class="r-out co"><span class="r-pr">#></span> model par 3 0.65096665 1.949403 1.949403</span> +<span class="r-out co"><span class="r-pr">#></span> model par 4 1.85744396 1.857444 1.857444</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span>fomc <span class="op">=</span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fit.fomc</span><span class="op">)</span><span class="op">$</span><span class="va">distimes</span>, iore <span class="op">=</span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fit.iore</span><span class="op">)</span><span class="op">$</span><span class="va">distimes</span>,</span></span> +<span class="r-in"><span> iore.deS <span class="op">=</span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fit.iore</span><span class="op">)</span><span class="op">$</span><span class="va">distimes</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back</span> +<span class="r-out co"><span class="r-pr">#></span> fomc 1.785233 15.1479 4.559973</span> +<span class="r-out co"><span class="r-pr">#></span> iore 1.785233 15.1479 4.559973</span> +<span class="r-out co"><span class="r-pr">#></span> iore.deS 1.785233 15.1479 4.559973</span> +<span class="r-in"><span> <span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/NAFTA_SOP_2015-1.png b/docs/dev/reference/NAFTA_SOP_2015-1.png Binary files differnew file mode 100644 index 00000000..98d4246c --- /dev/null +++ b/docs/dev/reference/NAFTA_SOP_2015-1.png diff --git a/docs/dev/reference/NAFTA_SOP_2015.html b/docs/dev/reference/NAFTA_SOP_2015.html new file mode 100644 index 00000000..3b176eed --- /dev/null +++ b/docs/dev/reference/NAFTA_SOP_2015.html @@ -0,0 +1,167 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Example datasets from the NAFTA SOP published 2015 — NAFTA_SOP_2015 • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Example datasets from the NAFTA SOP published 2015 — NAFTA_SOP_2015"><meta name="description" content="Data taken from US EPA (2015), p. 19 and 23."><meta property="og:description" content="Data taken from US EPA (2015), p. 19 and 23."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Example datasets from the NAFTA SOP published 2015</h1> + + <div class="d-none name"><code>NAFTA_SOP_2015.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Data taken from US EPA (2015), p. 19 and 23.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">NAFTA_SOP_Appendix_B</span></span> +<span> <span class="va">NAFTA_SOP_Appendix_D</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>2 datasets with observations on the following variables.</p><dl><dt><code>name</code></dt> +<dd><p>a factor containing the name of the observed variable</p></dd> + + <dt><code>time</code></dt> +<dd><p>a numeric vector containing time points</p></dd> + + <dt><code>value</code></dt> +<dd><p>a numeric vector containing concentrations</p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>NAFTA (2011) Guidance for evaluating and calculating degradation kinetics + in environmental media. NAFTA Technical Working Group on Pesticides + <a href="https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/guidance-evaluating-and-calculating-degradation" class="external-link">https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/guidance-evaluating-and-calculating-degradation</a> + accessed 2019-02-22</p> +<p>US EPA (2015) Standard Operating Procedure for Using the NAFTA Guidance to + Calculate Representative Half-life Values and Characterizing Pesticide + Degradation + <a href="https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance" class="external-link">https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span> <span class="va">nafta_evaluation</span> <span class="op"><-</span> <span class="fu"><a href="nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Appendix_D</span>, cores <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span> +<span class="r-msg co"><span class="r-pr">#></span> The representative half-life of the IORE model is longer than the one corresponding</span> +<span class="r-msg co"><span class="r-pr">#></span> to the terminal degradation rate found with the DFOP model.</span> +<span class="r-msg co"><span class="r-pr">#></span> The representative half-life obtained from the DFOP model may be used</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">nafta_evaluation</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Sums of squares:</span> +<span class="r-out co"><span class="r-pr">#></span> SFO IORE DFOP </span> +<span class="r-out co"><span class="r-pr">#></span> 1378.6832 615.7730 517.8836 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Critical sum of squares for checking the SFO model:</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 717.4598</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> $SFO</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 83.7558 1.80e-14 77.18268 90.3288</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.0017 7.43e-05 0.00112 0.0026</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 8.7518 1.22e-05 5.64278 11.8608</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $IORE</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 9.69e+01 NA 8.88e+01 1.05e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k__iore_parent 8.40e-14 NA 1.79e-18 3.94e-09</span> +<span class="r-out co"><span class="r-pr">#></span> N_parent 6.68e+00 NA 4.19e+00 9.17e+00</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.85e+00 NA 3.76e+00 7.94e+00</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $DFOP</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 9.76e+01 1.94e-13 9.02e+01 1.05e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k1 4.24e-02 5.92e-03 2.03e-02 8.88e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k2 8.24e-04 6.48e-03 3.89e-04 1.75e-03</span> +<span class="r-out co"><span class="r-pr">#></span> g 2.88e-01 2.47e-05 1.95e-01 4.03e-01</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.36e+00 2.22e-05 3.43e+00 7.30e+00</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> DTx values:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50_rep</span> +<span class="r-out co"><span class="r-pr">#></span> SFO 407 1350 407</span> +<span class="r-out co"><span class="r-pr">#></span> IORE 541 5190000 1560000</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP 429 2380 841</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Representative half-life:</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 841.41</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">nafta_evaluation</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="NAFTA_SOP_2015-1.png" alt="" width="700" height="433"></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/NAFTA_SOP_Appendix_B.html b/docs/dev/reference/NAFTA_SOP_Appendix_B.html new file mode 100644 index 00000000..c3c9b055 --- /dev/null +++ b/docs/dev/reference/NAFTA_SOP_Appendix_B.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html"> + </head> +</html> + diff --git a/docs/dev/reference/NAFTA_SOP_Appendix_D.html b/docs/dev/reference/NAFTA_SOP_Appendix_D.html new file mode 100644 index 00000000..c3c9b055 --- /dev/null +++ b/docs/dev/reference/NAFTA_SOP_Appendix_D.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html"> + </head> +</html> + diff --git a/docs/dev/reference/NAFTA_SOP_Attachment-1.png b/docs/dev/reference/NAFTA_SOP_Attachment-1.png Binary files differnew file mode 100644 index 00000000..a6066441 --- /dev/null +++ b/docs/dev/reference/NAFTA_SOP_Attachment-1.png diff --git a/docs/dev/reference/NAFTA_SOP_Attachment.html b/docs/dev/reference/NAFTA_SOP_Attachment.html new file mode 100644 index 00000000..afae4f43 --- /dev/null +++ b/docs/dev/reference/NAFTA_SOP_Attachment.html @@ -0,0 +1,156 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Example datasets from Attachment 1 to the NAFTA SOP published 2015 — NAFTA_SOP_Attachment • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Example datasets from Attachment 1 to the NAFTA SOP published 2015 — NAFTA_SOP_Attachment"><meta name="description" content="Data taken from from Attachment 1 of the SOP."><meta property="og:description" content="Data taken from from Attachment 1 of the SOP."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Example datasets from Attachment 1 to the NAFTA SOP published 2015</h1> + + <div class="d-none name"><code>NAFTA_SOP_Attachment.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Data taken from from Attachment 1 of the SOP.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">NAFTA_SOP_Attachment</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A list (NAFTA_SOP_Attachment) containing 16 datasets suitable + for the evaluation with <code><a href="nafta.html">nafta</a></code></p> + </div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>NAFTA (2011) Guidance for evaluating and calculating degradation kinetics + in environmental media. NAFTA Technical Working Group on Pesticides + <a href="https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/guidance-evaluating-and-calculating-degradation" class="external-link">https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/guidance-evaluating-and-calculating-degradation</a> + accessed 2019-02-22</p> +<p>US EPA (2015) Standard Operating Procedure for Using the NAFTA Guidance to + Calculate Representative Half-life Values and Characterizing Pesticide + Degradation + <a href="https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance" class="external-link">https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span> <span class="va">nafta_att_p5a</span> <span class="op"><-</span> <span class="fu"><a href="nafta.html">nafta</a></span><span class="op">(</span><span class="va">NAFTA_SOP_Attachment</span><span class="op">[[</span><span class="st">"p5a"</span><span class="op">]</span><span class="op">]</span>, cores <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span> +<span class="r-msg co"><span class="r-pr">#></span> The half-life obtained from the IORE model may be used</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">nafta_att_p5a</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Sums of squares:</span> +<span class="r-out co"><span class="r-pr">#></span> SFO IORE DFOP </span> +<span class="r-out co"><span class="r-pr">#></span> 465.21753 56.27506 32.06401 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Critical sum of squares for checking the SFO model:</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 64.4304</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> $SFO</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 95.8401 4.67e-21 92.245 99.4357</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.0102 3.92e-12 0.009 0.0117</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 4.8230 3.81e-06 3.214 6.4318</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $IORE</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 1.01e+02 NA 9.91e+01 1.02e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k__iore_parent 1.54e-05 NA 4.08e-06 5.84e-05</span> +<span class="r-out co"><span class="r-pr">#></span> N_parent 2.57e+00 NA 2.25e+00 2.89e+00</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.68e+00 NA 1.12e+00 2.24e+00</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $DFOP</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 9.99e+01 1.41e-26 98.8116 101.0810</span> +<span class="r-out co"><span class="r-pr">#></span> k1 2.67e-02 5.05e-06 0.0243 0.0295</span> +<span class="r-out co"><span class="r-pr">#></span> k2 3.41e-12 5.00e-01 0.0000 Inf</span> +<span class="r-out co"><span class="r-pr">#></span> g 6.47e-01 3.67e-06 0.6248 0.6677</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.27e+00 8.91e-06 0.8395 1.6929</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> DTx values:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50_rep</span> +<span class="r-out co"><span class="r-pr">#></span> SFO 67.7 2.25e+02 6.77e+01</span> +<span class="r-out co"><span class="r-pr">#></span> IORE 58.2 1.07e+03 3.22e+02</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP 55.5 3.70e+11 2.03e+11</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Representative half-life:</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 321.51</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">nafta_att_p5a</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="NAFTA_SOP_Attachment-1.png" alt="" width="700" height="433"></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/SFO.solution-1.png b/docs/dev/reference/SFO.solution-1.png Binary files differnew file mode 100644 index 00000000..34fdd460 --- /dev/null +++ b/docs/dev/reference/SFO.solution-1.png diff --git a/docs/dev/reference/SFO.solution.html b/docs/dev/reference/SFO.solution.html new file mode 100644 index 00000000..f61d1d79 --- /dev/null +++ b/docs/dev/reference/SFO.solution.html @@ -0,0 +1,143 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Single First-Order kinetics — SFO.solution • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Single First-Order kinetics — SFO.solution"><meta name="description" content="Function describing exponential decline from a defined starting value."><meta property="og:description" content="Function describing exponential decline from a defined starting value."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Single First-Order kinetics</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parent_solutions.R" class="external-link"><code>R/parent_solutions.R</code></a></small> + <div class="d-none name"><code>SFO.solution.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Function describing exponential decline from a defined starting value.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">SFO.solution</span><span class="op">(</span><span class="va">t</span>, <span class="va">parent_0</span>, <span class="va">k</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-t">t<a class="anchor" aria-label="anchor" href="#arg-t"></a></dt> +<dd><p>Time.</p></dd> + + +<dt id="arg-parent-">parent_0<a class="anchor" aria-label="anchor" href="#arg-parent-"></a></dt> +<dd><p>Starting value for the response variable at time zero.</p></dd> + + +<dt id="arg-k">k<a class="anchor" aria-label="anchor" href="#arg-k"></a></dt> +<dd><p>Kinetic rate constant.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The value of the response variable at time <code>t</code>.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a> +FOCUS (2014) “Generic guidance for Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +Version 1.1, 18 December 2014 +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Other parent solutions: +<code><a href="DFOP.solution.html">DFOP.solution</a>()</code>, +<code><a href="FOMC.solution.html">FOMC.solution</a>()</code>, +<code><a href="HS.solution.html">HS.solution</a>()</code>, +<code><a href="IORE.solution.html">IORE.solution</a>()</code>, +<code><a href="SFORB.solution.html">SFORB.solution</a>()</code>, +<code><a href="logistic.solution.html">logistic.solution</a>()</code></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">SFO.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">3</span><span class="op">)</span>, <span class="fl">0</span>, <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="SFO.solution-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/SFORB.solution-1.png b/docs/dev/reference/SFORB.solution-1.png Binary files differnew file mode 100644 index 00000000..08d25616 --- /dev/null +++ b/docs/dev/reference/SFORB.solution-1.png diff --git a/docs/dev/reference/SFORB.solution.html b/docs/dev/reference/SFORB.solution.html new file mode 100644 index 00000000..d9e9440f --- /dev/null +++ b/docs/dev/reference/SFORB.solution.html @@ -0,0 +1,165 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Single First-Order Reversible Binding kinetics — SFORB.solution • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Single First-Order Reversible Binding kinetics — SFORB.solution"><meta name="description" content="Function describing the solution of the differential equations describing +the kinetic model with first-order terms for a two-way transfer from a free +to a bound fraction, and a first-order degradation term for the free +fraction. The initial condition is a defined amount in the free fraction +and no substance in the bound fraction."><meta property="og:description" content="Function describing the solution of the differential equations describing +the kinetic model with first-order terms for a two-way transfer from a free +to a bound fraction, and a first-order degradation term for the free +fraction. The initial condition is a defined amount in the free fraction +and no substance in the bound fraction."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Single First-Order Reversible Binding kinetics</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parent_solutions.R" class="external-link"><code>R/parent_solutions.R</code></a></small> + <div class="d-none name"><code>SFORB.solution.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Function describing the solution of the differential equations describing +the kinetic model with first-order terms for a two-way transfer from a free +to a bound fraction, and a first-order degradation term for the free +fraction. The initial condition is a defined amount in the free fraction +and no substance in the bound fraction.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">SFORB.solution</span><span class="op">(</span><span class="va">t</span>, <span class="va">parent_0</span>, <span class="va">k_12</span>, <span class="va">k_21</span>, <span class="va">k_1output</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-t">t<a class="anchor" aria-label="anchor" href="#arg-t"></a></dt> +<dd><p>Time.</p></dd> + + +<dt id="arg-parent-">parent_0<a class="anchor" aria-label="anchor" href="#arg-parent-"></a></dt> +<dd><p>Starting value for the response variable at time zero.</p></dd> + + +<dt id="arg-k-">k_12<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>Kinetic constant describing transfer from free to bound.</p></dd> + + +<dt id="arg-k-">k_21<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>Kinetic constant describing transfer from bound to free.</p></dd> + + +<dt id="arg-k-output">k_1output<a class="anchor" aria-label="anchor" href="#arg-k-output"></a></dt> +<dd><p>Kinetic constant describing degradation of the free +fraction.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The value of the response variable, which is the sum of free and +bound fractions at time <code>t</code>.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a> +FOCUS (2014) “Generic guidance for Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +Version 1.1, 18 December 2014 +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Other parent solutions: +<code><a href="DFOP.solution.html">DFOP.solution</a>()</code>, +<code><a href="FOMC.solution.html">FOMC.solution</a>()</code>, +<code><a href="HS.solution.html">HS.solution</a>()</code>, +<code><a href="IORE.solution.html">IORE.solution</a>()</code>, +<code><a href="SFO.solution.html">SFO.solution</a>()</code>, +<code><a href="logistic.solution.html">logistic.solution</a>()</code></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">SFORB.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">0.5</span>, <span class="fl">2</span>, <span class="fl">3</span><span class="op">)</span>, <span class="fl">0</span>, <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="SFORB.solution-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/[.mhmkin.html b/docs/dev/reference/[.mhmkin.html new file mode 100644 index 00000000..19cc9c91 --- /dev/null +++ b/docs/dev/reference/[.mhmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/add_err-1.png b/docs/dev/reference/add_err-1.png Binary files differnew file mode 100644 index 00000000..1bcea3d5 --- /dev/null +++ b/docs/dev/reference/add_err-1.png diff --git a/docs/dev/reference/add_err-2.png b/docs/dev/reference/add_err-2.png Binary files differnew file mode 100644 index 00000000..67c083ea --- /dev/null +++ b/docs/dev/reference/add_err-2.png diff --git a/docs/dev/reference/add_err-3.png b/docs/dev/reference/add_err-3.png Binary files differnew file mode 100644 index 00000000..f25ae5e7 --- /dev/null +++ b/docs/dev/reference/add_err-3.png diff --git a/docs/dev/reference/add_err.html b/docs/dev/reference/add_err.html new file mode 100644 index 00000000..00a2b1d0 --- /dev/null +++ b/docs/dev/reference/add_err.html @@ -0,0 +1,216 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Add normally distributed errors to simulated kinetic degradation data — add_err • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Add normally distributed errors to simulated kinetic degradation data — add_err"><meta name="description" content="Normally distributed errors are added to data predicted for a specific +degradation model using mkinpredict. The variance of the error +may depend on the predicted value and is specified as a standard deviation."><meta property="og:description" content="Normally distributed errors are added to data predicted for a specific +degradation model using mkinpredict. The variance of the error +may depend on the predicted value and is specified as a standard deviation."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Add normally distributed errors to simulated kinetic degradation data</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/add_err.R" class="external-link"><code>R/add_err.R</code></a></small> + <div class="d-none name"><code>add_err.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Normally distributed errors are added to data predicted for a specific +degradation model using <code><a href="mkinpredict.html">mkinpredict</a></code>. The variance of the error +may depend on the predicted value and is specified as a standard deviation.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">add_err</span><span class="op">(</span></span> +<span> <span class="va">prediction</span>,</span> +<span> <span class="va">sdfunc</span>,</span> +<span> secondary <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span>,</span> +<span> n <span class="op">=</span> <span class="fl">10</span>,</span> +<span> LOD <span class="op">=</span> <span class="fl">0.1</span>,</span> +<span> reps <span class="op">=</span> <span class="fl">2</span>,</span> +<span> digits <span class="op">=</span> <span class="fl">1</span>,</span> +<span> seed <span class="op">=</span> <span class="cn">NA</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-prediction">prediction<a class="anchor" aria-label="anchor" href="#arg-prediction"></a></dt> +<dd><p>A prediction from a kinetic model as produced by +<code><a href="mkinpredict.html">mkinpredict</a></code>.</p></dd> + + +<dt id="arg-sdfunc">sdfunc<a class="anchor" aria-label="anchor" href="#arg-sdfunc"></a></dt> +<dd><p>A function taking the predicted value as its only argument and +returning a standard deviation that should be used for generating the +random error terms for this value.</p></dd> + + +<dt id="arg-secondary">secondary<a class="anchor" aria-label="anchor" href="#arg-secondary"></a></dt> +<dd><p>The names of state variables that should have an initial +value of zero</p></dd> + + +<dt id="arg-n">n<a class="anchor" aria-label="anchor" href="#arg-n"></a></dt> +<dd><p>The number of datasets to be generated.</p></dd> + + +<dt id="arg-lod">LOD<a class="anchor" aria-label="anchor" href="#arg-lod"></a></dt> +<dd><p>The limit of detection (LOD). Values that are below the LOD after +adding the random error will be set to NA.</p></dd> + + +<dt id="arg-reps">reps<a class="anchor" aria-label="anchor" href="#arg-reps"></a></dt> +<dd><p>The number of replicates to be generated within the datasets.</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>The number of digits to which the values will be rounded.</p></dd> + + +<dt id="arg-seed">seed<a class="anchor" aria-label="anchor" href="#arg-seed"></a></dt> +<dd><p>The seed used for the generation of random numbers. If NA, the +seed is not set.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A list of datasets compatible with <code><a href="mmkin.html">mmkin</a></code>, i.e. the +components of the list are datasets compatible with <code><a href="mkinfit.html">mkinfit</a></code>.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Ranke J and Lehmann R (2015) To t-test or not to t-test, that is +the question. XV Symposium on Pesticide Chemistry 2-4 September 2015, +Piacenza, Italy +https://jrwb.de/posters/piacenza_2015.pdf</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The kinetic model</span></span></span> +<span class="r-in"><span><span class="va">m_SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Generate a prediction for a specific set of parameters</span></span></span> +<span class="r-in"><span><span class="va">sampling_times</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># This is the prediction used for the "Type 2 datasets" on the Piacenza poster</span></span></span> +<span class="r-in"><span><span class="co"># from 2015</span></span></span> +<span class="r-in"><span><span class="va">d_SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_SFO_SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.1</span>, f_parent_to_M1 <span class="op">=</span> <span class="fl">0.5</span>,</span></span> +<span class="r-in"><span> k_M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">2</span><span class="op">)</span><span class="op">/</span><span class="fl">1000</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, M1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Add an error term with a constant (independent of the value) standard deviation</span></span></span> +<span class="r-in"><span><span class="co"># of 10, and generate three datasets</span></span></span> +<span class="r-in"><span><span class="va">d_SFO_SFO_err</span> <span class="op"><-</span> <span class="fu">add_err</span><span class="op">(</span><span class="va">d_SFO_SFO</span>, <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fl">10</span>, n <span class="op">=</span> <span class="fl">3</span>, seed <span class="op">=</span> <span class="fl">123456789</span> <span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Name the datasets for nicer plotting</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">d_SFO_SFO_err</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Dataset"</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Name the model in the list of models (with only one member in this case) for</span></span></span> +<span class="r-in"><span><span class="co"># nicer plotting later on. Be quiet and use only one core not to offend CRAN</span></span></span> +<span class="r-in"><span><span class="co"># checks</span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">f_SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"SFO-SFO"</span> <span class="op">=</span> <span class="va">m_SFO_SFO</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">d_SFO_SFO_err</span>, cores <span class="op">=</span> <span class="fl">1</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_SFO_SFO</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="add_err-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># We would like to inspect the fit for dataset 3 more closely</span></span></span> +<span class="r-in"><span><span class="co"># Using double brackets makes the returned object an mkinfit object</span></span></span> +<span class="r-in"><span><span class="co"># instead of a list of mkinfit objects, so plot.mkinfit is used</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_SFO_SFO</span><span class="op">[[</span><span class="fl">3</span><span class="op">]</span><span class="op">]</span>, show_residuals <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="add_err-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># If we use single brackets, we should give two indices (model and dataset),</span></span></span> +<span class="r-in"><span><span class="co"># and plot.mmkin is used</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_SFO_SFO</span><span class="op">[</span><span class="fl">1</span>, <span class="fl">3</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="add_err-3.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/anova.saem.mmkin.html b/docs/dev/reference/anova.saem.mmkin.html new file mode 100644 index 00000000..c30a8927 --- /dev/null +++ b/docs/dev/reference/anova.saem.mmkin.html @@ -0,0 +1,140 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Anova method for saem.mmkin objects — anova.saem.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Anova method for saem.mmkin objects — anova.saem.mmkin"><meta name="description" content="Generate an anova object. The method to calculate the BIC is that from the +saemix package. As in other prominent anova methods, models are sorted by +number of parameters, and the tests (if requested) are always relative to +the model on the previous line."><meta property="og:description" content="Generate an anova object. The method to calculate the BIC is that from the +saemix package. As in other prominent anova methods, models are sorted by +number of parameters, and the tests (if requested) are always relative to +the model on the previous line."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Anova method for saem.mmkin objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/anova.saem.mmkin.R" class="external-link"><code>R/anova.saem.mmkin.R</code></a></small> + <div class="d-none name"><code>anova.saem.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Generate an anova object. The method to calculate the BIC is that from the +saemix package. As in other prominent anova methods, models are sorted by +number of parameters, and the tests (if requested) are always relative to +the model on the previous line.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'saem.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> <span class="va">...</span>,</span> +<span> method <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"is"</span>, <span class="st">"lin"</span>, <span class="st">"gq"</span><span class="op">)</span>,</span> +<span> test <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> model.names <span class="op">=</span> <span class="cn">NULL</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An <a href="saem.html">saem.mmkin</a> object</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>further such objects</p></dd> + + +<dt id="arg-method">method<a class="anchor" aria-label="anchor" href="#arg-method"></a></dt> +<dd><p>Method for likelihood calculation: "is" (importance sampling), +"lin" (linear approximation), or "gq" (Gaussian quadrature). Passed +to <a href="https://rdrr.io/pkg/saemix/man/logLik.html" class="external-link">saemix::logLik.SaemixObject</a></p></dd> + + +<dt id="arg-test">test<a class="anchor" aria-label="anchor" href="#arg-test"></a></dt> +<dd><p>Should a likelihood ratio test be performed? If TRUE, +the alternative models are tested against the first model. Should +only be done for nested models.</p></dd> + + +<dt id="arg-model-names">model.names<a class="anchor" aria-label="anchor" href="#arg-model-names"></a></dt> +<dd><p>Optional character vector of model names</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>an "anova" data frame; the traditional (S3) result of anova()</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/aw.html b/docs/dev/reference/aw.html new file mode 100644 index 00000000..c87247c5 --- /dev/null +++ b/docs/dev/reference/aw.html @@ -0,0 +1,153 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Calculate Akaike weights for model averaging — aw • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Calculate Akaike weights for model averaging — aw"><meta name="description" content="Akaike weights are calculated based on the relative +expected Kullback-Leibler information as specified +by Burnham and Anderson (2004)."><meta property="og:description" content="Akaike weights are calculated based on the relative +expected Kullback-Leibler information as specified +by Burnham and Anderson (2004)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Calculate Akaike weights for model averaging</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/aw.R" class="external-link"><code>R/aw.R</code></a></small> + <div class="d-none name"><code>aw.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Akaike weights are calculated based on the relative +expected Kullback-Leibler information as specified +by Burnham and Anderson (2004).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">aw</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu">aw</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu">aw</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mixed.mmkin'</span></span> +<span><span class="fu">aw</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'multistart'</span></span> +<span><span class="fu">aw</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An <a href="mmkin.html">mmkin</a> column object, containing two or more +<a href="mkinfit.html">mkinfit</a> models that have been fitted to the same data, +or an mkinfit object. In the latter case, further mkinfit +objects fitted to the same data should be specified +as dots arguments.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used in the method for <a href="mmkin.html">mmkin</a> column objects, +further <a href="mkinfit.html">mkinfit</a> objects in the method for mkinfit objects.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Burnham KP and Anderson DR (2004) Multimodel +Inference: Understanding AIC and BIC in Model Selection. +<em>Sociological Methods & Research</em> <strong>33</strong>(2) 261-304</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">f_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_dfop</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">aw_sfo_dfop</span> <span class="op"><-</span> <span class="fu">aw</span><span class="op">(</span><span class="va">f_sfo</span>, <span class="va">f_dfop</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/sum.html" class="external-link">sum</a></span><span class="op">(</span><span class="va">aw_sfo_dfop</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 1</span> +<span class="r-in"><span><span class="va">aw_sfo_dfop</span> <span class="co"># SFO gets more weight as it has less parameters and a similar fit</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.5970258 0.4029742</span> +<span class="r-in"><span><span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"FOCUS D"</span> <span class="op">=</span> <span class="va">FOCUS_2006_D</span><span class="op">)</span>, cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">aw</span><span class="op">(</span><span class="va">f</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.4808722 0.1945539 0.3245740</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/sum.html" class="external-link">sum</a></span><span class="op">(</span><span class="fu">aw</span><span class="op">(</span><span class="va">f</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 1</span> +<span class="r-in"><span><span class="fu">aw</span><span class="op">(</span><span class="va">f</span><span class="op">[</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"DFOP"</span><span class="op">)</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.5970258 0.4029742</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/aw.mixed.mmkin.html b/docs/dev/reference/aw.mixed.mmkin.html new file mode 100644 index 00000000..ccfdbfc6 --- /dev/null +++ b/docs/dev/reference/aw.mixed.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/aw.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/aw.html"> + </head> +</html> + diff --git a/docs/dev/reference/aw.mkinfit.html b/docs/dev/reference/aw.mkinfit.html new file mode 100644 index 00000000..ccfdbfc6 --- /dev/null +++ b/docs/dev/reference/aw.mkinfit.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/aw.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/aw.html"> + </head> +</html> + diff --git a/docs/dev/reference/aw.mmkin.html b/docs/dev/reference/aw.mmkin.html new file mode 100644 index 00000000..ccfdbfc6 --- /dev/null +++ b/docs/dev/reference/aw.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/aw.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/aw.html"> + </head> +</html> + diff --git a/docs/dev/reference/aw.multistart.html b/docs/dev/reference/aw.multistart.html new file mode 100644 index 00000000..ccfdbfc6 --- /dev/null +++ b/docs/dev/reference/aw.multistart.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/aw.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/aw.html"> + </head> +</html> + diff --git a/docs/dev/reference/backtransform_odeparms.html b/docs/dev/reference/backtransform_odeparms.html new file mode 100644 index 00000000..b07fb165 --- /dev/null +++ b/docs/dev/reference/backtransform_odeparms.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/best.default.html b/docs/dev/reference/best.default.html new file mode 100644 index 00000000..06f15f0c --- /dev/null +++ b/docs/dev/reference/best.default.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html"> + </head> +</html> + diff --git a/docs/dev/reference/best.html b/docs/dev/reference/best.html new file mode 100644 index 00000000..06f15f0c --- /dev/null +++ b/docs/dev/reference/best.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html"> + </head> +</html> + diff --git a/docs/dev/reference/check_failed.html b/docs/dev/reference/check_failed.html new file mode 100644 index 00000000..9dea2650 --- /dev/null +++ b/docs/dev/reference/check_failed.html @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Check if fit within an mhmkin object failed — check_failed • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Check if fit within an mhmkin object failed — check_failed"><meta name="description" content="Check if fit within an mhmkin object failed"><meta property="og:description" content="Check if fit within an mhmkin object failed"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Check if fit within an mhmkin object failed</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mhmkin.R" class="external-link"><code>R/mhmkin.R</code></a></small> + <div class="d-none name"><code>check_failed.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Check if fit within an mhmkin object failed</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">check_failed</span><span class="op">(</span><span class="va">x</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>The object to be checked</p></dd> + +</dl></div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/confint.mkinfit.html b/docs/dev/reference/confint.mkinfit.html new file mode 100644 index 00000000..a0051a85 --- /dev/null +++ b/docs/dev/reference/confint.mkinfit.html @@ -0,0 +1,382 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Confidence intervals for parameters of mkinfit objects — confint.mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Confidence intervals for parameters of mkinfit objects — confint.mkinfit"><meta name="description" content="The default method 'quadratic' is based on the quadratic approximation of +the curvature of the likelihood function at the maximum likelihood parameter +estimates. +The alternative method 'profile' is based on the profile likelihood for each +parameter. The 'profile' method uses two nested optimisations and can take a +very long time, even if parallelized by specifying 'cores' on unixoid +platforms. The speed of the method could likely be improved by using the +method of Venzon and Moolgavkar (1988)."><meta property="og:description" content="The default method 'quadratic' is based on the quadratic approximation of +the curvature of the likelihood function at the maximum likelihood parameter +estimates. +The alternative method 'profile' is based on the profile likelihood for each +parameter. The 'profile' method uses two nested optimisations and can take a +very long time, even if parallelized by specifying 'cores' on unixoid +platforms. The speed of the method could likely be improved by using the +method of Venzon and Moolgavkar (1988)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Confidence intervals for parameters of mkinfit objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/confint.mkinfit.R" class="external-link"><code>R/confint.mkinfit.R</code></a></small> + <div class="d-none name"><code>confint.mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The default method 'quadratic' is based on the quadratic approximation of +the curvature of the likelihood function at the maximum likelihood parameter +estimates. +The alternative method 'profile' is based on the profile likelihood for each +parameter. The 'profile' method uses two nested optimisations and can take a +very long time, even if parallelized by specifying 'cores' on unixoid +platforms. The speed of the method could likely be improved by using the +method of Venzon and Moolgavkar (1988).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> <span class="va">parm</span>,</span> +<span> level <span class="op">=</span> <span class="fl">0.95</span>,</span> +<span> alpha <span class="op">=</span> <span class="fl">1</span> <span class="op">-</span> <span class="va">level</span>,</span> +<span> <span class="va">cutoff</span>,</span> +<span> method <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"quadratic"</span>, <span class="st">"profile"</span><span class="op">)</span>,</span> +<span> transformed <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> backtransform <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> cores <span class="op">=</span> <span class="fu">parallel</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> rel_tol <span class="op">=</span> <span class="fl">0.01</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An <code><a href="mkinfit.html">mkinfit</a></code> object</p></dd> + + +<dt id="arg-parm">parm<a class="anchor" aria-label="anchor" href="#arg-parm"></a></dt> +<dd><p>A vector of names of the parameters which are to be given +confidence intervals. If missing, all parameters are considered.</p></dd> + + +<dt id="arg-level">level<a class="anchor" aria-label="anchor" href="#arg-level"></a></dt> +<dd><p>The confidence level required</p></dd> + + +<dt id="arg-alpha">alpha<a class="anchor" aria-label="anchor" href="#arg-alpha"></a></dt> +<dd><p>The allowed error probability, overrides 'level' if specified.</p></dd> + + +<dt id="arg-cutoff">cutoff<a class="anchor" aria-label="anchor" href="#arg-cutoff"></a></dt> +<dd><p>Possibility to specify an alternative cutoff for the difference +in the log-likelihoods at the confidence boundary. Specifying an explicit +cutoff value overrides arguments 'level' and 'alpha'</p></dd> + + +<dt id="arg-method">method<a class="anchor" aria-label="anchor" href="#arg-method"></a></dt> +<dd><p>The 'quadratic' method approximates the likelihood function at +the optimised parameters using the second term of the Taylor expansion, +using a second derivative (hessian) contained in the object. +The 'profile' method searches the parameter space for the +cutoff of the confidence intervals by means of a likelihood ratio test.</p></dd> + + +<dt id="arg-transformed">transformed<a class="anchor" aria-label="anchor" href="#arg-transformed"></a></dt> +<dd><p>If the quadratic approximation is used, should it be +applied to the likelihood based on the transformed parameters?</p></dd> + + +<dt id="arg-backtransform">backtransform<a class="anchor" aria-label="anchor" href="#arg-backtransform"></a></dt> +<dd><p>If we approximate the likelihood in terms of the +transformed parameters, should we backtransform the parameters with +their confidence intervals?</p></dd> + + +<dt id="arg-cores">cores<a class="anchor" aria-label="anchor" href="#arg-cores"></a></dt> +<dd><p>The number of cores to be used for multicore processing. +On Windows machines, cores > 1 is currently not supported.</p></dd> + + +<dt id="arg-rel-tol">rel_tol<a class="anchor" aria-label="anchor" href="#arg-rel-tol"></a></dt> +<dd><p>If the method is 'profile', what should be the accuracy +of the lower and upper bounds, relative to the estimate obtained from +the quadratic method?</p></dd> + + +<dt id="arg-quiet">quiet<a class="anchor" aria-label="anchor" href="#arg-quiet"></a></dt> +<dd><p>Should we suppress the message "Profiling the likelihood"</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A matrix with columns giving lower and upper confidence limits for +each parameter.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Bates DM and Watts GW (1988) Nonlinear regression analysis & its applications</p> +<p>Pawitan Y (2013) In all likelihood - Statistical modelling and +inference using likelihood. Clarendon Press, Oxford.</p> +<p>Venzon DJ and Moolgavkar SH (1988) A Method for Computing +Profile-Likelihood Based Confidence Intervals, Applied Statistics, 37, +87–94.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f</span>, method <span class="op">=</span> <span class="st">"quadratic"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 71.8242430 93.1600766</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.2109541 0.4440528</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.9778868 7.3681380</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f</span>, method <span class="op">=</span> <span class="st">"profile"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Profiling the likelihood</span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 73.0641834 92.1392181</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.2170293 0.4235348</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 3.1307772 8.0628314</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Set the number of cores for the profiling method for further examples</span></span></span> +<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/identical.html" class="external-link">identical</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.getenv.html" class="external-link">Sys.getenv</a></span><span class="op">(</span><span class="st">"NOT_CRAN"</span><span class="op">)</span>, <span class="st">"true"</span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="va">n_cores</span> <span class="op"><-</span> <span class="fu">parallel</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span> <span class="op">-</span> <span class="fl">1</span></span></span> +<span class="r-in"><span><span class="op">}</span> <span class="kw">else</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="va">n_cores</span> <span class="op"><-</span> <span class="fl">1</span></span></span> +<span class="r-in"><span><span class="op">}</span></span></span> +<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.getenv.html" class="external-link">Sys.getenv</a></span><span class="op">(</span><span class="st">"TRAVIS"</span><span class="op">)</span> <span class="op">!=</span> <span class="st">""</span><span class="op">)</span> <span class="va">n_cores</span> <span class="op">=</span> <span class="fl">1</span></span></span> +<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.info.html" class="external-link">Sys.info</a></span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="st">"sysname"</span><span class="op">]</span> <span class="op">==</span> <span class="st">"Windows"</span><span class="op">)</span> <span class="va">n_cores</span> <span class="op">=</span> <span class="fl">1</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>, m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"min"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO.ff</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>, m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_d_1</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">ci_profile</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_d_1</span>, method <span class="op">=</span> <span class="st">"profile"</span>, cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> user system elapsed </span> +<span class="r-out co"><span class="r-pr">#></span> 1.182 0.004 1.186 </span> +<span class="r-in"><span><span class="co"># Using more cores does not save much time here, as parent_0 takes up most of the time</span></span></span> +<span class="r-in"><span><span class="co"># If we additionally exclude parent_0 (the confidence of which is often of</span></span></span> +<span class="r-in"><span><span class="co"># minor interest), we get a nice performance improvement if we use at least 4 cores</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">ci_profile_no_parent_0</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_d_1</span>, method <span class="op">=</span> <span class="st">"profile"</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"k_parent_sink"</span>, <span class="st">"k_parent_m1"</span>, <span class="st">"k_m1_sink"</span>, <span class="st">"sigma"</span><span class="op">)</span>, cores <span class="op">=</span> <span class="va">n_cores</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Profiling the likelihood</span> +<span class="r-out co"><span class="r-pr">#></span> user system elapsed </span> +<span class="r-out co"><span class="r-pr">#></span> 0.429 0.171 0.324 </span> +<span class="r-in"><span><span class="va">ci_profile</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 96.456003640 1.027703e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink 0.040762501 5.549764e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 0.046786482 5.500879e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink 0.003892605 6.702778e-03</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.535612399 3.985263e+00</span> +<span class="r-in"><span><span class="va">ci_quadratic_transformed</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_d_1</span>, method <span class="op">=</span> <span class="st">"quadratic"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">ci_quadratic_transformed</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 96.403841640 1.027931e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink 0.041033378 5.596269e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 0.046777902 5.511931e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink 0.004012217 6.897547e-03</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.396089689 3.854918e+00</span> +<span class="r-in"><span><span class="va">ci_quadratic_untransformed</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_d_1</span>, method <span class="op">=</span> <span class="st">"quadratic"</span>, transformed <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">ci_quadratic_untransformed</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 96.403841645 102.79312449</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink 0.040485331 0.05535491</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 0.046611582 0.05494364</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink 0.003835483 0.00668582</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.396089689 3.85491806</span> +<span class="r-in"><span><span class="co"># Against the expectation based on Bates and Watts (1988), the confidence</span></span></span> +<span class="r-in"><span><span class="co"># intervals based on the internal parameter transformation are less</span></span></span> +<span class="r-in"><span><span class="co"># congruent with the likelihood based intervals. Note the superiority of the</span></span></span> +<span class="r-in"><span><span class="co"># interval based on the untransformed fit for k_m1_sink</span></span></span> +<span class="r-in"><span><span class="va">rel_diffs_transformed</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/MathFun.html" class="external-link">abs</a></span><span class="op">(</span><span class="op">(</span><span class="va">ci_quadratic_transformed</span> <span class="op">-</span> <span class="va">ci_profile</span><span class="op">)</span><span class="op">/</span><span class="va">ci_profile</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">rel_diffs_untransformed</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/MathFun.html" class="external-link">abs</a></span><span class="op">(</span><span class="op">(</span><span class="va">ci_quadratic_untransformed</span> <span class="op">-</span> <span class="va">ci_profile</span><span class="op">)</span><span class="op">/</span><span class="va">ci_profile</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">rel_diffs_transformed</span> <span class="op"><</span> <span class="va">rel_diffs_untransformed</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 FALSE FALSE</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink TRUE FALSE</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 TRUE FALSE</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink FALSE FALSE</span> +<span class="r-out co"><span class="r-pr">#></span> sigma FALSE FALSE</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Round.html" class="external-link">signif</a></span><span class="op">(</span><span class="va">rel_diffs_transformed</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 0.000541 0.000222</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink 0.006650 0.008380</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 0.000183 0.002010</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink 0.030700 0.029100</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 0.055000 0.032700</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Round.html" class="external-link">signif</a></span><span class="op">(</span><span class="va">rel_diffs_untransformed</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 0.000541 0.000222</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink 0.006800 0.002570</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 0.003740 0.001180</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink 0.014700 0.002530</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 0.055000 0.032700</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Investigate a case with formation fractions</span></span></span> +<span class="r-in"><span><span class="va">f_d_2</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO.ff</span>, <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">ci_profile_ff</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_d_2</span>, method <span class="op">=</span> <span class="st">"profile"</span>, cores <span class="op">=</span> <span class="va">n_cores</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Profiling the likelihood</span> +<span class="r-in"><span><span class="va">ci_profile_ff</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 96.456003640 1.027703e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.090911032 1.071578e-01</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.003892606 6.702775e-03</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.471328495 5.611550e-01</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.535612399 3.985263e+00</span> +<span class="r-in"><span><span class="va">ci_quadratic_transformed_ff</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_d_2</span>, method <span class="op">=</span> <span class="st">"quadratic"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">ci_quadratic_transformed_ff</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 96.403833581 102.79311649</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.090823771 0.10725430</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.004012219 0.00689755</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.469118824 0.55959615</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.396089689 3.85491806</span> +<span class="r-in"><span><span class="va">ci_quadratic_untransformed_ff</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_d_2</span>, method <span class="op">=</span> <span class="st">"quadratic"</span>, transformed <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">ci_quadratic_untransformed_ff</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 96.403833586 1.027931e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.090491913 1.069035e-01</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.003835485 6.685823e-03</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.469113477 5.598387e-01</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.396089689 3.854918e+00</span> +<span class="r-in"><span><span class="va">rel_diffs_transformed_ff</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/MathFun.html" class="external-link">abs</a></span><span class="op">(</span><span class="op">(</span><span class="va">ci_quadratic_transformed_ff</span> <span class="op">-</span> <span class="va">ci_profile_ff</span><span class="op">)</span><span class="op">/</span><span class="va">ci_profile_ff</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">rel_diffs_untransformed_ff</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/MathFun.html" class="external-link">abs</a></span><span class="op">(</span><span class="op">(</span><span class="va">ci_quadratic_untransformed_ff</span> <span class="op">-</span> <span class="va">ci_profile_ff</span><span class="op">)</span><span class="op">/</span><span class="va">ci_profile_ff</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># While the confidence interval for the parent rate constant is closer to</span></span></span> +<span class="r-in"><span><span class="co"># the profile based interval when using the internal parameter</span></span></span> +<span class="r-in"><span><span class="co"># transformation, the interval for the metabolite rate constant is 'better</span></span></span> +<span class="r-in"><span><span class="co"># without internal parameter transformation.</span></span></span> +<span class="r-in"><span><span class="va">rel_diffs_transformed_ff</span> <span class="op"><</span> <span class="va">rel_diffs_untransformed_ff</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 FALSE FALSE</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent TRUE TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 FALSE FALSE</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 TRUE FALSE</span> +<span class="r-out co"><span class="r-pr">#></span> sigma TRUE FALSE</span> +<span class="r-in"><span><span class="va">rel_diffs_transformed_ff</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 0.0005408690 0.0002217233</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.0009598532 0.0009001864</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.0307283045 0.0290588367</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.0046881768 0.0027780062</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 0.0550252516 0.0327066836</span> +<span class="r-in"><span><span class="va">rel_diffs_untransformed_ff</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 0.0005408689 0.0002217233</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.0046102155 0.0023732280</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.0146740687 0.0025291815</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.0046995210 0.0023457712</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 0.0550252516 0.0327066836</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The profiling for the following fit does not finish in a reasonable time,</span></span></span> +<span class="r-in"><span><span class="co"># therefore we use the quadratic approximation</span></span></span> +<span class="r-in"><span><span class="va">m_synth_DFOP_par</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">DFOP_par_c</span> <span class="op"><-</span> <span class="va">synthetic_data_for_UBA_2014</span><span class="op">[[</span><span class="fl">12</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span></span> +<span class="r-in"><span><span class="va">f_tc_2</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_synth_DFOP_par</span>, <span class="va">DFOP_par_c</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>,</span></span> +<span class="r-in"><span> error_model_algorithm <span class="op">=</span> <span class="st">"direct"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_tc_2</span>, method <span class="op">=</span> <span class="st">"quadratic"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 94.596181875 106.19936592</span> +<span class="r-out co"><span class="r-pr">#></span> k_M1 0.037605432 0.04490757</span> +<span class="r-out co"><span class="r-pr">#></span> k_M2 0.008568745 0.01087675</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_M1 0.021464676 0.62023880</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_M2 0.015167158 0.37975350</span> +<span class="r-out co"><span class="r-pr">#></span> k1 0.273897535 0.33388072</span> +<span class="r-out co"><span class="r-pr">#></span> k2 0.018614555 0.02250379</span> +<span class="r-out co"><span class="r-pr">#></span> g 0.671943738 0.73583261</span> +<span class="r-out co"><span class="r-pr">#></span> sigma_low 0.251283679 0.83992102</span> +<span class="r-out co"><span class="r-pr">#></span> rsd_high 0.040411022 0.07662008</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/confint.html" class="external-link">confint</a></span><span class="op">(</span><span class="va">f_tc_2</span>, <span class="st">"parent_0"</span>, method <span class="op">=</span> <span class="st">"quadratic"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 2.5% 97.5%</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 94.59618 106.1994</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/create_deg_func.html b/docs/dev/reference/create_deg_func.html new file mode 100644 index 00000000..4c66c02b --- /dev/null +++ b/docs/dev/reference/create_deg_func.html @@ -0,0 +1,148 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Create degradation functions for known analytical solutions — create_deg_func • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Create degradation functions for known analytical solutions — create_deg_func"><meta name="description" content="Create degradation functions for known analytical solutions"><meta property="og:description" content="Create degradation functions for known analytical solutions"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Create degradation functions for known analytical solutions</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/create_deg_func.R" class="external-link"><code>R/create_deg_func.R</code></a></small> + <div class="d-none name"><code>create_deg_func.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Create degradation functions for known analytical solutions</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">create_deg_func</span><span class="op">(</span><span class="va">spec</span>, use_of_ff <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"min"</span>, <span class="st">"max"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-spec">spec<a class="anchor" aria-label="anchor" href="#arg-spec"></a></dt> +<dd><p>List of model specifications as contained in mkinmod objects</p></dd> + + +<dt id="arg-use-of-ff">use_of_ff<a class="anchor" aria-label="anchor" href="#arg-use-of-ff"></a></dt> +<dd><p>Minimum or maximum use of formation fractions</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>Degradation function to be attached to mkinmod objects</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">FOCUS_D</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span> <span class="co"># to avoid warnings</span></span></span> +<span class="r-in"><span><span class="va">fit_1</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, solution_type <span class="op">=</span> <span class="st">"analytical"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">fit_2</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="va"><a href="http://rbenchmark.googlecode.com" class="external-link">rbenchmark</a></span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/rbenchmark/man/benchmark.html" class="external-link">benchmark</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> analytical <span class="op">=</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, solution_type <span class="op">=</span> <span class="st">"analytical"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> deSolve <span class="op">=</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> replications <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Loading required package: rbenchmark</span> +<span class="r-out co"><span class="r-pr">#></span> test replications elapsed relative user.self sys.self user.child</span> +<span class="r-out co"><span class="r-pr">#></span> 1 analytical 2 0.249 1.000 0.249 0 0</span> +<span class="r-out co"><span class="r-pr">#></span> 2 deSolve 2 0.307 1.233 0.306 0 0</span> +<span class="r-out co"><span class="r-pr">#></span> sys.child</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0</span> +<span class="r-out co"><span class="r-pr">#></span> 2 0</span> +<span class="r-in"><span> <span class="va">DFOP_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/rbenchmark/man/benchmark.html" class="external-link">benchmark</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> analytical <span class="op">=</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">DFOP_SFO</span>, <span class="va">FOCUS_D</span>, solution_type <span class="op">=</span> <span class="st">"analytical"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> deSolve <span class="op">=</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">DFOP_SFO</span>, <span class="va">FOCUS_D</span>, solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> replications <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> test replications elapsed relative user.self sys.self user.child</span> +<span class="r-out co"><span class="r-pr">#></span> 1 analytical 2 0.391 1.000 0.391 0 0</span> +<span class="r-out co"><span class="r-pr">#></span> 2 deSolve 2 0.543 1.389 0.542 0 0</span> +<span class="r-out co"><span class="r-pr">#></span> sys.child</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0</span> +<span class="r-out co"><span class="r-pr">#></span> 2 0</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/dimethenamid_2018-1.png b/docs/dev/reference/dimethenamid_2018-1.png Binary files differnew file mode 100644 index 00000000..3a509a7f --- /dev/null +++ b/docs/dev/reference/dimethenamid_2018-1.png diff --git a/docs/dev/reference/dimethenamid_2018.html b/docs/dev/reference/dimethenamid_2018.html new file mode 100644 index 00000000..4bd35bc6 --- /dev/null +++ b/docs/dev/reference/dimethenamid_2018.html @@ -0,0 +1,347 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018 • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018"><meta name="description" content="The datasets were extracted from the active substance evaluation dossier +published by EFSA. Kinetic evaluations shown for these datasets are intended +to illustrate and advance kinetic modelling. The fact that these data and +some results are shown here does not imply a license to use them in the +context of pesticide registrations, as the use of the data may be +constrained by data protection regulations."><meta property="og:description" content="The datasets were extracted from the active substance evaluation dossier +published by EFSA. Kinetic evaluations shown for these datasets are intended +to illustrate and advance kinetic modelling. The fact that these data and +some results are shown here does not imply a license to use them in the +context of pesticide registrations, as the use of the data may be +constrained by data protection regulations."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/dimethenamid_2018.R" class="external-link"><code>R/dimethenamid_2018.R</code></a></small> + <div class="d-none name"><code>dimethenamid_2018.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The datasets were extracted from the active substance evaluation dossier +published by EFSA. Kinetic evaluations shown for these datasets are intended +to illustrate and advance kinetic modelling. The fact that these data and +some results are shown here does not imply a license to use them in the +context of pesticide registrations, as the use of the data may be +constrained by data protection regulations.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">dimethenamid_2018</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>An <a href="mkindsg.html">mkindsg</a> object grouping seven datasets with some meta information</p> + </div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>Rapporteur Member State Germany, Co-Rapporteur Member State Bulgaria (2018) +Renewal Assessment Report Dimethenamid-P Volume 3 - B.8 Environmental fate and behaviour +Rev. 2 - November 2017 +https://open.efsa.europa.eu/study-inventory/EFSA-Q-2014-00716</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>The R code used to create this data object is installed with this package +in the 'dataset_generation' directory. In the code, page numbers are given for +specific pieces of information in the comments.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">dimethenamid_2018</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkindsg> holding 7 mkinds objects</span> +<span class="r-out co"><span class="r-pr">#></span> Title $title: Aerobic soil degradation data on dimethenamid-P from the EU assessment in 2018 </span> +<span class="r-out co"><span class="r-pr">#></span> Occurrence of observed compounds $observed_n:</span> +<span class="r-out co"><span class="r-pr">#></span> DMTAP M23 M27 M31 DMTA </span> +<span class="r-out co"><span class="r-pr">#></span> 3 7 7 7 4 </span> +<span class="r-out co"><span class="r-pr">#></span> Time normalisation factors $f_time_norm:</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 1.0000000 0.9706477 1.2284784 1.2284784 0.6233856 0.7678922 0.6733938</span> +<span class="r-out co"><span class="r-pr">#></span> Meta information $meta:</span> +<span class="r-out co"><span class="r-pr">#></span> study usda_soil_type study_moisture_ref_type rel_moisture</span> +<span class="r-out co"><span class="r-pr">#></span> Calke Unsworth 2014 Sandy loam pF2 1.00</span> +<span class="r-out co"><span class="r-pr">#></span> Borstel Staudenmaier 2009 Sand pF1 0.50</span> +<span class="r-out co"><span class="r-pr">#></span> Elliot 1 Wendt 1997 Clay loam pF2.5 0.75</span> +<span class="r-out co"><span class="r-pr">#></span> Elliot 2 Wendt 1997 Clay loam pF2.5 0.75</span> +<span class="r-out co"><span class="r-pr">#></span> Flaach König 1996 Sandy clay loam pF1 0.40</span> +<span class="r-out co"><span class="r-pr">#></span> BBA 2.2 König 1995 Loamy sand pF1 0.40</span> +<span class="r-out co"><span class="r-pr">#></span> BBA 2.3 König 1995 Sandy loam pF1 0.40</span> +<span class="r-out co"><span class="r-pr">#></span> study_ref_moisture temperature</span> +<span class="r-out co"><span class="r-pr">#></span> Calke NA 20</span> +<span class="r-out co"><span class="r-pr">#></span> Borstel 23.00 20</span> +<span class="r-out co"><span class="r-pr">#></span> Elliot 1 33.37 23</span> +<span class="r-out co"><span class="r-pr">#></span> Elliot 2 33.37 23</span> +<span class="r-out co"><span class="r-pr">#></span> Flaach NA 20</span> +<span class="r-out co"><span class="r-pr">#></span> BBA 2.2 NA 20</span> +<span class="r-out co"><span class="r-pr">#></span> BBA 2.3 NA 20</span> +<span class="r-in"><span><span class="va">dmta_ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">7</span>, <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span><span class="op">[[</span><span class="va">i</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span></span> +<span class="r-in"><span> <span class="va">ds_i</span><span class="op">[</span><span class="va">ds_i</span><span class="op">$</span><span class="va">name</span> <span class="op">==</span> <span class="st">"DMTAP"</span>, <span class="st">"name"</span><span class="op">]</span> <span class="op"><-</span> <span class="st">"DMTA"</span></span></span> +<span class="r-in"><span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op">*</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">f_time_norm</span><span class="op">[</span><span class="va">i</span><span class="op">]</span></span></span> +<span class="r-in"><span> <span class="va">ds_i</span></span></span> +<span class="r-in"><span><span class="op">}</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="va">ds</span><span class="op">$</span><span class="va">title</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span>, <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span></span> +<span class="r-in"><span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="co"># We don't use DFOP for the parent compound, as this gives numerical</span></span></span> +<span class="r-in"><span><span class="co"># instabilities in the fits</span></span></span> +<span class="r-in"><span><span class="va">sfo_sfo3p</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> DMTA <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M23"</span>, <span class="st">"M27"</span>, <span class="st">"M31"</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M23 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M27 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M31 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M27"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span></span></span> +<span class="r-in"><span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dmta_sfo_sfo3p_tc</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"SFO-SFO3+"</span> <span class="op">=</span> <span class="va">sfo_sfo3p</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">dmta_ds</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">dmta_sfo_sfo3p_tc</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mmkin> object</span> +<span class="r-out co"><span class="r-pr">#></span> Status of individual fits:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model Calke Borstel Flaach BBA 2.2 BBA 2.3 Elliot</span> +<span class="r-out co"><span class="r-pr">#></span> SFO-SFO3+ OK OK OK OK OK OK </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> OK: No warnings</span> +<span class="r-in"><span><span class="co"># The default (test_log_parms = FALSE) gives an undue</span></span></span> +<span class="r-in"><span><span class="co"># influence of ill-defined rate constants that have</span></span></span> +<span class="r-in"><span><span class="co"># extremely small values:</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="mixed.html">mixed</a></span><span class="op">(</span><span class="va">dmta_sfo_sfo3p_tc</span><span class="op">)</span>, test_log_parms <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="dimethenamid_2018-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># If we disregards ill-defined rate constants, the results</span></span></span> +<span class="r-in"><span><span class="co"># look more plausible, but the truth is likely to be in</span></span></span> +<span class="r-in"><span><span class="co"># between these variants</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="mixed.html">mixed</a></span><span class="op">(</span><span class="va">dmta_sfo_sfo3p_tc</span><span class="op">)</span>, test_log_parms <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># We can also specify a default value for the failing</span></span></span> +<span class="r-in"><span><span class="co"># log parameters, to mimic FOCUS guidance</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="mixed.html">mixed</a></span><span class="op">(</span><span class="va">dmta_sfo_sfo3p_tc</span><span class="op">)</span>, test_log_parms <span class="op">=</span> <span class="cn">TRUE</span>,</span></span> +<span class="r-in"><span> default_log_parms <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">2</span><span class="op">)</span><span class="op">/</span><span class="fl">1000</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># As these attempts are not satisfying, we use nonlinear mixed-effects models</span></span></span> +<span class="r-in"><span><span class="co"># f_dmta_nlme_tc <- nlme(dmta_sfo_sfo3p_tc)</span></span></span> +<span class="r-in"><span><span class="co"># nlme reaches maxIter = 50 without convergence</span></span></span> +<span class="r-in"><span><span class="va">f_dmta_saem_tc</span> <span class="op"><-</span> <span class="fu"><a href="saem.html">saem</a></span><span class="op">(</span><span class="va">dmta_sfo_sfo3p_tc</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># I am commenting out the convergence plot as rendering them</span></span></span> +<span class="r-in"><span><span class="co"># with pkgdown fails (at least without further tweaks to the</span></span></span> +<span class="r-in"><span><span class="co"># graphics device used)</span></span></span> +<span class="r-in"><span><span class="co">#saemix::plot(f_dmta_saem_tc$so, plot.type = "convergence")</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">f_dmta_saem_tc</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> saemix version used for fitting: 3.3 </span> +<span class="r-out co"><span class="r-pr">#></span> mkin version used for pre-fitting: 1.2.10 </span> +<span class="r-out co"><span class="r-pr">#></span> R version used for fitting: 4.4.2 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of fit: Fri Feb 14 07:29:22 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of summary: Fri Feb 14 07:29:22 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_DMTA/dt = - k_DMTA * DMTA</span> +<span class="r-out co"><span class="r-pr">#></span> d_M23/dt = + f_DMTA_to_M23 * k_DMTA * DMTA - k_M23 * M23</span> +<span class="r-out co"><span class="r-pr">#></span> d_M27/dt = + f_DMTA_to_M27 * k_DMTA * DMTA - k_M27 * M27 + k_M31 * M31</span> +<span class="r-out co"><span class="r-pr">#></span> d_M31/dt = + f_DMTA_to_M31 * k_DMTA * DMTA - k_M31 * M31</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 563 observations of 4 variable(s) grouped in 6 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model predictions using solution type deSolve </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted in 295.57 s</span> +<span class="r-out co"><span class="r-pr">#></span> Using 300, 100 iterations and 9 chains</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance model: Two-component variance function </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for degradation parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_0 log_k_DMTA log_k_M23 log_k_M27 log_k_M31 f_DMTA_ilr_1 </span> +<span class="r-out co"><span class="r-pr">#></span> 95.5662 -2.9048 -3.8130 -4.1600 -4.1486 0.1341 </span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_2 f_DMTA_ilr_3 </span> +<span class="r-out co"><span class="r-pr">#></span> 0.1385 -1.6700 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed degradation parameter values:</span> +<span class="r-out co"><span class="r-pr">#></span> None</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for random effects (square root of initial entries in omega):</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_0 log_k_DMTA log_k_M23 log_k_M27 log_k_M31 f_DMTA_ilr_1</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_0 4.802 0.0000 0.0000 0.000 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_DMTA 0.000 0.9834 0.0000 0.000 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M23 0.000 0.0000 0.6983 0.000 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M27 0.000 0.0000 0.0000 1.028 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M31 0.000 0.0000 0.0000 0.000 0.9841 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_1 0.000 0.0000 0.0000 0.000 0.0000 0.7185</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_2 0.000 0.0000 0.0000 0.000 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_3 0.000 0.0000 0.0000 0.000 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_2 f_DMTA_ilr_3</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_0 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_DMTA 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M23 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M27 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M31 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_1 0.0000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_2 0.7378 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_3 0.0000 0.4451</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for error model parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 b.1 </span> +<span class="r-out co"><span class="r-pr">#></span> 1 1 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Results:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood computed by importance sampling</span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 2276 2273 -1120</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Optimised parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_0 88.4862 84.1127 92.8598</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_DMTA -3.0512 -3.5674 -2.5351</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M23 -4.0576 -4.9013 -3.2139</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M27 -3.8584 -4.2572 -3.4595</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M31 -3.9779 -4.4844 -3.4714</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_1 0.1264 -0.2186 0.4714</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_2 0.1509 -0.2547 0.5565</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_3 -1.3891 -1.6962 -1.0819</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 0.9196 0.8307 1.0085</span> +<span class="r-out co"><span class="r-pr">#></span> b.1 0.1377 0.1205 0.1549</span> +<span class="r-out co"><span class="r-pr">#></span> SD.DMTA_0 3.5956 -0.8167 8.0078</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_DMTA 0.6437 0.2784 1.0091</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_M23 0.9929 0.3719 1.6139</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_M27 0.4530 0.1522 0.7537</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_M31 0.5773 0.1952 0.9595</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_DMTA_ilr_1 0.4063 0.1505 0.6621</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_DMTA_ilr_2 0.4800 0.1817 0.7783</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_DMTA_ilr_3 0.3582 0.1350 0.5814</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Correlation: </span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_0 l__DMTA lg__M23 lg__M27 lg__M31 f_DMTA__1 f_DMTA__2</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_DMTA 0.0306 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M23 -0.0234 -0.0032 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M27 -0.0380 -0.0049 0.0041 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M31 -0.0247 -0.0031 0.0022 0.0817 </span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_1 -0.0046 -0.0006 0.0425 -0.0438 0.0319 </span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_2 -0.0008 -0.0002 0.0216 -0.0267 -0.0890 -0.0349 </span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_ilr_3 -0.1805 -0.0136 0.0434 0.0791 0.0390 -0.0061 0.0053 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> SD.DMTA_0 3.5956 -0.8167 8.0078</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_DMTA 0.6437 0.2784 1.0091</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_M23 0.9929 0.3719 1.6139</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_M27 0.4530 0.1522 0.7537</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_M31 0.5773 0.1952 0.9595</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_DMTA_ilr_1 0.4063 0.1505 0.6621</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_DMTA_ilr_2 0.4800 0.1817 0.7783</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_DMTA_ilr_3 0.3582 0.1350 0.5814</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance model:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 0.9196 0.8307 1.0085</span> +<span class="r-out co"><span class="r-pr">#></span> b.1 0.1377 0.1205 0.1549</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Backtransformed parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_0 88.48621 84.112654 92.85977</span> +<span class="r-out co"><span class="r-pr">#></span> k_DMTA 0.04730 0.028230 0.07926</span> +<span class="r-out co"><span class="r-pr">#></span> k_M23 0.01729 0.007437 0.04020</span> +<span class="r-out co"><span class="r-pr">#></span> k_M27 0.02110 0.014162 0.03144</span> +<span class="r-out co"><span class="r-pr">#></span> k_M31 0.01872 0.011283 0.03107</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_to_M23 0.14551 NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_to_M27 0.12169 NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> f_DMTA_to_M31 0.11062 NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Resulting formation fractions:</span> +<span class="r-out co"><span class="r-pr">#></span> ff</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_M23 0.1455</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_M27 0.1217</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_M31 0.1106</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA_sink 0.6222</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Estimated disappearance times:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> DMTA 14.65 48.68</span> +<span class="r-out co"><span class="r-pr">#></span> M23 40.09 133.17</span> +<span class="r-out co"><span class="r-pr">#></span> M27 32.85 109.11</span> +<span class="r-out co"><span class="r-pr">#></span> M31 37.02 122.97</span> +<span class="r-in"><span><span class="co"># As the confidence interval for the random effects of DMTA_0</span></span></span> +<span class="r-in"><span><span class="co"># includes zero, we could try an alternative model without</span></span></span> +<span class="r-in"><span><span class="co"># such random effects</span></span></span> +<span class="r-in"><span><span class="co"># f_dmta_saem_tc_2 <- saem(dmta_sfo_sfo3p_tc,</span></span></span> +<span class="r-in"><span><span class="co"># covariance.model = diag(c(0, rep(1, 7))))</span></span></span> +<span class="r-in"><span><span class="co"># saemix::plot(f_dmta_saem_tc_2$so, plot.type = "convergence")</span></span></span> +<span class="r-in"><span><span class="co"># This does not perform better judged by AIC and BIC</span></span></span> +<span class="r-in"><span><span class="co"># saemix::compare.saemix(f_dmta_saem_tc$so, f_dmta_saem_tc_2$so)</span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/ds_dfop.html b/docs/dev/reference/ds_dfop.html new file mode 100644 index 00000000..66134d2e --- /dev/null +++ b/docs/dev/reference/ds_dfop.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html"> + </head> +</html> + diff --git a/docs/dev/reference/ds_dfop_sfo.html b/docs/dev/reference/ds_dfop_sfo.html new file mode 100644 index 00000000..66134d2e --- /dev/null +++ b/docs/dev/reference/ds_dfop_sfo.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html"> + </head> +</html> + diff --git a/docs/dev/reference/ds_fomc.html b/docs/dev/reference/ds_fomc.html new file mode 100644 index 00000000..66134d2e --- /dev/null +++ b/docs/dev/reference/ds_fomc.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html"> + </head> +</html> + diff --git a/docs/dev/reference/ds_hs.html b/docs/dev/reference/ds_hs.html new file mode 100644 index 00000000..66134d2e --- /dev/null +++ b/docs/dev/reference/ds_hs.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html"> + </head> +</html> + diff --git a/docs/dev/reference/ds_mixed-1.png b/docs/dev/reference/ds_mixed-1.png Binary files differnew file mode 100644 index 00000000..7968f1c9 --- /dev/null +++ b/docs/dev/reference/ds_mixed-1.png diff --git a/docs/dev/reference/ds_mixed.html b/docs/dev/reference/ds_mixed.html new file mode 100644 index 00000000..875949dd --- /dev/null +++ b/docs/dev/reference/ds_mixed.html @@ -0,0 +1,208 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Synthetic data for hierarchical kinetic degradation models — ds_mixed • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Synthetic data for hierarchical kinetic degradation models — ds_mixed"><meta name="description" content="The R code used to create this data object is installed with this package in +the 'dataset_generation' directory."><meta property="og:description" content="The R code used to create this data object is installed with this package in +the 'dataset_generation' directory."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Synthetic data for hierarchical kinetic degradation models</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/ds_mixed.R" class="external-link"><code>R/ds_mixed.R</code></a></small> + <div class="d-none name"><code>ds_mixed.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The R code used to create this data object is installed with this package in +the 'dataset_generation' directory.</p> + </div> + + + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">sfo_mmkin</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">ds_sfo</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, cores <span class="op">=</span> <span class="fl">15</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">sfo_saem</span> <span class="op"><-</span> <span class="fu"><a href="saem.html">saem</a></span><span class="op">(</span><span class="va">sfo_mmkin</span>, no_random_effect <span class="op">=</span> <span class="st">"parent_0"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">sfo_saem</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="ds_mixed-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># This is the code used to generate the datasets</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/cat.html" class="external-link">cat</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/readLines.html" class="external-link">readLines</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/system.file.html" class="external-link">system.file</a></span><span class="op">(</span><span class="st">"dataset_generation/ds_mixed.R"</span>, package <span class="op">=</span> <span class="st">"mkin"</span><span class="op">)</span><span class="op">)</span>, sep <span class="op">=</span> <span class="st">"\n"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> # Synthetic data for hierarchical kinetic models</span> +<span class="r-out co"><span class="r-pr">#></span> # Refactored version of the code previously in tests/testthat/setup_script.R</span> +<span class="r-out co"><span class="r-pr">#></span> # The number of datasets was 3 for FOMC, and 10 for HS in that script, now it</span> +<span class="r-out co"><span class="r-pr">#></span> # is always 15 for consistency</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> library(mkin) # We use mkinmod and mkinpredict</span> +<span class="r-out co"><span class="r-pr">#></span> sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120)</span> +<span class="r-out co"><span class="r-pr">#></span> n <- 15</span> +<span class="r-out co"><span class="r-pr">#></span> log_sd <- 0.3</span> +<span class="r-out co"><span class="r-pr">#></span> err_1 = list(const = 1, prop = 0.05)</span> +<span class="r-out co"><span class="r-pr">#></span> tc <- function(value) sigma_twocomp(value, err_1$const, err_1$prop)</span> +<span class="r-out co"><span class="r-pr">#></span> const <- function(value) 2</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> SFO <- mkinmod(parent = mkinsub("SFO"))</span> +<span class="r-out co"><span class="r-pr">#></span> sfo_pop <- list(parent_0 = 100, k_parent = 0.03)</span> +<span class="r-out co"><span class="r-pr">#></span> sfo_parms <- as.matrix(data.frame(</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent = rlnorm(n, log(sfo_pop$k_parent), log_sd)))</span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> ds_sfo <- lapply(1:n, function(i) {</span> +<span class="r-out co"><span class="r-pr">#></span> ds_mean <- mkinpredict(SFO, sfo_parms[i, ],</span> +<span class="r-out co"><span class="r-pr">#></span> c(parent = sfo_pop$parent_0), sampling_times)</span> +<span class="r-out co"><span class="r-pr">#></span> add_err(ds_mean, tc, n = 1)[[1]]</span> +<span class="r-out co"><span class="r-pr">#></span> })</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_sfo, "pop") <- sfo_pop</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_sfo, "parms") <- sfo_parms</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC <- mkinmod(parent = mkinsub("FOMC"))</span> +<span class="r-out co"><span class="r-pr">#></span> fomc_pop <- list(parent_0 = 100, alpha = 2, beta = 8)</span> +<span class="r-out co"><span class="r-pr">#></span> fomc_parms <- as.matrix(data.frame(</span> +<span class="r-out co"><span class="r-pr">#></span> alpha = rlnorm(n, log(fomc_pop$alpha), 0.4),</span> +<span class="r-out co"><span class="r-pr">#></span> beta = rlnorm(n, log(fomc_pop$beta), 0.2)))</span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> ds_fomc <- lapply(1:n, function(i) {</span> +<span class="r-out co"><span class="r-pr">#></span> ds_mean <- mkinpredict(FOMC, fomc_parms[i, ],</span> +<span class="r-out co"><span class="r-pr">#></span> c(parent = fomc_pop$parent_0), sampling_times)</span> +<span class="r-out co"><span class="r-pr">#></span> add_err(ds_mean, tc, n = 1)[[1]]</span> +<span class="r-out co"><span class="r-pr">#></span> })</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_fomc, "pop") <- fomc_pop</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_fomc, "parms") <- fomc_parms</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP <- mkinmod(parent = mkinsub("DFOP"))</span> +<span class="r-out co"><span class="r-pr">#></span> dfop_pop <- list(parent_0 = 100, k1 = 0.06, k2 = 0.015, g = 0.4)</span> +<span class="r-out co"><span class="r-pr">#></span> dfop_parms <- as.matrix(data.frame(</span> +<span class="r-out co"><span class="r-pr">#></span> k1 = rlnorm(n, log(dfop_pop$k1), log_sd),</span> +<span class="r-out co"><span class="r-pr">#></span> k2 = rlnorm(n, log(dfop_pop$k2), log_sd),</span> +<span class="r-out co"><span class="r-pr">#></span> g = plogis(rnorm(n, qlogis(dfop_pop$g), log_sd))))</span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> ds_dfop <- lapply(1:n, function(i) {</span> +<span class="r-out co"><span class="r-pr">#></span> ds_mean <- mkinpredict(DFOP, dfop_parms[i, ],</span> +<span class="r-out co"><span class="r-pr">#></span> c(parent = dfop_pop$parent_0), sampling_times)</span> +<span class="r-out co"><span class="r-pr">#></span> add_err(ds_mean, tc, n = 1)[[1]]</span> +<span class="r-out co"><span class="r-pr">#></span> })</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_dfop, "pop") <- dfop_pop</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_dfop, "parms") <- dfop_parms</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> HS <- mkinmod(parent = mkinsub("HS"))</span> +<span class="r-out co"><span class="r-pr">#></span> hs_pop <- list(parent_0 = 100, k1 = 0.08, k2 = 0.01, tb = 15)</span> +<span class="r-out co"><span class="r-pr">#></span> hs_parms <- as.matrix(data.frame(</span> +<span class="r-out co"><span class="r-pr">#></span> k1 = rlnorm(n, log(hs_pop$k1), log_sd),</span> +<span class="r-out co"><span class="r-pr">#></span> k2 = rlnorm(n, log(hs_pop$k2), log_sd),</span> +<span class="r-out co"><span class="r-pr">#></span> tb = rlnorm(n, log(hs_pop$tb), 0.1)))</span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> ds_hs <- lapply(1:n, function(i) {</span> +<span class="r-out co"><span class="r-pr">#></span> ds_mean <- mkinpredict(HS, hs_parms[i, ],</span> +<span class="r-out co"><span class="r-pr">#></span> c(parent = hs_pop$parent_0), sampling_times)</span> +<span class="r-out co"><span class="r-pr">#></span> add_err(ds_mean, const, n = 1)[[1]]</span> +<span class="r-out co"><span class="r-pr">#></span> })</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_hs, "pop") <- hs_pop</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_hs, "parms") <- hs_parms</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP_SFO <- mkinmod(</span> +<span class="r-out co"><span class="r-pr">#></span> parent = mkinsub("DFOP", "m1"),</span> +<span class="r-out co"><span class="r-pr">#></span> m1 = mkinsub("SFO"),</span> +<span class="r-out co"><span class="r-pr">#></span> quiet = TRUE)</span> +<span class="r-out co"><span class="r-pr">#></span> dfop_sfo_pop <- list(parent_0 = 100,</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 = 0.007, f_parent_to_m1 = 0.5,</span> +<span class="r-out co"><span class="r-pr">#></span> k1 = 0.1, k2 = 0.02, g = 0.5)</span> +<span class="r-out co"><span class="r-pr">#></span> dfop_sfo_parms <- as.matrix(data.frame(</span> +<span class="r-out co"><span class="r-pr">#></span> k1 = rlnorm(n, log(dfop_sfo_pop$k1), log_sd),</span> +<span class="r-out co"><span class="r-pr">#></span> k2 = rlnorm(n, log(dfop_sfo_pop$k2), log_sd),</span> +<span class="r-out co"><span class="r-pr">#></span> g = plogis(rnorm(n, qlogis(dfop_sfo_pop$g), log_sd)),</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 = plogis(rnorm(n,</span> +<span class="r-out co"><span class="r-pr">#></span> qlogis(dfop_sfo_pop$f_parent_to_m1), log_sd)),</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 = rlnorm(n, log(dfop_sfo_pop$k_m1), log_sd)))</span> +<span class="r-out co"><span class="r-pr">#></span> ds_dfop_sfo_mean <- lapply(1:n,</span> +<span class="r-out co"><span class="r-pr">#></span> function(i) {</span> +<span class="r-out co"><span class="r-pr">#></span> mkinpredict(DFOP_SFO, dfop_sfo_parms[i, ],</span> +<span class="r-out co"><span class="r-pr">#></span> c(parent = dfop_sfo_pop$parent_0, m1 = 0), sampling_times)</span> +<span class="r-out co"><span class="r-pr">#></span> }</span> +<span class="r-out co"><span class="r-pr">#></span> )</span> +<span class="r-out co"><span class="r-pr">#></span> set.seed(123456)</span> +<span class="r-out co"><span class="r-pr">#></span> ds_dfop_sfo <- lapply(ds_dfop_sfo_mean, function(ds) {</span> +<span class="r-out co"><span class="r-pr">#></span> add_err(ds,</span> +<span class="r-out co"><span class="r-pr">#></span> sdfunc = function(value) sqrt(err_1$const^2 + value^2 * err_1$prop^2),</span> +<span class="r-out co"><span class="r-pr">#></span> n = 1, secondary = "m1")[[1]]</span> +<span class="r-out co"><span class="r-pr">#></span> })</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_dfop_sfo, "pop") <- dfop_sfo_pop</span> +<span class="r-out co"><span class="r-pr">#></span> attr(ds_dfop_sfo, "parms") <- dfop_sfo_parms</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> #save(ds_sfo, ds_fomc, ds_dfop, ds_hs, ds_dfop_sfo, file = "data/ds_mixed.rda", version = 2)</span> +</code></pre></div> + </div> + </main></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/ds_sfo.html b/docs/dev/reference/ds_sfo.html new file mode 100644 index 00000000..66134d2e --- /dev/null +++ b/docs/dev/reference/ds_sfo.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html"> + </head> +</html> + diff --git a/docs/dev/reference/endpoints.html b/docs/dev/reference/endpoints.html new file mode 100644 index 00000000..daa1ec0b --- /dev/null +++ b/docs/dev/reference/endpoints.html @@ -0,0 +1,181 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints"><meta name="description" content="This function calculates DT50 and DT90 values as well as formation fractions +from kinetic models fitted with mkinfit. If the SFORB model was specified +for one of the parents or metabolites, the Eigenvalues are returned. These +are equivalent to the rate constants of the DFOP model, but with the +advantage that the SFORB model can also be used for metabolites."><meta property="og:description" content="This function calculates DT50 and DT90 values as well as formation fractions +from kinetic models fitted with mkinfit. If the SFORB model was specified +for one of the parents or metabolites, the Eigenvalues are returned. These +are equivalent to the rate constants of the DFOP model, but with the +advantage that the SFORB model can also be used for metabolites."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Function to calculate endpoints for further use from kinetic models fitted with mkinfit</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/endpoints.R" class="external-link"><code>R/endpoints.R</code></a></small> + <div class="d-none name"><code>endpoints.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function calculates DT50 and DT90 values as well as formation fractions +from kinetic models fitted with mkinfit. If the SFORB model was specified +for one of the parents or metabolites, the Eigenvalues are returned. These +are equivalent to the rate constants of the DFOP model, but with the +advantage that the SFORB model can also be used for metabolites.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">endpoints</span><span class="op">(</span><span class="va">fit</span>, covariates <span class="op">=</span> <span class="cn">NULL</span>, covariate_quantile <span class="op">=</span> <span class="fl">0.5</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-fit">fit<a class="anchor" aria-label="anchor" href="#arg-fit"></a></dt> +<dd><p>An object of class <a href="mkinfit.html">mkinfit</a>, <a href="nlme.mmkin.html">nlme.mmkin</a> or <a href="saem.html">saem.mmkin</a>, or +another object that has list components mkinmod containing an <a href="mkinmod.html">mkinmod</a> +degradation model, and two numeric vectors, bparms.optim and bparms.fixed, +that contain parameter values for that model.</p></dd> + + +<dt id="arg-covariates">covariates<a class="anchor" aria-label="anchor" href="#arg-covariates"></a></dt> +<dd><p>Numeric vector with covariate values for all variables in +any covariate models in the object. If given, it overrides 'covariate_quantile'.</p></dd> + + +<dt id="arg-covariate-quantile">covariate_quantile<a class="anchor" aria-label="anchor" href="#arg-covariate-quantile"></a></dt> +<dd><p>This argument only has an effect if the fitted +object has covariate models. If so, the default is to show endpoints +for the median of the covariate values (50th percentile).</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A list with a matrix of dissipation times named distimes, and, if +applicable, a vector of formation fractions named ff and, if the SFORB model +was in use, a vector of eigenvalues of these SFORB models, equivalent to +DFOP rate constants</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>Additional DT50 values are calculated from the FOMC DT90 and k1 and k2 from +HS and DFOP, as well as from Eigenvalues b1 and b2 of any SFORB models</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>The function is used internally by <a href="summary.mkinfit.html">summary.mkinfit</a>, +<a href="summary.nlme.mmkin.html">summary.nlme.mmkin</a> and <a href="summary.saem.mmkin.html">summary.saem.mmkin</a>.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu">endpoints</span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back</span> +<span class="r-out co"><span class="r-pr">#></span> parent 1.785233 15.1479 4.559973</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span> <span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">fit_2</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu">endpoints</span><span class="op">(</span><span class="va">fit_2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back DT50_k1 DT50_k2</span> +<span class="r-out co"><span class="r-pr">#></span> parent 1.886925 21.25106 6.397207 1.508293 38.83438</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span> <span class="va">fit_3</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFORB"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu">endpoints</span><span class="op">(</span><span class="va">fit_3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_free </span> +<span class="r-out co"><span class="r-pr">#></span> 1 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $SFORB</span> +<span class="r-out co"><span class="r-pr">#></span> parent_b1 parent_b2 parent_g </span> +<span class="r-out co"><span class="r-pr">#></span> 0.4595574 0.0178488 0.8539454 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back DT50_parent_b1 DT50_parent_b2</span> +<span class="r-out co"><span class="r-pr">#></span> parent 1.886925 21.25106 6.397208 1.508293 38.83438</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span> <span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/experimental_data_for_UBA-1.png b/docs/dev/reference/experimental_data_for_UBA-1.png Binary files differnew file mode 100644 index 00000000..07c1b33e --- /dev/null +++ b/docs/dev/reference/experimental_data_for_UBA-1.png diff --git a/docs/dev/reference/experimental_data_for_UBA.html b/docs/dev/reference/experimental_data_for_UBA.html new file mode 100644 index 00000000..93ed1dfa --- /dev/null +++ b/docs/dev/reference/experimental_data_for_UBA.html @@ -0,0 +1,255 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Experimental datasets used for development and testing of error models — experimental_data_for_UBA_2019 • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Experimental datasets used for development and testing of error models — experimental_data_for_UBA_2019"><meta name="description" content="The 12 datasets were extracted from active substance evaluation dossiers published + by EFSA. Kinetic evaluations shown for these datasets are intended to illustrate + and advance error model specifications. The fact that these data and some + results are shown here do not imply a license to use them in the context of + pesticide registrations, as the use of the data may be constrained by + data protection regulations. +Preprocessing of data was performed based on the recommendations of the FOCUS + kinetics workgroup (FOCUS, 2014) as described below. +Datasets 1 and 2 are from the Renewal Assessment Report (RAR) for imazamox + (France, 2015, p. 15). For setting values reported as zero, an LOQ of 0.1 + was assumed. Metabolite residues reported for day zero were added to the + parent compound residues. +Datasets 3 and 4 are from the Renewal Assessment Report (RAR) for isofetamid + (Belgium, 2014, p. 8) and show the data for two different radiolabels. For + dataset 4, the value given for the metabolite in the day zero sampling + in replicate B was added to the parent compound, following the respective + FOCUS recommendation. +Dataset 5 is from the Renewal Assessment Report (RAR) for ethofumesate + (Austria, 2015, p. 16). +Datasets 6 to 10 are from the Renewal Assessment Report (RAR) for glyphosate + (Germany, 2013, pages 8, 28, 50, 51). For the initial sampling, + the residues given for the metabolite were added to the parent + value, following the recommendation of the FOCUS kinetics workgroup. +Dataset 11 is from the Renewal Assessment Report (RAR) for 2,4-D + (Hellas, 2013, p. 644). Values reported as zero were set to NA, with + the exception of the day three sampling of metabolite A2, which was set + to one half of the LOD reported to be 1% AR. +Dataset 12 is from the Renewal Assessment Report (RAR) for thifensulfuron-methyl + (United Kingdom, 2014, p. 81)."><meta property="og:description" content="The 12 datasets were extracted from active substance evaluation dossiers published + by EFSA. Kinetic evaluations shown for these datasets are intended to illustrate + and advance error model specifications. The fact that these data and some + results are shown here do not imply a license to use them in the context of + pesticide registrations, as the use of the data may be constrained by + data protection regulations. +Preprocessing of data was performed based on the recommendations of the FOCUS + kinetics workgroup (FOCUS, 2014) as described below. +Datasets 1 and 2 are from the Renewal Assessment Report (RAR) for imazamox + (France, 2015, p. 15). For setting values reported as zero, an LOQ of 0.1 + was assumed. Metabolite residues reported for day zero were added to the + parent compound residues. +Datasets 3 and 4 are from the Renewal Assessment Report (RAR) for isofetamid + (Belgium, 2014, p. 8) and show the data for two different radiolabels. For + dataset 4, the value given for the metabolite in the day zero sampling + in replicate B was added to the parent compound, following the respective + FOCUS recommendation. +Dataset 5 is from the Renewal Assessment Report (RAR) for ethofumesate + (Austria, 2015, p. 16). +Datasets 6 to 10 are from the Renewal Assessment Report (RAR) for glyphosate + (Germany, 2013, pages 8, 28, 50, 51). For the initial sampling, + the residues given for the metabolite were added to the parent + value, following the recommendation of the FOCUS kinetics workgroup. +Dataset 11 is from the Renewal Assessment Report (RAR) for 2,4-D + (Hellas, 2013, p. 644). Values reported as zero were set to NA, with + the exception of the day three sampling of metabolite A2, which was set + to one half of the LOD reported to be 1% AR. +Dataset 12 is from the Renewal Assessment Report (RAR) for thifensulfuron-methyl + (United Kingdom, 2014, p. 81)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Experimental datasets used for development and testing of error models</h1> + + <div class="d-none name"><code>experimental_data_for_UBA.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The 12 datasets were extracted from active substance evaluation dossiers published + by EFSA. Kinetic evaluations shown for these datasets are intended to illustrate + and advance error model specifications. The fact that these data and some + results are shown here do not imply a license to use them in the context of + pesticide registrations, as the use of the data may be constrained by + data protection regulations.</p> +<p>Preprocessing of data was performed based on the recommendations of the FOCUS + kinetics workgroup (FOCUS, 2014) as described below.</p> +<p>Datasets 1 and 2 are from the Renewal Assessment Report (RAR) for imazamox + (France, 2015, p. 15). For setting values reported as zero, an LOQ of 0.1 + was assumed. Metabolite residues reported for day zero were added to the + parent compound residues.</p> +<p>Datasets 3 and 4 are from the Renewal Assessment Report (RAR) for isofetamid + (Belgium, 2014, p. 8) and show the data for two different radiolabels. For + dataset 4, the value given for the metabolite in the day zero sampling + in replicate B was added to the parent compound, following the respective + FOCUS recommendation.</p> +<p>Dataset 5 is from the Renewal Assessment Report (RAR) for ethofumesate + (Austria, 2015, p. 16).</p> +<p>Datasets 6 to 10 are from the Renewal Assessment Report (RAR) for glyphosate + (Germany, 2013, pages 8, 28, 50, 51). For the initial sampling, + the residues given for the metabolite were added to the parent + value, following the recommendation of the FOCUS kinetics workgroup.</p> +<p>Dataset 11 is from the Renewal Assessment Report (RAR) for 2,4-D + (Hellas, 2013, p. 644). Values reported as zero were set to NA, with + the exception of the day three sampling of metabolite A2, which was set + to one half of the LOD reported to be 1% AR.</p> +<p>Dataset 12 is from the Renewal Assessment Report (RAR) for thifensulfuron-methyl + (United Kingdom, 2014, p. 81).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">experimental_data_for_UBA_2019</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A list containing twelve datasets as an R6 class defined by <code><a href="mkinds.html">mkinds</a></code>, + each containing, among others, the following components</p><dl><dt><code>title</code></dt> +<dd><p>The name of the dataset, e.g. <code>Soil 1</code></p></dd> + + <dt><code>data</code></dt> +<dd><p>A data frame with the data in the form expected by <code><a href="mkinfit.html">mkinfit</a></code></p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + + +<p>Austria (2015). Ethofumesate Renewal Assessment Report Volume 3 Annex B.8 (AS)</p> +<p>Belgium (2014). Isofetamid (IKF-5411) Draft Assessment Report Volume 3 Annex B.8 (AS)</p> +<p>France (2015). Imazamox Draft Renewal Assessment Report Volume 3 Annex B.8 (AS)</p> +<p>FOCUS (2014) “Generic guidance for Estimating Persistence and + Degradation Kinetics from Environmental Fate Studies on Pesticides in EU + Registration” Report of the FOCUS Work Group on Degradation Kinetics, + Version 1.1, 18 December 2014 + <a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> +<p>Germany (2013). Renewal Assessment Report Glyphosate Volume 3 Annex B.8: Environmental Fate + and Behaviour</p> +<p>Hellas (2013). Renewal Assessment Report 2,4-D Volume 3 Annex B.8: Fate and behaviour in the + environment</p> +<p>Ranke (2019) Documentation of results obtained for the error model expertise + written for the German Umweltbundesamt.</p> +<p>United Kingdom (2014). Thifensulfuron-methyl - Annex B.8 (Volume 3) to the Report and Proposed + Decision of the United Kingdom made to the European Commission under Regulation (EC) No. + 1141/2010 for renewal of an active substance</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Model definitions</span></span></span> +<span class="r-in"><span><span class="va">sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span></span></span> +<span class="r-in"><span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, to <span class="op">=</span> <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span></span></span> +<span class="r-in"><span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">sfo_sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"A2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A2 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span></span></span> +<span class="r-in"><span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">dfop_sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, to <span class="op">=</span> <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"A2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A2 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span></span></span> +<span class="r-in"><span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">d_1_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">experimental_data_for_UBA_2019</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">2</span><span class="op">]</span>, <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="va">x</span><span class="op">$</span><span class="va">data</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">d_1_2</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Soil"</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f_1_2_tc</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"DFOP-SFO-SFO"</span> <span class="op">=</span> <span class="va">dfop_sfo_sfo</span><span class="op">)</span>, <span class="va">d_1_2</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_1_2_tc</span>, resplot <span class="op">=</span> <span class="st">"errmod"</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="experimental_data_for_UBA-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/f_time_norm_focus.html b/docs/dev/reference/f_time_norm_focus.html new file mode 100644 index 00000000..f59f5eb2 --- /dev/null +++ b/docs/dev/reference/f_time_norm_focus.html @@ -0,0 +1,203 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Normalisation factors for aerobic soil degradation according to FOCUS guidance — f_time_norm_focus • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Normalisation factors for aerobic soil degradation according to FOCUS guidance — f_time_norm_focus"><meta name="description" content="Time step normalisation factors for aerobic soil degradation as described +in Appendix 8 to the FOCUS kinetics guidance (FOCUS 2014, p. 369)."><meta property="og:description" content="Time step normalisation factors for aerobic soil degradation as described +in Appendix 8 to the FOCUS kinetics guidance (FOCUS 2014, p. 369)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Normalisation factors for aerobic soil degradation according to FOCUS guidance</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/f_time_norm_focus.R" class="external-link"><code>R/f_time_norm_focus.R</code></a></small> + <div class="d-none name"><code>f_time_norm_focus.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Time step normalisation factors for aerobic soil degradation as described +in Appendix 8 to the FOCUS kinetics guidance (FOCUS 2014, p. 369).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">f_time_norm_focus</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'numeric'</span></span> +<span><span class="fu">f_time_norm_focus</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> moisture <span class="op">=</span> <span class="cn">NA</span>,</span> +<span> field_moisture <span class="op">=</span> <span class="cn">NA</span>,</span> +<span> temperature <span class="op">=</span> <span class="va">object</span>,</span> +<span> Q10 <span class="op">=</span> <span class="fl">2.58</span>,</span> +<span> walker <span class="op">=</span> <span class="fl">0.7</span>,</span> +<span> f_na <span class="op">=</span> <span class="cn">NA</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mkindsg'</span></span> +<span><span class="fu">f_time_norm_focus</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> study_moisture_ref_source <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"auto"</span>, <span class="st">"meta"</span>, <span class="st">"focus"</span><span class="op">)</span>,</span> +<span> Q10 <span class="op">=</span> <span class="fl">2.58</span>,</span> +<span> walker <span class="op">=</span> <span class="fl">0.7</span>,</span> +<span> f_na <span class="op">=</span> <span class="cn">NA</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An object containing information used for the calculations</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Currently not used</p></dd> + + +<dt id="arg-moisture">moisture<a class="anchor" aria-label="anchor" href="#arg-moisture"></a></dt> +<dd><p>Numeric vector of moisture contents in \% w/w</p></dd> + + +<dt id="arg-field-moisture">field_moisture<a class="anchor" aria-label="anchor" href="#arg-field-moisture"></a></dt> +<dd><p>Numeric vector of moisture contents at field capacity +(pF2) in \% w/w</p></dd> + + +<dt id="arg-temperature">temperature<a class="anchor" aria-label="anchor" href="#arg-temperature"></a></dt> +<dd><p>Numeric vector of temperatures in °C</p></dd> + + +<dt id="arg-q-">Q10<a class="anchor" aria-label="anchor" href="#arg-q-"></a></dt> +<dd><p>The Q10 value used for temperature normalisation</p></dd> + + +<dt id="arg-walker">walker<a class="anchor" aria-label="anchor" href="#arg-walker"></a></dt> +<dd><p>The Walker exponent used for moisture normalisation</p></dd> + + +<dt id="arg-f-na">f_na<a class="anchor" aria-label="anchor" href="#arg-f-na"></a></dt> +<dd><p>The factor to use for NA values. If set to NA, only factors +for complete cases will be returned.</p></dd> + + +<dt id="arg-study-moisture-ref-source">study_moisture_ref_source<a class="anchor" aria-label="anchor" href="#arg-study-moisture-ref-source"></a></dt> +<dd><p>Source for the reference value +used to calculate the study moisture. If 'auto', preference is given +to a reference moisture given in the meta information, otherwise +the focus soil moisture for the soil class is used</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a> +FOCUS (2014) “Generic guidance for Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +Version 1.1, 18 December 2014 +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><a href="focus_soil_moisture.html">focus_soil_moisture</a></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu">f_time_norm_focus</span><span class="op">(</span><span class="fl">25</span>, <span class="fl">20</span>, <span class="fl">25</span><span class="op">)</span> <span class="co"># 1.37, compare FOCUS 2014 p. 184</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 1.373956</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">D24_2014</span><span class="op">$</span><span class="va">meta</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> study usda_soil_type study_moisture_ref_type</span> +<span class="r-out co"><span class="r-pr">#></span> Mississippi Cohen 1991 Silt loam <NA></span> +<span class="r-out co"><span class="r-pr">#></span> Fayette Liu and Adelfinskaya 2011 Silt loam pF1</span> +<span class="r-out co"><span class="r-pr">#></span> RefSol 03-G Liu and Adelfinskaya 2011 Loam pF1</span> +<span class="r-out co"><span class="r-pr">#></span> Site E1 Liu and Adelfinskaya 2011 Loam pF1</span> +<span class="r-out co"><span class="r-pr">#></span> Site I2 Liu and Adelfinskaya 2011 Loamy sand pF1</span> +<span class="r-out co"><span class="r-pr">#></span> rel_moisture temperature</span> +<span class="r-out co"><span class="r-pr">#></span> Mississippi NA 25</span> +<span class="r-out co"><span class="r-pr">#></span> Fayette 0.5 20</span> +<span class="r-out co"><span class="r-pr">#></span> RefSol 03-G 0.5 20</span> +<span class="r-out co"><span class="r-pr">#></span> Site E1 0.5 20</span> +<span class="r-out co"><span class="r-pr">#></span> Site I2 0.5 20</span> +<span class="r-in"><span><span class="co"># No moisture normalisation in the first dataset, so we use f_na = 1 to get</span></span></span> +<span class="r-in"><span><span class="co"># temperature only normalisation as in the EU evaluation</span></span></span> +<span class="r-in"><span><span class="fu">f_time_norm_focus</span><span class="op">(</span><span class="va">D24_2014</span>, study_moisture_ref_source <span class="op">=</span> <span class="st">"focus"</span>, f_na <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> $f_time_norm was (re)set to normalised values</span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/f_time_norm_focus.mkindsg.html b/docs/dev/reference/f_time_norm_focus.mkindsg.html new file mode 100644 index 00000000..9a442194 --- /dev/null +++ b/docs/dev/reference/f_time_norm_focus.mkindsg.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html"> + </head> +</html> + diff --git a/docs/dev/reference/f_time_norm_focus.numeric.html b/docs/dev/reference/f_time_norm_focus.numeric.html new file mode 100644 index 00000000..9a442194 --- /dev/null +++ b/docs/dev/reference/f_time_norm_focus.numeric.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html"> + </head> +</html> + diff --git a/docs/dev/reference/focus_soil_moisture.html b/docs/dev/reference/focus_soil_moisture.html new file mode 100644 index 00000000..8feadc34 --- /dev/null +++ b/docs/dev/reference/focus_soil_moisture.html @@ -0,0 +1,123 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar — focus_soil_moisture • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar — focus_soil_moisture"><meta name="description" content="The value were transcribed from p. 36. The table assumes field capacity +corresponds to pF2, MWHC to pF 1 and 1/3 bar to pF 2.5."><meta property="og:description" content="The value were transcribed from p. 36. The table assumes field capacity +corresponds to pF2, MWHC to pF 1 and 1/3 bar to pF 2.5."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/focus_soil_moisture.R" class="external-link"><code>R/focus_soil_moisture.R</code></a></small> + <div class="d-none name"><code>focus_soil_moisture.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The value were transcribed from p. 36. The table assumes field capacity +corresponds to pF2, MWHC to pF 1 and 1/3 bar to pF 2.5.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">focus_soil_moisture</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A matrix with upper case USDA soil classes as row names, and water tension +('pF1', 'pF2', 'pF 2.5') as column names</p> + </div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>Anonymous (2014) Generic Guidance for Tier 1 FOCUS Ground Water Assessment +Version 2.2, May 2014 <a href="https://esdac.jrc.ec.europa.eu/projects/ground-water" class="external-link">https://esdac.jrc.ec.europa.eu/projects/ground-water</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">focus_soil_moisture</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> pF1 pF2 pF2.5</span> +<span class="r-out co"><span class="r-pr">#></span> Sand 24 12 7</span> +<span class="r-out co"><span class="r-pr">#></span> Loamy sand 24 14 9</span> +<span class="r-out co"><span class="r-pr">#></span> Sandy loam 27 19 15</span> +<span class="r-out co"><span class="r-pr">#></span> Sandy clay loam 28 22 18</span> +<span class="r-out co"><span class="r-pr">#></span> Clay loam 32 28 25</span> +<span class="r-out co"><span class="r-pr">#></span> Loam 31 25 21</span> +<span class="r-out co"><span class="r-pr">#></span> Silt loam 32 26 21</span> +<span class="r-out co"><span class="r-pr">#></span> Silty clay loam 34 30 27</span> +<span class="r-out co"><span class="r-pr">#></span> Silt 31 27 21</span> +<span class="r-out co"><span class="r-pr">#></span> Sandy clay 41 35 31</span> +<span class="r-out co"><span class="r-pr">#></span> Silty clay 44 40 36</span> +<span class="r-out co"><span class="r-pr">#></span> Clay 53 48 43</span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/get_deg_func.html b/docs/dev/reference/get_deg_func.html new file mode 100644 index 00000000..d3f3dc10 --- /dev/null +++ b/docs/dev/reference/get_deg_func.html @@ -0,0 +1,97 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Retrieve a degradation function from the mmkin namespace — get_deg_func • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Retrieve a degradation function from the mmkin namespace — get_deg_func"><meta name="description" content="Retrieve a degradation function from the mmkin namespace"><meta property="og:description" content="Retrieve a degradation function from the mmkin namespace"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Retrieve a degradation function from the mmkin namespace</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/nlme.mmkin.R" class="external-link"><code>R/nlme.mmkin.R</code></a></small> + <div class="d-none name"><code>get_deg_func.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Retrieve a degradation function from the mmkin namespace</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">get_deg_func</span><span class="op">(</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A function that was likely previously assigned from within +nlme.mmkin</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/hierarchical_kinetics.html b/docs/dev/reference/hierarchical_kinetics.html new file mode 100644 index 00000000..1c225992 --- /dev/null +++ b/docs/dev/reference/hierarchical_kinetics.html @@ -0,0 +1,158 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Hierarchical kinetics template — hierarchical_kinetics • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Hierarchical kinetics template — hierarchical_kinetics"><meta name="description" content='R markdown format for setting up hierarchical kinetics based on a template +provided with the mkin package. This format is based on rmarkdown::pdf_document. +Chunk options are adapted. Echoing R code from code chunks and caching are +turned on per default. character for prepending output from code chunks is +set to the empty string, code tidying is off, figure alignment defaults to +centering, and positioning of figures is set to "H", which means that +figures will not move around in the document, but stay where the user +includes them.'><meta property="og:description" content='R markdown format for setting up hierarchical kinetics based on a template +provided with the mkin package. This format is based on rmarkdown::pdf_document. +Chunk options are adapted. Echoing R code from code chunks and caching are +turned on per default. character for prepending output from code chunks is +set to the empty string, code tidying is off, figure alignment defaults to +centering, and positioning of figures is set to "H", which means that +figures will not move around in the document, but stay where the user +includes them.'><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Hierarchical kinetics template</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/hierarchical_kinetics.R" class="external-link"><code>R/hierarchical_kinetics.R</code></a></small> + <div class="d-none name"><code>hierarchical_kinetics.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>R markdown format for setting up hierarchical kinetics based on a template +provided with the mkin package. This format is based on <a href="https://pkgs.rstudio.com/rmarkdown/reference/pdf_document.html" class="external-link">rmarkdown::pdf_document</a>. +Chunk options are adapted. Echoing R code from code chunks and caching are +turned on per default. character for prepending output from code chunks is +set to the empty string, code tidying is off, figure alignment defaults to +centering, and positioning of figures is set to "H", which means that +figures will not move around in the document, but stay where the user +includes them.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">hierarchical_kinetics</span><span class="op">(</span><span class="va">...</span>, keep_tex <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Arguments to <code><a href="https://pkgs.rstudio.com/rmarkdown/reference/pdf_document.html" class="external-link">rmarkdown::pdf_document</a></code></p></dd> + + +<dt id="arg-keep-tex">keep_tex<a class="anchor" aria-label="anchor" href="#arg-keep-tex"></a></dt> +<dd><p>Keep the intermediate tex file used in the conversion to PDF. +Note that this argument does not control whether to keep the auxiliary +files (e.g., <code class="file">.aux</code>) generated by LaTeX when compiling <code class="file">.tex</code> to +<code class="file">.pdf</code>. To keep these files, you may set <code>options(tinytex.clean = +FALSE)</code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>R Markdown output format to pass to +<code><a href="https://pkgs.rstudio.com/rmarkdown/reference/render.html" class="external-link">render</a></code></p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>The latter feature (positioning the figures with "H") depends on the LaTeX +package 'float'. In addition, the LaTeX package 'listing' is used in the +template for showing model fit summaries in the Appendix. This means that +the LaTeX packages 'float' and 'listing' need to be installed in the TeX +distribution used.</p> +<p>On Windows, the easiest way to achieve this (if no TeX distribution +is present before) is to install the 'tinytex' R package, to run +'tinytex::install_tinytex()' to get the basic tiny Tex distribution, +and then to run 'tinytex::tlmgr_install(c("float", "listing"))'.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://github.com/rstudio/rmarkdown" class="external-link">rmarkdown</a></span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># The following is now commented out after the relase of v1.2.3 for the generation</span></span></span> +<span class="r-in"><span><span class="co"># of online docs, as the command creates a directory and opens an editor</span></span></span> +<span class="r-in"><span><span class="co">#draft("example_analysis.rmd", template = "hierarchical_kinetics", package = "mkin")</span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/html_listing.html b/docs/dev/reference/html_listing.html new file mode 100644 index 00000000..779fff4c --- /dev/null +++ b/docs/dev/reference/html_listing.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/summary_listing.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/summary_listing.html"> + </head> +</html> + diff --git a/docs/dev/reference/illparms.html b/docs/dev/reference/illparms.html new file mode 100644 index 00000000..0b5f6661 --- /dev/null +++ b/docs/dev/reference/illparms.html @@ -0,0 +1,211 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Method to get the names of ill-defined parameters — illparms • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Method to get the names of ill-defined parameters — illparms"><meta name="description" content="The method for generalised nonlinear regression fits as obtained +with mkinfit and mmkin checks if the degradation parameters +pass the Wald test (in degradation kinetics often simply called t-test) for +significant difference from zero. For this test, the parameterisation +without parameter transformations is used."><meta property="og:description" content="The method for generalised nonlinear regression fits as obtained +with mkinfit and mmkin checks if the degradation parameters +pass the Wald test (in degradation kinetics often simply called t-test) for +significant difference from zero. For this test, the parameterisation +without parameter transformations is used."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Method to get the names of ill-defined parameters</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/illparms.R" class="external-link"><code>R/illparms.R</code></a></small> + <div class="d-none name"><code>illparms.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The method for generalised nonlinear regression fits as obtained +with <a href="mkinfit.html">mkinfit</a> and <a href="mmkin.html">mmkin</a> checks if the degradation parameters +pass the Wald test (in degradation kinetics often simply called t-test) for +significant difference from zero. For this test, the parameterisation +without parameter transformations is used.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">illparms</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu">illparms</span><span class="op">(</span><span class="va">object</span>, conf.level <span class="op">=</span> <span class="fl">0.95</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'illparms.mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu">illparms</span><span class="op">(</span><span class="va">object</span>, conf.level <span class="op">=</span> <span class="fl">0.95</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'illparms.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'saem.mmkin'</span></span> +<span><span class="fu">illparms</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> conf.level <span class="op">=</span> <span class="fl">0.95</span>,</span> +<span> random <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> errmod <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> slopes <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'illparms.saem.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mhmkin'</span></span> +<span><span class="fu">illparms</span><span class="op">(</span><span class="va">object</span>, conf.level <span class="op">=</span> <span class="fl">0.95</span>, random <span class="op">=</span> <span class="cn">TRUE</span>, errmod <span class="op">=</span> <span class="cn">TRUE</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'illparms.mhmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>The object to investigate</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>For potential future extensions</p></dd> + + +<dt id="arg-conf-level">conf.level<a class="anchor" aria-label="anchor" href="#arg-conf-level"></a></dt> +<dd><p>The confidence level for checking p values</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>The object to be printed</p></dd> + + +<dt id="arg-random">random<a class="anchor" aria-label="anchor" href="#arg-random"></a></dt> +<dd><p>For hierarchical fits, should random effects be tested?</p></dd> + + +<dt id="arg-errmod">errmod<a class="anchor" aria-label="anchor" href="#arg-errmod"></a></dt> +<dd><p>For hierarchical fits, should error model parameters be +tested?</p></dd> + + +<dt id="arg-slopes">slopes<a class="anchor" aria-label="anchor" href="#arg-slopes"></a></dt> +<dd><p>For hierarchical <a href="saem.html">saem</a> fits using saemix as backend, +should slope parameters in the covariate model(starting with 'beta_') be +tested?</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>For <a href="mkinfit.html">mkinfit</a> or <a href="saem.html">saem</a> objects, a character vector of parameter +names. For <a href="mmkin.html">mmkin</a> or <a href="mhmkin.html">mhmkin</a> objects, a matrix like object of class +'illparms.mmkin' or 'illparms.mhmkin'.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>The method for hierarchical model fits, also known as nonlinear +mixed-effects model fits as obtained with <a href="saem.html">saem</a> and <a href="mhmkin.html">mhmkin</a> +checks if any of the confidence intervals for the random +effects expressed as standard deviations include zero, and if +the confidence intervals for the error model parameters include +zero.</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>All return objects have printing methods. For the single fits, printing +does not output anything in the case no ill-defined parameters are found.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">FOCUS_2006_A</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Optimisation did not converge:</span> +<span class="r-wrn co"><span class="r-pr">#></span> false convergence (8)</span> +<span class="r-in"><span><span class="fu">illparms</span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] "parent_0" "alpha" "beta" "sigma" </span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">fits</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"FOCUS A"</span> <span class="op">=</span> <span class="va">FOCUS_2006_A</span>,</span></span> +<span class="r-in"><span> <span class="st">"FOCUS C"</span> <span class="op">=</span> <span class="va">FOCUS_2006_C</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">illparms</span><span class="op">(</span><span class="va">fits</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model FOCUS A FOCUS C</span> +<span class="r-out co"><span class="r-pr">#></span> SFO </span> +<span class="r-out co"><span class="r-pr">#></span> FOMC parent_0, alpha, beta, sigma </span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/illparms.mhmkin.html b/docs/dev/reference/illparms.mhmkin.html new file mode 100644 index 00000000..efbcc181 --- /dev/null +++ b/docs/dev/reference/illparms.mhmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/illparms.mkinfit.html b/docs/dev/reference/illparms.mkinfit.html new file mode 100644 index 00000000..efbcc181 --- /dev/null +++ b/docs/dev/reference/illparms.mkinfit.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/illparms.mmkin.html b/docs/dev/reference/illparms.mmkin.html new file mode 100644 index 00000000..efbcc181 --- /dev/null +++ b/docs/dev/reference/illparms.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/illparms.saem.mmkin.html b/docs/dev/reference/illparms.saem.mmkin.html new file mode 100644 index 00000000..efbcc181 --- /dev/null +++ b/docs/dev/reference/illparms.saem.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/ilr.html b/docs/dev/reference/ilr.html new file mode 100644 index 00000000..c6efae2d --- /dev/null +++ b/docs/dev/reference/ilr.html @@ -0,0 +1,163 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Function to perform isometric log-ratio transformation — ilr • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Function to perform isometric log-ratio transformation — ilr"><meta name="description" content="This implementation is a special case of the class of isometric log-ratio +transformations."><meta property="og:description" content="This implementation is a special case of the class of isometric log-ratio +transformations."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Function to perform isometric log-ratio transformation</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/ilr.R" class="external-link"><code>R/ilr.R</code></a></small> + <div class="d-none name"><code>ilr.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This implementation is a special case of the class of isometric log-ratio +transformations.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">ilr</span><span class="op">(</span><span class="va">x</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">invilr</span><span class="op">(</span><span class="va">x</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>A numeric vector. Naturally, the forward transformation is only +sensible for vectors with all elements being greater than zero.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The result of the forward or backward transformation. The returned +components always sum to 1 for the case of the inverse log-ratio +transformation.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Peter Filzmoser, Karel Hron (2008) Outlier Detection for +Compositional Data Using Robust Methods. Math Geosci 40 233-248</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Another implementation can be found in R package +<code>robCompositions</code>.</p></div> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>René Lehmann and Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Order matters</span></span></span> +<span class="r-in"><span><span class="fu">ilr</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.1</span>, <span class="fl">1</span>, <span class="fl">10</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] -1.628174 -2.820079</span> +<span class="r-in"><span><span class="fu">ilr</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">10</span>, <span class="fl">1</span>, <span class="fl">0.1</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 1.628174 2.820079</span> +<span class="r-in"><span><span class="co"># Equal entries give ilr transformations with zeros as elements</span></span></span> +<span class="r-in"><span><span class="fu">ilr</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fl">3</span>, <span class="fl">3</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0 0</span> +<span class="r-in"><span><span class="co"># Almost equal entries give small numbers</span></span></span> +<span class="r-in"><span><span class="fu">ilr</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.3</span>, <span class="fl">0.4</span>, <span class="fl">0.3</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] -0.2034219 0.1174457</span> +<span class="r-in"><span><span class="co"># Only the ratio between the numbers counts, not their sum</span></span></span> +<span class="r-in"><span><span class="fu">invilr</span><span class="op">(</span><span class="fu">ilr</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.7</span>, <span class="fl">0.29</span>, <span class="fl">0.01</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.70 0.29 0.01</span> +<span class="r-in"><span><span class="fu">invilr</span><span class="op">(</span><span class="fu">ilr</span><span class="op">(</span><span class="fl">2.1</span> <span class="op">*</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.7</span>, <span class="fl">0.29</span>, <span class="fl">0.01</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.70 0.29 0.01</span> +<span class="r-in"><span><span class="co"># Inverse transformation of larger numbers gives unequal elements</span></span></span> +<span class="r-in"><span><span class="fu">invilr</span><span class="op">(</span><span class="op">-</span><span class="fl">10</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 7.213536e-07 9.999993e-01</span> +<span class="r-in"><span><span class="fu">invilr</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="op">-</span><span class="fl">10</span>, <span class="fl">0</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 7.207415e-07 9.991507e-01 8.486044e-04</span> +<span class="r-in"><span><span class="co"># The sum of the elements of the inverse ilr is 1</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/sum.html" class="external-link">sum</a></span><span class="op">(</span><span class="fu">invilr</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="op">-</span><span class="fl">10</span>, <span class="fl">0</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 1</span> +<span class="r-in"><span><span class="co"># This is why we do not need all elements of the inverse transformation to go back:</span></span></span> +<span class="r-in"><span><span class="va">a</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.1</span>, <span class="fl">0.3</span>, <span class="fl">0.5</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">b</span> <span class="op"><-</span> <span class="fu">invilr</span><span class="op">(</span><span class="va">a</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">b</span><span class="op">)</span> <span class="co"># Four elements</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 4</span> +<span class="r-in"><span><span class="fu">ilr</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="va">b</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">3</span><span class="op">]</span>, <span class="fl">1</span> <span class="op">-</span> <span class="fu"><a href="https://rdrr.io/r/base/sum.html" class="external-link">sum</a></span><span class="op">(</span><span class="va">b</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">3</span><span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">)</span> <span class="co"># Gives c(0.1, 0.3, 0.5)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.1 0.3 0.5</span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/index.html b/docs/dev/reference/index.html new file mode 100644 index 00000000..476b8804 --- /dev/null +++ b/docs/dev/reference/index.html @@ -0,0 +1,735 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Package index • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Package index"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-index"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Package index</h1> + </div> + + <div class="section level2"> + <h2 id="main-functions">Main functions<a class="anchor" aria-label="anchor" href="#main-functions"></a></h2> + + <div class="section-desc"><p>Essential functionality</p></div> + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="mkinmod.html">mkinmod()</a></code> <code><a href="mkinmod.html">print(<i><mkinmod></i>)</a></code> <code><a href="mkinmod.html">mkinsub()</a></code> + + </dt> + <dd>Function to set up a kinetic model with one or more state variables</dd> + </dl><dl><dt> + + <code><a href="mkinfit.html">mkinfit()</a></code> + + </dt> + <dd>Fit a kinetic model to data with one or more state variables</dd> + </dl><dl><dt> + + <code><a href="mmkin.html">mmkin()</a></code> <code><a href="mmkin.html">print(<i><mmkin></i>)</a></code> + + </dt> + <dd>Fit one or more kinetic models with one or more state variables to one or more datasets</dd> + </dl><dl><dt> + + <code><a href="mhmkin.html">mhmkin()</a></code> <code><a href="mhmkin.html">`[`(<i><mhmkin></i>)</a></code> <code><a href="mhmkin.html">print(<i><mhmkin></i>)</a></code> + + </dt> + <dd>Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models</dd> + </dl></div><div class="section level2"> + <h2 id="generics">Generics<a class="anchor" aria-label="anchor" href="#generics"></a></h2> + + <div class="section-desc"><p>Generic functions introduced by the package</p></div> + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="parms.html">parms()</a></code> + + </dt> + <dd>Extract model parameters</dd> + </dl><dl><dt> + + <code><a href="status.html">status()</a></code> <code><a href="status.html">print(<i><status.mmkin></i>)</a></code> <code><a href="status.html">print(<i><status.mhmkin></i>)</a></code> + + </dt> + <dd>Method to get status information for fit array objects</dd> + </dl><dl><dt> + + <code><a href="illparms.html">illparms()</a></code> <code><a href="illparms.html">print(<i><illparms.mkinfit></i>)</a></code> <code><a href="illparms.html">print(<i><illparms.mmkin></i>)</a></code> <code><a href="illparms.html">print(<i><illparms.saem.mmkin></i>)</a></code> <code><a href="illparms.html">print(<i><illparms.mhmkin></i>)</a></code> + + </dt> + <dd>Method to get the names of ill-defined parameters</dd> + </dl><dl><dt> + + <code><a href="endpoints.html">endpoints()</a></code> + + </dt> + <dd>Function to calculate endpoints for further use from kinetic models fitted with mkinfit</dd> + </dl><dl><dt> + + <code><a href="aw.html">aw()</a></code> + + </dt> + <dd>Calculate Akaike weights for model averaging</dd> + </dl></div><div class="section level2"> + <h2 id="show-results">Show results<a class="anchor" aria-label="anchor" href="#show-results"></a></h2> + + <div class="section-desc"><p>Functions working with mkinfit objects</p></div> + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="plot.mkinfit.html">plot(<i><mkinfit></i>)</a></code> <code><a href="plot.mkinfit.html">plot_sep()</a></code> <code><a href="plot.mkinfit.html">plot_res()</a></code> <code><a href="plot.mkinfit.html">plot_err()</a></code> + + </dt> + <dd>Plot the observed data and the fitted model of an mkinfit object</dd> + </dl><dl><dt> + + <code><a href="summary.mkinfit.html">summary(<i><mkinfit></i>)</a></code> <code><a href="summary.mkinfit.html">print(<i><summary.mkinfit></i>)</a></code> + + </dt> + <dd>Summary method for class "mkinfit"</dd> + </dl><dl><dt> + + <code><a href="confint.mkinfit.html">confint(<i><mkinfit></i>)</a></code> + + </dt> + <dd>Confidence intervals for parameters of mkinfit objects</dd> + </dl><dl><dt> + + <code><a href="update.mkinfit.html">update(<i><mkinfit></i>)</a></code> + + </dt> + <dd>Update an mkinfit model with different arguments</dd> + </dl><dl><dt> + + <code><a href="lrtest.mkinfit.html">lrtest(<i><mkinfit></i>)</a></code> <code><a href="lrtest.mkinfit.html">lrtest(<i><mmkin></i>)</a></code> + + </dt> + <dd>Likelihood ratio test for mkinfit models</dd> + </dl><dl><dt> + + <code><a href="loftest.html">loftest()</a></code> + + </dt> + <dd>Lack-of-fit test for models fitted to data with replicates</dd> + </dl><dl><dt> + + <code><a href="mkinerrmin.html">mkinerrmin()</a></code> + + </dt> + <dd>Calculate the minimum error to assume in order to pass the variance test</dd> + </dl><dl><dt> + + <code><a href="CAKE_export.html">CAKE_export()</a></code> + + </dt> + <dd>Export a list of datasets format to a CAKE study file</dd> + </dl></div><div class="section level2"> + <h2 id="work-with-mmkin-objects">Work with mmkin objects<a class="anchor" aria-label="anchor" href="#work-with-mmkin-objects"></a></h2> + + <div class="section-desc"><p>Functions working with aggregated results</p></div> + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="Extract.mmkin.html">`[`(<i><mmkin></i>)</a></code> + + </dt> + <dd>Subsetting method for mmkin objects</dd> + </dl><dl><dt> + + <code><a href="plot.mmkin.html">plot(<i><mmkin></i>)</a></code> + + </dt> + <dd>Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object</dd> + </dl><dl><dt> + + <code><a href="AIC.mmkin.html">AIC(<i><mmkin></i>)</a></code> <code><a href="AIC.mmkin.html">BIC(<i><mmkin></i>)</a></code> + + </dt> + <dd>Calculate the AIC for a column of an mmkin object</dd> + </dl><dl><dt> + + <code><a href="summary.mmkin.html">summary(<i><mmkin></i>)</a></code> <code><a href="summary.mmkin.html">print(<i><summary.mmkin></i>)</a></code> + + </dt> + <dd>Summary method for class "mmkin"</dd> + </dl></div><div class="section level2"> + <h2 id="mixed-models">Mixed models<a class="anchor" aria-label="anchor" href="#mixed-models"></a></h2> + + <div class="section-desc"><p>Create and work with nonlinear hierarchical models</p></div> + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="hierarchical_kinetics.html">hierarchical_kinetics()</a></code> + + </dt> + <dd>Hierarchical kinetics template</dd> + </dl><dl><dt> + + <code><a href="read_spreadsheet.html">read_spreadsheet()</a></code> + + </dt> + <dd>Read datasets and relevant meta information from a spreadsheet file</dd> + </dl><dl><dt> + + <code><a href="nlme.mmkin.html">nlme(<i><mmkin></i>)</a></code> <code><a href="nlme.mmkin.html">print(<i><nlme.mmkin></i>)</a></code> <code><a href="nlme.mmkin.html">update(<i><nlme.mmkin></i>)</a></code> + + </dt> + <dd>Create an nlme model for an mmkin row object</dd> + </dl><dl><dt> + + <code><a href="saem.html">saem()</a></code> <code><a href="saem.html">print(<i><saem.mmkin></i>)</a></code> <code><a href="saem.html">saemix_model()</a></code> <code><a href="saem.html">saemix_data()</a></code> + + </dt> + <dd>Fit nonlinear mixed models with SAEM</dd> + </dl><dl><dt> + + <code><a href="mhmkin.html">mhmkin()</a></code> <code><a href="mhmkin.html">`[`(<i><mhmkin></i>)</a></code> <code><a href="mhmkin.html">print(<i><mhmkin></i>)</a></code> + + </dt> + <dd>Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models</dd> + </dl><dl><dt> + + <code><a href="plot.mixed.mmkin.html">plot(<i><mixed.mmkin></i>)</a></code> + + </dt> + <dd>Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object</dd> + </dl><dl><dt> + + <code><a href="summary.nlme.mmkin.html">summary(<i><nlme.mmkin></i>)</a></code> <code><a href="summary.nlme.mmkin.html">print(<i><summary.nlme.mmkin></i>)</a></code> + + </dt> + <dd>Summary method for class "nlme.mmkin"</dd> + </dl><dl><dt> + + <code><a href="summary.saem.mmkin.html">summary(<i><saem.mmkin></i>)</a></code> <code><a href="summary.saem.mmkin.html">print(<i><summary.saem.mmkin></i>)</a></code> + + </dt> + <dd>Summary method for class "saem.mmkin"</dd> + </dl><dl><dt> + + <code><a href="anova.saem.mmkin.html">anova(<i><saem.mmkin></i>)</a></code> + + </dt> + <dd>Anova method for saem.mmkin objects</dd> + </dl><dl><dt> + + <code><a href="logLik.saem.mmkin.html">logLik(<i><saem.mmkin></i>)</a></code> + + </dt> + <dd>logLik method for saem.mmkin objects</dd> + </dl><dl><dt> + + <code><a href="nlme.html">nlme_function()</a></code> <code><a href="nlme.html">nlme_data()</a></code> + + </dt> + <dd>Helper functions to create nlme models from mmkin row objects</dd> + </dl><dl><dt> + + <code><a href="get_deg_func.html">get_deg_func()</a></code> + + </dt> + <dd>Retrieve a degradation function from the mmkin namespace</dd> + </dl><dl><dt> + + <code><a href="mixed.html">mixed()</a></code> <code><a href="mixed.html">print(<i><mixed.mmkin></i>)</a></code> + + </dt> + <dd>Create a mixed effects model from an mmkin row object</dd> + </dl><dl><dt> + + <code><a href="reexports.html">reexports</a></code> <code><a href="reexports.html">intervals</a></code> <code><a href="reexports.html">lrtest</a></code> <code><a href="reexports.html">nlme</a></code> + + </dt> + <dd>Objects exported from other packages</dd> + </dl><dl><dt> + + <code><a href="intervals.saem.mmkin.html">intervals(<i><saem.mmkin></i>)</a></code> + + </dt> + <dd>Confidence intervals for parameters in saem.mmkin objects</dd> + </dl><dl><dt> + + <code><a href="multistart.html">multistart()</a></code> <code><a href="multistart.html">print(<i><multistart></i>)</a></code> <code><a href="multistart.html">best()</a></code> <code><a href="multistart.html">which.best()</a></code> + + </dt> + <dd>Perform a hierarchical model fit with multiple starting values</dd> + </dl><dl><dt> + + <code><a href="llhist.html">llhist()</a></code> + + </dt> + <dd>Plot the distribution of log likelihoods from multistart objects</dd> + </dl><dl><dt> + + <code><a href="parplot.html">parplot()</a></code> + + </dt> + <dd>Plot parameter variability of multistart objects</dd> + </dl><dl><dt> + + <code><a href="check_failed.html">check_failed()</a></code> + + </dt> + <dd>Check if fit within an mhmkin object failed</dd> + </dl></div><div class="section level2"> + <h2 id="datasets-and-known-results">Datasets and known results<a class="anchor" aria-label="anchor" href="#datasets-and-known-results"></a></h2> + + + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="ds_mixed.html">ds_mixed</a></code> <code><a href="ds_mixed.html">ds_sfo</a></code> <code><a href="ds_mixed.html">ds_fomc</a></code> <code><a href="ds_mixed.html">ds_dfop</a></code> <code><a href="ds_mixed.html">ds_hs</a></code> <code><a href="ds_mixed.html">ds_dfop_sfo</a></code> + + </dt> + <dd>Synthetic data for hierarchical kinetic degradation models</dd> + </dl><dl><dt> + + <code><a href="D24_2014.html">D24_2014</a></code> + + </dt> + <dd>Aerobic soil degradation data on 2,4-D from the EU assessment in 2014</dd> + </dl><dl><dt> + + <code><a href="dimethenamid_2018.html">dimethenamid_2018</a></code> + + </dt> + <dd>Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018</dd> + </dl><dl><dt> + + <code><a href="FOCUS_2006_datasets.html">FOCUS_2006_A</a></code> <code><a href="FOCUS_2006_datasets.html">FOCUS_2006_B</a></code> <code><a href="FOCUS_2006_datasets.html">FOCUS_2006_C</a></code> <code><a href="FOCUS_2006_datasets.html">FOCUS_2006_D</a></code> <code><a href="FOCUS_2006_datasets.html">FOCUS_2006_E</a></code> <code><a href="FOCUS_2006_datasets.html">FOCUS_2006_F</a></code> + + </dt> + <dd>Datasets A to F from the FOCUS Kinetics report from 2006</dd> + </dl><dl><dt> + + <code><a href="FOCUS_2006_SFO_ref_A_to_F.html">FOCUS_2006_SFO_ref_A_to_F</a></code> + + </dt> + <dd>Results of fitting the SFO model to Datasets A to F of FOCUS (2006)</dd> + </dl><dl><dt> + + <code><a href="FOCUS_2006_FOMC_ref_A_to_F.html">FOCUS_2006_FOMC_ref_A_to_F</a></code> + + </dt> + <dd>Results of fitting the FOMC model to Datasets A to F of FOCUS (2006)</dd> + </dl><dl><dt> + + <code><a href="FOCUS_2006_HS_ref_A_to_F.html">FOCUS_2006_HS_ref_A_to_F</a></code> + + </dt> + <dd>Results of fitting the HS model to Datasets A to F of FOCUS (2006)</dd> + </dl><dl><dt> + + <code><a href="FOCUS_2006_DFOP_ref_A_to_B.html">FOCUS_2006_DFOP_ref_A_to_B</a></code> + + </dt> + <dd>Results of fitting the DFOP model to Datasets A to B of FOCUS (2006)</dd> + </dl><dl><dt> + + <code><a href="NAFTA_SOP_2015.html">NAFTA_SOP_Appendix_B</a></code> <code><a href="NAFTA_SOP_2015.html">NAFTA_SOP_Appendix_D</a></code> + + </dt> + <dd>Example datasets from the NAFTA SOP published 2015</dd> + </dl><dl><dt> + + <code><a href="NAFTA_SOP_Attachment.html">NAFTA_SOP_Attachment</a></code> + + </dt> + <dd>Example datasets from Attachment 1 to the NAFTA SOP published 2015</dd> + </dl><dl><dt> + + <code><a href="mccall81_245T.html">mccall81_245T</a></code> + + </dt> + <dd>Datasets on aerobic soil metabolism of 2,4,5-T in six soils</dd> + </dl><dl><dt> + + <code><a href="schaefer07_complex_case.html">schaefer07_complex_case</a></code> + + </dt> + <dd>Metabolism data set used for checking the software quality of KinGUI</dd> + </dl><dl><dt> + + <code><a href="synthetic_data_for_UBA_2014.html">synthetic_data_for_UBA_2014</a></code> + + </dt> + <dd>Synthetic datasets for one parent compound with two metabolites</dd> + </dl><dl><dt> + + <code><a href="experimental_data_for_UBA.html">experimental_data_for_UBA_2019</a></code> + + </dt> + <dd>Experimental datasets used for development and testing of error models</dd> + </dl><dl><dt> + + <code><a href="test_data_from_UBA_2014.html">test_data_from_UBA_2014</a></code> + + </dt> + <dd>Three experimental datasets from two water sediment systems and one soil</dd> + </dl><dl><dt> + + <code><a href="focus_soil_moisture.html">focus_soil_moisture</a></code> + + </dt> + <dd>FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar</dd> + </dl><dl><dt> + + <code><a href="mkinds.html">print(<i><mkinds></i>)</a></code> + + </dt> + <dd>A dataset class for mkin</dd> + </dl><dl><dt> + + <code><a href="mkindsg.html">print(<i><mkindsg></i>)</a></code> + + </dt> + <dd>A class for dataset groups for mkin</dd> + </dl></div><div class="section level2"> + <h2 id="nafta-guidance">NAFTA guidance<a class="anchor" aria-label="anchor" href="#nafta-guidance"></a></h2> + + + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="nafta.html">nafta()</a></code> <code><a href="nafta.html">print(<i><nafta></i>)</a></code> + + </dt> + <dd>Evaluate parent kinetics using the NAFTA guidance</dd> + </dl><dl><dt> + + <code><a href="plot.nafta.html">plot(<i><nafta></i>)</a></code> + + </dt> + <dd>Plot the results of the three models used in the NAFTA scheme.</dd> + </dl></div><div class="section level2"> + <h2 id="utility-functions">Utility functions<a class="anchor" aria-label="anchor" href="#utility-functions"></a></h2> + + + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="summary_listing.html">summary_listing()</a></code> <code><a href="summary_listing.html">tex_listing()</a></code> <code><a href="summary_listing.html">html_listing()</a></code> + + </dt> + <dd>Display the output of a summary function according to the output format</dd> + </dl><dl><dt> + + <code><a href="f_time_norm_focus.html">f_time_norm_focus()</a></code> + + </dt> + <dd>Normalisation factors for aerobic soil degradation according to FOCUS guidance</dd> + </dl><dl><dt> + + <code><a href="set_nd_nq.html">set_nd_nq()</a></code> <code><a href="set_nd_nq.html">set_nd_nq_focus()</a></code> + + </dt> + <dd>Set non-detects and unquantified values in residue series without replicates</dd> + </dl><dl><dt> + + <code><a href="max_twa_parent.html">max_twa_parent()</a></code> <code><a href="max_twa_parent.html">max_twa_sfo()</a></code> <code><a href="max_twa_parent.html">max_twa_fomc()</a></code> <code><a href="max_twa_parent.html">max_twa_dfop()</a></code> <code><a href="max_twa_parent.html">max_twa_hs()</a></code> + + </dt> + <dd>Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit</dd> + </dl><dl><dt> + + <code><a href="mkin_wide_to_long.html">mkin_wide_to_long()</a></code> + + </dt> + <dd>Convert a dataframe with observations over time into long format</dd> + </dl><dl><dt> + + <code><a href="mkin_long_to_wide.html">mkin_long_to_wide()</a></code> + + </dt> + <dd>Convert a dataframe from long to wide format</dd> + </dl></div><div class="section level2"> + <h2 id="helper-functions-mainly-used-internally">Helper functions mainly used internally<a class="anchor" aria-label="anchor" href="#helper-functions-mainly-used-internally"></a></h2> + + + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="mkinpredict.html">mkinpredict()</a></code> + + </dt> + <dd>Produce predictions from a kinetic model using specific parameters</dd> + </dl><dl><dt> + + <code><a href="transform_odeparms.html">transform_odeparms()</a></code> <code><a href="transform_odeparms.html">backtransform_odeparms()</a></code> + + </dt> + <dd>Functions to transform and backtransform kinetic parameters for fitting</dd> + </dl><dl><dt> + + <code><a href="ilr.html">ilr()</a></code> <code><a href="ilr.html">invilr()</a></code> + + </dt> + <dd>Function to perform isometric log-ratio transformation</dd> + </dl><dl><dt> + + <code><a href="logLik.mkinfit.html">logLik(<i><mkinfit></i>)</a></code> + + </dt> + <dd>Calculated the log-likelihood of a fitted mkinfit object</dd> + </dl><dl><dt> + + <code><a href="residuals.mkinfit.html">residuals(<i><mkinfit></i>)</a></code> + + </dt> + <dd>Extract residuals from an mkinfit model</dd> + </dl><dl><dt> + + <code><a href="nobs.mkinfit.html">nobs(<i><mkinfit></i>)</a></code> + + </dt> + <dd>Number of observations on which an mkinfit object was fitted</dd> + </dl><dl><dt> + + <code><a href="mkinresplot.html">mkinresplot()</a></code> + + </dt> + <dd>Function to plot residuals stored in an mkin object</dd> + </dl><dl><dt> + + <code><a href="mkinparplot.html">mkinparplot()</a></code> + + </dt> + <dd>Function to plot the confidence intervals obtained using mkinfit</dd> + </dl><dl><dt> + + <code><a href="mkinerrplot.html">mkinerrplot()</a></code> + + </dt> + <dd>Function to plot squared residuals and the error model for an mkin object</dd> + </dl><dl><dt> + + <code><a href="mean_degparms.html">mean_degparms()</a></code> + + </dt> + <dd>Calculate mean degradation parameters for an mmkin row object</dd> + </dl><dl><dt> + + <code><a href="create_deg_func.html">create_deg_func()</a></code> + + </dt> + <dd>Create degradation functions for known analytical solutions</dd> + </dl></div><div class="section level2"> + <h2 id="analytical-solutions">Analytical solutions<a class="anchor" aria-label="anchor" href="#analytical-solutions"></a></h2> + + <div class="section-desc"><p>Parent only model solutions</p></div> + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="SFO.solution.html">SFO.solution()</a></code> + + </dt> + <dd>Single First-Order kinetics</dd> + </dl><dl><dt> + + <code><a href="FOMC.solution.html">FOMC.solution()</a></code> + + </dt> + <dd>First-Order Multi-Compartment kinetics</dd> + </dl><dl><dt> + + <code><a href="DFOP.solution.html">DFOP.solution()</a></code> + + </dt> + <dd>Double First-Order in Parallel kinetics</dd> + </dl><dl><dt> + + <code><a href="SFORB.solution.html">SFORB.solution()</a></code> + + </dt> + <dd>Single First-Order Reversible Binding kinetics</dd> + </dl><dl><dt> + + <code><a href="HS.solution.html">HS.solution()</a></code> + + </dt> + <dd>Hockey-Stick kinetics</dd> + </dl><dl><dt> + + <code><a href="IORE.solution.html">IORE.solution()</a></code> + + </dt> + <dd>Indeterminate order rate equation kinetics</dd> + </dl><dl><dt> + + <code><a href="logistic.solution.html">logistic.solution()</a></code> + + </dt> + <dd>Logistic kinetics</dd> + </dl></div><div class="section level2"> + <h2 id="generate-synthetic-datasets">Generate synthetic datasets<a class="anchor" aria-label="anchor" href="#generate-synthetic-datasets"></a></h2> + + + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="add_err.html">add_err()</a></code> + + </dt> + <dd>Add normally distributed errors to simulated kinetic degradation data</dd> + </dl><dl><dt> + + <code><a href="sigma_twocomp.html">sigma_twocomp()</a></code> + + </dt> + <dd>Two-component error model</dd> + </dl></div><div class="section level2"> + <h2 id="deprecated-functions">Deprecated functions<a class="anchor" aria-label="anchor" href="#deprecated-functions"></a></h2> + + <div class="section-desc"><p>Functions that have been superseded</p></div> + + + </div><div class="section level2"> + + + + + <dl><dt> + + <code><a href="mkinplot.html">mkinplot()</a></code> + + </dt> + <dd>Plot the observed data and the fitted model of an mkinfit object</dd> + </dl></div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/intervals.html b/docs/dev/reference/intervals.html new file mode 100644 index 00000000..9cc267c0 --- /dev/null +++ b/docs/dev/reference/intervals.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/reexports.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/reexports.html"> + </head> +</html> + diff --git a/docs/dev/reference/intervals.saem.mmkin.html b/docs/dev/reference/intervals.saem.mmkin.html new file mode 100644 index 00000000..4e25aa77 --- /dev/null +++ b/docs/dev/reference/intervals.saem.mmkin.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Confidence intervals for parameters in saem.mmkin objects — intervals.saem.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Confidence intervals for parameters in saem.mmkin objects — intervals.saem.mmkin"><meta name="description" content="Confidence intervals for parameters in saem.mmkin objects"><meta property="og:description" content="Confidence intervals for parameters in saem.mmkin objects"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Confidence intervals for parameters in saem.mmkin objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/intervals.R" class="external-link"><code>R/intervals.R</code></a></small> + <div class="d-none name"><code>intervals.saem.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Confidence intervals for parameters in saem.mmkin objects</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'saem.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/nlme/man/intervals.html" class="external-link">intervals</a></span><span class="op">(</span><span class="va">object</span>, level <span class="op">=</span> <span class="fl">0.95</span>, backtransform <span class="op">=</span> <span class="cn">TRUE</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>The fitted saem.mmkin object</p></dd> + + +<dt id="arg-level">level<a class="anchor" aria-label="anchor" href="#arg-level"></a></dt> +<dd><p>The confidence level. Must be the default of 0.95 as this is what +is available in the saemix object</p></dd> + + +<dt id="arg-backtransform">backtransform<a class="anchor" aria-label="anchor" href="#arg-backtransform"></a></dt> +<dd><p>In case the model was fitted with mkin transformations, +should we backtransform the parameters where a one to one correlation +between transformed and backtransformed parameters exists?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>For compatibility with the generic method</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>An object with 'intervals.saem.mmkin' and 'intervals.lme' in the +class attribute</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/invilr.html b/docs/dev/reference/invilr.html new file mode 100644 index 00000000..32ca219f --- /dev/null +++ b/docs/dev/reference/invilr.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html"> + </head> +</html> + diff --git a/docs/dev/reference/llhist.html b/docs/dev/reference/llhist.html new file mode 100644 index 00000000..fca1f427 --- /dev/null +++ b/docs/dev/reference/llhist.html @@ -0,0 +1,123 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Plot the distribution of log likelihoods from multistart objects — llhist • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Plot the distribution of log likelihoods from multistart objects — llhist"><meta name="description" content="Produces a histogram of log-likelihoods. In addition, the likelihood of the +original fit is shown as a red vertical line."><meta property="og:description" content="Produces a histogram of log-likelihoods. In addition, the likelihood of the +original fit is shown as a red vertical line."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Plot the distribution of log likelihoods from multistart objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/llhist.R" class="external-link"><code>R/llhist.R</code></a></small> + <div class="d-none name"><code>llhist.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Produces a histogram of log-likelihoods. In addition, the likelihood of the +original fit is shown as a red vertical line.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">llhist</span><span class="op">(</span><span class="va">object</span>, breaks <span class="op">=</span> <span class="st">"Sturges"</span>, lpos <span class="op">=</span> <span class="st">"topleft"</span>, main <span class="op">=</span> <span class="st">""</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>The <a href="multistart.html">multistart</a> object</p></dd> + + +<dt id="arg-breaks">breaks<a class="anchor" aria-label="anchor" href="#arg-breaks"></a></dt> +<dd><p>Passed to <a href="https://rdrr.io/r/graphics/hist.html" class="external-link">hist</a></p></dd> + + +<dt id="arg-lpos">lpos<a class="anchor" aria-label="anchor" href="#arg-lpos"></a></dt> +<dd><p>Positioning of the legend.</p></dd> + + +<dt id="arg-main">main<a class="anchor" aria-label="anchor" href="#arg-main"></a></dt> +<dd><p>Title of the plot</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Passed to <a href="https://rdrr.io/r/graphics/hist.html" class="external-link">hist</a></p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><a href="multistart.html">multistart</a></p></div> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/loftest-1.png b/docs/dev/reference/loftest-1.png Binary files differnew file mode 100644 index 00000000..e6281140 --- /dev/null +++ b/docs/dev/reference/loftest-1.png diff --git a/docs/dev/reference/loftest-2.png b/docs/dev/reference/loftest-2.png Binary files differnew file mode 100644 index 00000000..32842c7d --- /dev/null +++ b/docs/dev/reference/loftest-2.png diff --git a/docs/dev/reference/loftest-3.png b/docs/dev/reference/loftest-3.png Binary files differnew file mode 100644 index 00000000..e2a5663d --- /dev/null +++ b/docs/dev/reference/loftest-3.png diff --git a/docs/dev/reference/loftest-4.png b/docs/dev/reference/loftest-4.png Binary files differnew file mode 100644 index 00000000..a052626b --- /dev/null +++ b/docs/dev/reference/loftest-4.png diff --git a/docs/dev/reference/loftest-5.png b/docs/dev/reference/loftest-5.png Binary files differnew file mode 100644 index 00000000..168aa062 --- /dev/null +++ b/docs/dev/reference/loftest-5.png diff --git a/docs/dev/reference/loftest.html b/docs/dev/reference/loftest.html new file mode 100644 index 00000000..72496e83 --- /dev/null +++ b/docs/dev/reference/loftest.html @@ -0,0 +1,299 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Lack-of-fit test for models fitted to data with replicates — loftest • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Lack-of-fit test for models fitted to data with replicates — loftest"><meta name="description" content="This is a generic function with a method currently only defined for mkinfit +objects. It fits an anova model to the data contained in the object and +compares the likelihoods using the likelihood ratio test +lrtest.default from the lmtest package."><meta property="og:description" content="This is a generic function with a method currently only defined for mkinfit +objects. It fits an anova model to the data contained in the object and +compares the likelihoods using the likelihood ratio test +lrtest.default from the lmtest package."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Lack-of-fit test for models fitted to data with replicates</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/loftest.R" class="external-link"><code>R/loftest.R</code></a></small> + <div class="d-none name"><code>loftest.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This is a generic function with a method currently only defined for mkinfit +objects. It fits an anova model to the data contained in the object and +compares the likelihoods using the likelihood ratio test +<code><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest.default</a></code> from the lmtest package.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">loftest</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu">loftest</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>A model object with a defined loftest method</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>The anova model is interpreted as the simplest form of an mkinfit model, +assuming only a constant variance about the means, but not enforcing any +structure of the means, so we have one model parameter for every mean +of replicate samples.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>lrtest</p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">test_data</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">synthetic_data_for_UBA_2014</span><span class="op">[[</span><span class="fl">12</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span>, <span class="va">name</span> <span class="op">==</span> <span class="st">"parent"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">sfo_fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">test_data</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_res</a></span><span class="op">(</span><span class="va">sfo_fit</span><span class="op">)</span> <span class="co"># We see a clear pattern in the residuals</span></span></span> +<span class="r-plt img"><img src="loftest-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu">loftest</span><span class="op">(</span><span class="va">sfo_fit</span><span class="op">)</span> <span class="co"># We have a clear lack of fit</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: ANOVA with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: SFO with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 10 -40.710 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 3 -63.954 -7 46.487 7.027e-08 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="co"># We try a different model (the one that was used to generate the data)</span></span></span> +<span class="r-in"><span><span class="va">dfop_fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="va">test_data</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_res</a></span><span class="op">(</span><span class="va">dfop_fit</span><span class="op">)</span> <span class="co"># We don't see systematic deviations, but heteroscedastic residuals</span></span></span> +<span class="r-plt img"><img src="loftest-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># therefore we should consider adapting the error model, although we have</span></span></span> +<span class="r-in"><span><span class="fu">loftest</span><span class="op">(</span><span class="va">dfop_fit</span><span class="op">)</span> <span class="co"># no lack of fit</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: ANOVA with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: DFOP with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq)</span> +<span class="r-out co"><span class="r-pr">#></span> 1 10 -40.710 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 5 -42.453 -5 3.485 0.6257</span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="co"># This is the anova model used internally for the comparison</span></span></span> +<span class="r-in"><span><span class="va">test_data_anova</span> <span class="op"><-</span> <span class="va">test_data</span></span></span> +<span class="r-in"><span><span class="va">test_data_anova</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/factor.html" class="external-link">as.factor</a></span><span class="op">(</span><span class="va">test_data_anova</span><span class="op">$</span><span class="va">time</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">anova_fit</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/lm.html" class="external-link">lm</a></span><span class="op">(</span><span class="va">value</span> <span class="op">~</span> <span class="va">time</span>, data <span class="op">=</span> <span class="va">test_data_anova</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">anova_fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Call:</span> +<span class="r-out co"><span class="r-pr">#></span> lm(formula = value ~ time, data = test_data_anova)</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Residuals:</span> +<span class="r-out co"><span class="r-pr">#></span> Min 1Q Median 3Q Max </span> +<span class="r-out co"><span class="r-pr">#></span> -6.1000 -0.5625 0.0000 0.5625 6.1000 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Coefficients:</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error t value Pr(>|t|) </span> +<span class="r-out co"><span class="r-pr">#></span> (Intercept) 103.150 2.323 44.409 7.44e-12 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time1 -19.950 3.285 -6.073 0.000185 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time3 -50.800 3.285 -15.465 8.65e-08 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time7 -68.500 3.285 -20.854 6.28e-09 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time14 -79.750 3.285 -24.278 1.63e-09 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time28 -86.000 3.285 -26.181 8.35e-10 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time60 -94.900 3.285 -28.891 3.48e-10 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time90 -98.500 3.285 -29.986 2.49e-10 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time120 -100.450 3.285 -30.580 2.09e-10 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Residual standard error: 3.285 on 9 degrees of freedom</span> +<span class="r-out co"><span class="r-pr">#></span> Multiple R-squared: 0.9953, Adjusted R-squared: 0.9912 </span> +<span class="r-out co"><span class="r-pr">#></span> F-statistic: 240.5 on 8 and 9 DF, p-value: 1.417e-09</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/logLik.html" class="external-link">logLik</a></span><span class="op">(</span><span class="va">anova_fit</span><span class="op">)</span> <span class="co"># We get the same likelihood and degrees of freedom</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 'log Lik.' -40.71015 (df=10)</span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="va">test_data_2</span> <span class="op"><-</span> <span class="va">synthetic_data_for_UBA_2014</span><span class="op">[[</span><span class="fl">12</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span></span> +<span class="r-in"><span><span class="va">m_synth_SFO_lin</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"M1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"M2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">sfo_lin_fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_synth_SFO_lin</span>, <span class="va">test_data_2</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_res</a></span><span class="op">(</span><span class="va">sfo_lin_fit</span><span class="op">)</span> <span class="co"># not a good model, we try parallel formation</span></span></span> +<span class="r-plt img"><img src="loftest-3.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu">loftest</span><span class="op">(</span><span class="va">sfo_lin_fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: ANOVA with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: m_synth_SFO_lin with error model const and fixed parameter(s) M1_0, M2_0</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 28 -93.606 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 7 -171.927 -21 156.64 < 2.2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="va">m_synth_SFO_par</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">sfo_par_fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_synth_SFO_par</span>, <span class="va">test_data_2</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_res</a></span><span class="op">(</span><span class="va">sfo_par_fit</span><span class="op">)</span> <span class="co"># much better for metabolites</span></span></span> +<span class="r-plt img"><img src="loftest-4.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu">loftest</span><span class="op">(</span><span class="va">sfo_par_fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: ANOVA with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: m_synth_SFO_par with error model const and fixed parameter(s) M1_0, M2_0</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 28 -93.606 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 7 -156.331 -21 125.45 < 2.2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="va">m_synth_DFOP_par</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"DFOP"</span>, to <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">dfop_par_fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_synth_DFOP_par</span>, <span class="va">test_data_2</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_res</a></span><span class="op">(</span><span class="va">dfop_par_fit</span><span class="op">)</span> <span class="co"># No visual lack of fit</span></span></span> +<span class="r-plt img"><img src="loftest-5.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu">loftest</span><span class="op">(</span><span class="va">dfop_par_fit</span><span class="op">)</span> <span class="co"># no lack of fit found by the test</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: ANOVA with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: m_synth_DFOP_par with error model const and fixed parameter(s) M1_0, M2_0</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq)</span> +<span class="r-out co"><span class="r-pr">#></span> 1 28 -93.606 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 9 -102.763 -19 18.313 0.5016</span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="co"># The anova model used for comparison in the case of transformation products</span></span></span> +<span class="r-in"><span><span class="va">test_data_anova_2</span> <span class="op"><-</span> <span class="va">dfop_par_fit</span><span class="op">$</span><span class="va">data</span></span></span> +<span class="r-in"><span><span class="va">test_data_anova_2</span><span class="op">$</span><span class="va">variable</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/factor.html" class="external-link">as.factor</a></span><span class="op">(</span><span class="va">test_data_anova_2</span><span class="op">$</span><span class="va">variable</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">test_data_anova_2</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/factor.html" class="external-link">as.factor</a></span><span class="op">(</span><span class="va">test_data_anova_2</span><span class="op">$</span><span class="va">time</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">anova_fit_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/lm.html" class="external-link">lm</a></span><span class="op">(</span><span class="va">observed</span> <span class="op">~</span> <span class="va">time</span><span class="op">:</span><span class="va">variable</span> <span class="op">-</span> <span class="fl">1</span>, data <span class="op">=</span> <span class="va">test_data_anova_2</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">anova_fit_2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Call:</span> +<span class="r-out co"><span class="r-pr">#></span> lm(formula = observed ~ time:variable - 1, data = test_data_anova_2)</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Residuals:</span> +<span class="r-out co"><span class="r-pr">#></span> Min 1Q Median 3Q Max </span> +<span class="r-out co"><span class="r-pr">#></span> -6.1000 -0.5875 0.0000 0.5875 6.1000 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Coefficients: (2 not defined because of singularities)</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error t value Pr(>|t|) </span> +<span class="r-out co"><span class="r-pr">#></span> time0:variableparent 103.150 1.573 65.562 < 2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time1:variableparent 83.200 1.573 52.882 < 2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time3:variableparent 52.350 1.573 33.274 < 2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time7:variableparent 34.650 1.573 22.024 < 2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time14:variableparent 23.400 1.573 14.873 6.35e-14 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time28:variableparent 17.150 1.573 10.901 5.47e-11 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time60:variableparent 8.250 1.573 5.244 1.99e-05 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time90:variableparent 4.650 1.573 2.956 0.006717 ** </span> +<span class="r-out co"><span class="r-pr">#></span> time120:variableparent 2.700 1.573 1.716 0.098507 . </span> +<span class="r-out co"><span class="r-pr">#></span> time0:variableM1 NA NA NA NA </span> +<span class="r-out co"><span class="r-pr">#></span> time1:variableM1 11.850 1.573 7.532 6.93e-08 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time3:variableM1 22.700 1.573 14.428 1.26e-13 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time7:variableM1 33.050 1.573 21.007 < 2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time14:variableM1 31.250 1.573 19.863 < 2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time28:variableM1 18.900 1.573 12.013 7.02e-12 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time60:variableM1 7.550 1.573 4.799 6.28e-05 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time90:variableM1 3.850 1.573 2.447 0.021772 * </span> +<span class="r-out co"><span class="r-pr">#></span> time120:variableM1 2.050 1.573 1.303 0.204454 </span> +<span class="r-out co"><span class="r-pr">#></span> time0:variableM2 NA NA NA NA </span> +<span class="r-out co"><span class="r-pr">#></span> time1:variableM2 6.700 1.573 4.259 0.000254 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time3:variableM2 16.750 1.573 10.646 8.93e-11 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time7:variableM2 25.800 1.573 16.399 6.89e-15 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time14:variableM2 28.600 1.573 18.178 6.35e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time28:variableM2 25.400 1.573 16.144 9.85e-15 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time60:variableM2 21.600 1.573 13.729 3.81e-13 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time90:variableM2 17.800 1.573 11.314 2.51e-11 ***</span> +<span class="r-out co"><span class="r-pr">#></span> time120:variableM2 14.100 1.573 8.962 2.79e-09 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Residual standard error: 2.225 on 25 degrees of freedom</span> +<span class="r-out co"><span class="r-pr">#></span> Multiple R-squared: 0.9979, Adjusted R-squared: 0.9957 </span> +<span class="r-out co"><span class="r-pr">#></span> F-statistic: 469.2 on 25 and 25 DF, p-value: < 2.2e-16</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/loftest.mkinfit.html b/docs/dev/reference/loftest.mkinfit.html new file mode 100644 index 00000000..f66a5906 --- /dev/null +++ b/docs/dev/reference/loftest.mkinfit.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/loftest.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/loftest.html"> + </head> +</html> + diff --git a/docs/dev/reference/logLik.mkinfit.html b/docs/dev/reference/logLik.mkinfit.html new file mode 100644 index 00000000..bc2847cc --- /dev/null +++ b/docs/dev/reference/logLik.mkinfit.html @@ -0,0 +1,160 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit"><meta name="description" content="This function returns the product of the likelihood densities of each +observed value, as calculated as part of the fitting procedure using +dnorm, i.e. assuming normal distribution, and with the means +predicted by the degradation model, and the standard deviations predicted by +the error model."><meta property="og:description" content="This function returns the product of the likelihood densities of each +observed value, as calculated as part of the fitting procedure using +dnorm, i.e. assuming normal distribution, and with the means +predicted by the degradation model, and the standard deviations predicted by +the error model."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Calculated the log-likelihood of a fitted mkinfit object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/logLik.mkinfit.R" class="external-link"><code>R/logLik.mkinfit.R</code></a></small> + <div class="d-none name"><code>logLik.mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function returns the product of the likelihood densities of each +observed value, as calculated as part of the fitting procedure using +<code><a href="https://rdrr.io/r/stats/Normal.html" class="external-link">dnorm</a></code>, i.e. assuming normal distribution, and with the means +predicted by the degradation model, and the standard deviations predicted by +the error model.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/logLik.html" class="external-link">logLik</a></span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An object of class <code><a href="mkinfit.html">mkinfit</a></code>.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>For compatibility with the generic method</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>An object of class <code><a href="https://rdrr.io/r/stats/logLik.html" class="external-link">logLik</a></code> with the number of estimated +parameters (degradation model parameters plus variance model parameters) +as attribute.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>The total number of estimated parameters returned with the value of the +likelihood is calculated as the sum of fitted degradation model parameters +and the fitted error model parameters.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Compare the AIC of columns of <code><a href="mmkin.html">mmkin</a></code> objects using +<code><a href="AIC.mmkin.html">AIC.mmkin</a></code>.</p></div> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span> <span class="va">d_t</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f_nw</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">sfo_sfo</span>, <span class="va">d_t</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span> <span class="co"># no weighting (weights are unity)</span></span></span> +<span class="r-in"><span> <span class="va">f_obs</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_nw</span>, error_model <span class="op">=</span> <span class="st">"obs"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_nw</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_nw</span>, <span class="va">f_obs</span>, <span class="va">f_tc</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> df AIC</span> +<span class="r-out co"><span class="r-pr">#></span> f_nw 5 204.4486</span> +<span class="r-out co"><span class="r-pr">#></span> f_obs 6 205.8727</span> +<span class="r-out co"><span class="r-pr">#></span> f_tc 6 141.9656</span> +<span class="r-in"><span> <span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/logLik.saem.mmkin.html b/docs/dev/reference/logLik.saem.mmkin.html new file mode 100644 index 00000000..d542868e --- /dev/null +++ b/docs/dev/reference/logLik.saem.mmkin.html @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>logLik method for saem.mmkin objects — logLik.saem.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="logLik method for saem.mmkin objects — logLik.saem.mmkin"><meta name="description" content="logLik method for saem.mmkin objects"><meta property="og:description" content="logLik method for saem.mmkin objects"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>logLik method for saem.mmkin objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/saem.R" class="external-link"><code>R/saem.R</code></a></small> + <div class="d-none name"><code>logLik.saem.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>logLik method for saem.mmkin objects</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'saem.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/logLik.html" class="external-link">logLik</a></span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span>, method <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"is"</span>, <span class="st">"lin"</span>, <span class="st">"gq"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>The fitted <a href="saem.html">saem.mmkin</a> object</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Passed to <a href="https://rdrr.io/pkg/saemix/man/logLik.html" class="external-link">saemix::logLik.SaemixObject</a></p></dd> + + +<dt id="arg-method">method<a class="anchor" aria-label="anchor" href="#arg-method"></a></dt> +<dd><p>Passed to <a href="https://rdrr.io/pkg/saemix/man/logLik.html" class="external-link">saemix::logLik.SaemixObject</a></p></dd> + +</dl></div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/logistic.solution-1.png b/docs/dev/reference/logistic.solution-1.png Binary files differnew file mode 100644 index 00000000..65739bb7 --- /dev/null +++ b/docs/dev/reference/logistic.solution-1.png diff --git a/docs/dev/reference/logistic.solution-2.png b/docs/dev/reference/logistic.solution-2.png Binary files differnew file mode 100644 index 00000000..e737621e --- /dev/null +++ b/docs/dev/reference/logistic.solution-2.png diff --git a/docs/dev/reference/logistic.solution.html b/docs/dev/reference/logistic.solution.html new file mode 100644 index 00000000..f5fe368a --- /dev/null +++ b/docs/dev/reference/logistic.solution.html @@ -0,0 +1,206 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Logistic kinetics — logistic.solution • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Logistic kinetics — logistic.solution"><meta name="description" content="Function describing exponential decline from a defined starting value, with +an increasing rate constant, supposedly caused by microbial growth"><meta property="og:description" content="Function describing exponential decline from a defined starting value, with +an increasing rate constant, supposedly caused by microbial growth"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Logistic kinetics</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parent_solutions.R" class="external-link"><code>R/parent_solutions.R</code></a></small> + <div class="d-none name"><code>logistic.solution.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Function describing exponential decline from a defined starting value, with +an increasing rate constant, supposedly caused by microbial growth</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">logistic.solution</span><span class="op">(</span><span class="va">t</span>, <span class="va">parent_0</span>, <span class="va">kmax</span>, <span class="va">k0</span>, <span class="va">r</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-t">t<a class="anchor" aria-label="anchor" href="#arg-t"></a></dt> +<dd><p>Time.</p></dd> + + +<dt id="arg-parent-">parent_0<a class="anchor" aria-label="anchor" href="#arg-parent-"></a></dt> +<dd><p>Starting value for the response variable at time zero.</p></dd> + + +<dt id="arg-kmax">kmax<a class="anchor" aria-label="anchor" href="#arg-kmax"></a></dt> +<dd><p>Maximum rate constant.</p></dd> + + +<dt id="arg-k-">k0<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>Minimum rate constant effective at time zero.</p></dd> + + +<dt id="arg-r">r<a class="anchor" aria-label="anchor" href="#arg-r"></a></dt> +<dd><p>Growth rate of the increase in the rate constant.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The value of the response variable at time <code>t</code>.</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>The solution of the logistic model reduces to the +<code><a href="SFO.solution.html">SFO.solution</a></code> if <code>k0</code> is equal to <code>kmax</code>.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a> +FOCUS (2014) “Generic guidance for Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +Version 1.1, 18 December 2014 +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p>Other parent solutions: +<code><a href="DFOP.solution.html">DFOP.solution</a>()</code>, +<code><a href="FOMC.solution.html">FOMC.solution</a>()</code>, +<code><a href="HS.solution.html">HS.solution</a>()</code>, +<code><a href="IORE.solution.html">IORE.solution</a>()</code>, +<code><a href="SFO.solution.html">SFO.solution</a>()</code>, +<code><a href="SFORB.solution.html">SFORB.solution</a>()</code></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># Reproduce the plot on page 57 of FOCUS (2014)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">logistic.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">0.08</span>, <span class="fl">0.0001</span>, <span class="fl">0.2</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> from <span class="op">=</span> <span class="fl">0</span>, to <span class="op">=</span> <span class="fl">100</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">100</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> xlab <span class="op">=</span> <span class="st">"Time"</span>, ylab <span class="op">=</span> <span class="st">"Residue"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">logistic.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">0.08</span>, <span class="fl">0.0001</span>, <span class="fl">0.4</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> from <span class="op">=</span> <span class="fl">0</span>, to <span class="op">=</span> <span class="fl">100</span>, add <span class="op">=</span> <span class="cn">TRUE</span>, lty <span class="op">=</span> <span class="fl">2</span>, col <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">logistic.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">0.08</span>, <span class="fl">0.0001</span>, <span class="fl">0.8</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> from <span class="op">=</span> <span class="fl">0</span>, to <span class="op">=</span> <span class="fl">100</span>, add <span class="op">=</span> <span class="cn">TRUE</span>, lty <span class="op">=</span> <span class="fl">3</span>, col <span class="op">=</span> <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">logistic.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">0.08</span>, <span class="fl">0.001</span>, <span class="fl">0.2</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> from <span class="op">=</span> <span class="fl">0</span>, to <span class="op">=</span> <span class="fl">100</span>, add <span class="op">=</span> <span class="cn">TRUE</span>, lty <span class="op">=</span> <span class="fl">4</span>, col <span class="op">=</span> <span class="fl">4</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu">logistic.solution</span><span class="op">(</span><span class="va">x</span>, <span class="fl">100</span>, <span class="fl">0.08</span>, <span class="fl">0.08</span>, <span class="fl">0.2</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> from <span class="op">=</span> <span class="fl">0</span>, to <span class="op">=</span> <span class="fl">100</span>, add <span class="op">=</span> <span class="cn">TRUE</span>, lty <span class="op">=</span> <span class="fl">5</span>, col <span class="op">=</span> <span class="fl">5</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/legend.html" class="external-link">legend</a></span><span class="op">(</span><span class="st">"topright"</span>, inset <span class="op">=</span> <span class="fl">0.05</span>,</span></span> +<span class="r-in"><span> legend <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste0</a></span><span class="op">(</span><span class="st">"k0 = "</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.0001</span>, <span class="fl">0.0001</span>, <span class="fl">0.0001</span>, <span class="fl">0.001</span>, <span class="fl">0.08</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="st">", r = "</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.2</span>, <span class="fl">0.4</span>, <span class="fl">0.8</span>, <span class="fl">0.2</span>, <span class="fl">0.2</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> lty <span class="op">=</span> <span class="fl">1</span><span class="op">:</span><span class="fl">5</span>, col <span class="op">=</span> <span class="fl">1</span><span class="op">:</span><span class="fl">5</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="logistic.solution-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># Fit with synthetic data</span></span></span> +<span class="r-in"><span> <span class="va">logistic</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"logistic"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">sampling_times</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">parms_logistic</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>kmax <span class="op">=</span> <span class="fl">0.08</span>, k0 <span class="op">=</span> <span class="fl">0.0001</span>, r <span class="op">=</span> <span class="fl">0.2</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">d_logistic</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">logistic</span>,</span></span> +<span class="r-in"><span> <span class="va">parms_logistic</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">d_2_1</span> <span class="op"><-</span> <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_logistic</span>,</span></span> +<span class="r-in"><span> sdfunc <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu"><a href="sigma_twocomp.html">sigma_twocomp</a></span><span class="op">(</span><span class="va">x</span>, <span class="fl">0.5</span>, <span class="fl">0.07</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> n <span class="op">=</span> <span class="fl">1</span>, reps <span class="op">=</span> <span class="fl">2</span>, digits <span class="op">=</span> <span class="fl">5</span>, LOD <span class="op">=</span> <span class="fl">0.1</span>, seed <span class="op">=</span> <span class="fl">123456</span><span class="op">)</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">m</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"logistic"</span>, <span class="va">d_2_1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">m</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="logistic.solution-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t) Lower</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 1.057896e+02 1.9023449604 55.610120 3.768360e-16 1.016451e+02</span> +<span class="r-out co"><span class="r-pr">#></span> kmax 6.398190e-02 0.0143201030 4.467978 3.841828e-04 3.929235e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k0 1.612775e-04 0.0005866813 0.274898 3.940351e-01 5.846688e-08</span> +<span class="r-out co"><span class="r-pr">#></span> r 2.263946e-01 0.1718110664 1.317695 1.061043e-01 4.335843e-02</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.332935e+00 0.9145907310 5.830952 4.036926e-05 3.340213e+00</span> +<span class="r-out co"><span class="r-pr">#></span> Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 109.9341588</span> +<span class="r-out co"><span class="r-pr">#></span> kmax 0.1041853</span> +<span class="r-out co"><span class="r-pr">#></span> k0 0.4448749</span> +<span class="r-out co"><span class="r-pr">#></span> r 1.1821120</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 7.3256566</span> +<span class="r-in"><span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">m</span><span class="op">)</span><span class="op">$</span><span class="va">distimes</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50_k0 DT50_kmax</span> +<span class="r-out co"><span class="r-pr">#></span> parent 36.86533 62.41511 4297.853 10.83349</span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/lrtest.html b/docs/dev/reference/lrtest.html new file mode 100644 index 00000000..9cc267c0 --- /dev/null +++ b/docs/dev/reference/lrtest.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/reexports.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/reexports.html"> + </head> +</html> + diff --git a/docs/dev/reference/lrtest.mkinfit.html b/docs/dev/reference/lrtest.mkinfit.html new file mode 100644 index 00000000..c34e1cdd --- /dev/null +++ b/docs/dev/reference/lrtest.mkinfit.html @@ -0,0 +1,191 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Likelihood ratio test for mkinfit models — lrtest.mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Likelihood ratio test for mkinfit models — lrtest.mkinfit"><meta name="description" content="Compare two mkinfit models based on their likelihood. If two fitted +mkinfit objects are given as arguments, it is checked if they have been +fitted to the same data. It is the responsibility of the user to make sure +that the models are nested, i.e. one of them has less degrees of freedom +and can be expressed by fixing the parameters of the other."><meta property="og:description" content="Compare two mkinfit models based on their likelihood. If two fitted +mkinfit objects are given as arguments, it is checked if they have been +fitted to the same data. It is the responsibility of the user to make sure +that the models are nested, i.e. one of them has less degrees of freedom +and can be expressed by fixing the parameters of the other."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Likelihood ratio test for mkinfit models</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/lrtest.mkinfit.R" class="external-link"><code>R/lrtest.mkinfit.R</code></a></small> + <div class="d-none name"><code>lrtest.mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Compare two mkinfit models based on their likelihood. If two fitted +mkinfit objects are given as arguments, it is checked if they have been +fitted to the same data. It is the responsibility of the user to make sure +that the models are nested, i.e. one of them has less degrees of freedom +and can be expressed by fixing the parameters of the other.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">object</span>, object_2 <span class="op">=</span> <span class="cn">NULL</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An <code><a href="mkinfit.html">mkinfit</a></code> object, or an <code><a href="mmkin.html">mmkin</a></code> column +object containing two fits to the same data.</p></dd> + + +<dt id="arg-object-">object_2<a class="anchor" aria-label="anchor" href="#arg-object-"></a></dt> +<dd><p>Optionally, another mkinfit object fitted to the same data.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Argument to <code><a href="mkinfit.html">mkinfit</a></code>, passed to +<code><a href="update.mkinfit.html">update.mkinfit</a></code> for creating the alternative fitted object.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>Alternatively, an argument to mkinfit can be given which is then passed +to <code><a href="update.mkinfit.html">update.mkinfit</a></code> to obtain the alternative model.</p> +<p>The comparison is then made by the <code><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest.default</a></code> +method from the lmtest package. The model with the higher number of fitted +parameters (alternative hypothesis) is listed first, then the model with the +lower number of fitted parameters (null hypothesis).</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">test_data</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">synthetic_data_for_UBA_2014</span><span class="op">[[</span><span class="fl">12</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span>, <span class="va">name</span> <span class="op">==</span> <span class="st">"parent"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">sfo_fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">test_data</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dfop_fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="va">test_data</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">dfop_fit</span>, <span class="va">sfo_fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: DFOP with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: SFO with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 5 -42.453 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 3 -63.954 -2 43.002 4.594e-10 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">sfo_fit</span>, <span class="va">dfop_fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: DFOP with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: SFO with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 5 -42.453 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 3 -63.954 -2 43.002 4.594e-10 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The following two examples are commented out as they fail during</span></span></span> +<span class="r-in"><span><span class="co"># generation of the static help pages by pkgdown</span></span></span> +<span class="r-in"><span><span class="co">#lrtest(dfop_fit, error_model = "tc")</span></span></span> +<span class="r-in"><span><span class="co">#lrtest(dfop_fit, fixed_parms = c(k2 = 0))</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># However, this equivalent syntax also works for static help pages</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">dfop_fit</span>, <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">dfop_fit</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: DFOP with error model tc</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: DFOP with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 6 -34.587 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 5 -42.453 -1 15.731 7.302e-05 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">dfop_fit</span>, <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">dfop_fit</span>, fixed_parms <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k2 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: DFOP with error model const</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: DFOP with error model const and fixed parameter(s) k2</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 5 -42.453 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 4 -57.340 -1 29.776 4.851e-08 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/lrtest.mmkin.html b/docs/dev/reference/lrtest.mmkin.html new file mode 100644 index 00000000..dcefa4aa --- /dev/null +++ b/docs/dev/reference/lrtest.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/lrtest.mkinfit.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/lrtest.mkinfit.html"> + </head> +</html> + diff --git a/docs/dev/reference/max_twa_dfop.html b/docs/dev/reference/max_twa_dfop.html new file mode 100644 index 00000000..47bf3da7 --- /dev/null +++ b/docs/dev/reference/max_twa_dfop.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html"> + </head> +</html> + diff --git a/docs/dev/reference/max_twa_fomc.html b/docs/dev/reference/max_twa_fomc.html new file mode 100644 index 00000000..47bf3da7 --- /dev/null +++ b/docs/dev/reference/max_twa_fomc.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html"> + </head> +</html> + diff --git a/docs/dev/reference/max_twa_hs.html b/docs/dev/reference/max_twa_hs.html new file mode 100644 index 00000000..47bf3da7 --- /dev/null +++ b/docs/dev/reference/max_twa_hs.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html"> + </head> +</html> + diff --git a/docs/dev/reference/max_twa_parent.html b/docs/dev/reference/max_twa_parent.html new file mode 100644 index 00000000..550a2678 --- /dev/null +++ b/docs/dev/reference/max_twa_parent.html @@ -0,0 +1,192 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent"><meta name="description" content="This function calculates maximum moving window time weighted average +concentrations (TWAs) for kinetic models fitted with mkinfit. +Currently, only calculations for the parent are implemented for the SFO, +FOMC, DFOP and HS models, using the analytical formulas given in the PEC +soil section of the FOCUS guidance."><meta property="og:description" content="This function calculates maximum moving window time weighted average +concentrations (TWAs) for kinetic models fitted with mkinfit. +Currently, only calculations for the parent are implemented for the SFO, +FOMC, DFOP and HS models, using the analytical formulas given in the PEC +soil section of the FOCUS guidance."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/max_twa_parent.R" class="external-link"><code>R/max_twa_parent.R</code></a></small> + <div class="d-none name"><code>max_twa_parent.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function calculates maximum moving window time weighted average +concentrations (TWAs) for kinetic models fitted with <code><a href="mkinfit.html">mkinfit</a></code>. +Currently, only calculations for the parent are implemented for the SFO, +FOMC, DFOP and HS models, using the analytical formulas given in the PEC +soil section of the FOCUS guidance.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">max_twa_parent</span><span class="op">(</span><span class="va">fit</span>, <span class="va">windows</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">max_twa_sfo</span><span class="op">(</span>M0 <span class="op">=</span> <span class="fl">1</span>, <span class="va">k</span>, <span class="va">t</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">max_twa_fomc</span><span class="op">(</span>M0 <span class="op">=</span> <span class="fl">1</span>, <span class="va">alpha</span>, <span class="va">beta</span>, <span class="va">t</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">max_twa_dfop</span><span class="op">(</span>M0 <span class="op">=</span> <span class="fl">1</span>, <span class="va">k1</span>, <span class="va">k2</span>, <span class="va">g</span>, <span class="va">t</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">max_twa_hs</span><span class="op">(</span>M0 <span class="op">=</span> <span class="fl">1</span>, <span class="va">k1</span>, <span class="va">k2</span>, <span class="va">tb</span>, <span class="va">t</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-fit">fit<a class="anchor" aria-label="anchor" href="#arg-fit"></a></dt> +<dd><p>An object of class <code><a href="mkinfit.html">mkinfit</a></code>.</p></dd> + + +<dt id="arg-windows">windows<a class="anchor" aria-label="anchor" href="#arg-windows"></a></dt> +<dd><p>The width of the time windows for which the TWAs should be +calculated.</p></dd> + + +<dt id="arg-m-">M0<a class="anchor" aria-label="anchor" href="#arg-m-"></a></dt> +<dd><p>The initial concentration for which the maximum time weighted +average over the decline curve should be calculated. The default is to use +a value of 1, which means that a relative maximum time weighted average +factor (f_twa) is calculated.</p></dd> + + +<dt id="arg-k">k<a class="anchor" aria-label="anchor" href="#arg-k"></a></dt> +<dd><p>The rate constant in the case of SFO kinetics.</p></dd> + + +<dt id="arg-t">t<a class="anchor" aria-label="anchor" href="#arg-t"></a></dt> +<dd><p>The width of the time window.</p></dd> + + +<dt id="arg-alpha">alpha<a class="anchor" aria-label="anchor" href="#arg-alpha"></a></dt> +<dd><p>Parameter of the FOMC model.</p></dd> + + +<dt id="arg-beta">beta<a class="anchor" aria-label="anchor" href="#arg-beta"></a></dt> +<dd><p>Parameter of the FOMC model.</p></dd> + + +<dt id="arg-k-">k1<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>The first rate constant of the DFOP or the HS kinetics.</p></dd> + + +<dt id="arg-k-">k2<a class="anchor" aria-label="anchor" href="#arg-k-"></a></dt> +<dd><p>The second rate constant of the DFOP or the HS kinetics.</p></dd> + + +<dt id="arg-g">g<a class="anchor" aria-label="anchor" href="#arg-g"></a></dt> +<dd><p>Parameter of the DFOP model.</p></dd> + + +<dt id="arg-tb">tb<a class="anchor" aria-label="anchor" href="#arg-tb"></a></dt> +<dd><p>Parameter of the HS model.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>For <code>max_twa_parent</code>, a numeric vector, named using the +<code>windows</code> argument. For the other functions, a numeric vector of +length one (also known as 'a number').</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu">max_twa_parent</span><span class="op">(</span><span class="va">fit</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">7</span>, <span class="fl">21</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> 7 21 </span> +<span class="r-out co"><span class="r-pr">#></span> 34.71343 18.22124 </span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/max_twa_sfo.html b/docs/dev/reference/max_twa_sfo.html new file mode 100644 index 00000000..47bf3da7 --- /dev/null +++ b/docs/dev/reference/max_twa_sfo.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html"> + </head> +</html> + diff --git a/docs/dev/reference/mccall81_245T-1.png b/docs/dev/reference/mccall81_245T-1.png Binary files differnew file mode 100644 index 00000000..3bb35cbd --- /dev/null +++ b/docs/dev/reference/mccall81_245T-1.png diff --git a/docs/dev/reference/mccall81_245T.html b/docs/dev/reference/mccall81_245T.html new file mode 100644 index 00000000..996e9fc2 --- /dev/null +++ b/docs/dev/reference/mccall81_245T.html @@ -0,0 +1,201 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Datasets on aerobic soil metabolism of 2,4,5-T in six soils — mccall81_245T • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Datasets on aerobic soil metabolism of 2,4,5-T in six soils — mccall81_245T"><meta name="description" content="Time course of 2,4,5-trichlorophenoxyacetic acid, and the corresponding + 2,4,5-trichlorophenol and 2,4,5-trichloroanisole as recovered in diethylether + extracts."><meta property="og:description" content="Time course of 2,4,5-trichlorophenoxyacetic acid, and the corresponding + 2,4,5-trichlorophenol and 2,4,5-trichloroanisole as recovered in diethylether + extracts."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Datasets on aerobic soil metabolism of 2,4,5-T in six soils</h1> + + <div class="d-none name"><code>mccall81_245T.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Time course of 2,4,5-trichlorophenoxyacetic acid, and the corresponding + 2,4,5-trichlorophenol and 2,4,5-trichloroanisole as recovered in diethylether + extracts.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">mccall81_245T</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A dataframe containing the following variables.</p><dl><dt><code>name</code></dt> +<dd><p>the name of the compound observed. Note that T245 is used as + an acronym for 2,4,5-T. T245 is a legitimate object name + in R, which is necessary for specifying models using + <code><a href="mkinmod.html">mkinmod</a></code>.</p></dd> + + <dt><code>time</code></dt> +<dd><p>a numeric vector containing sampling times in days after + treatment</p></dd> + + <dt><code>value</code></dt> +<dd><p>a numeric vector containing concentrations in percent of applied radioactivity</p></dd> + + <dt><code>soil</code></dt> +<dd><p>a factor containing the name of the soil</p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>McCall P, Vrona SA, Kelley SS (1981) Fate of uniformly carbon-14 ring labelled 2,4,5-Trichlorophenoxyacetic acid and 2,4-dichlorophenoxyacetic acid. J Agric Chem 29, 100-107 + <a href="https://doi.org/10.1021/jf00103a026" class="external-link">doi:10.1021/jf00103a026</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span> <span class="va">SFO_SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>T245 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"phenol"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> phenol <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"anisole"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> anisole <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span> <span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">fit.1</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO_SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">mccall81_245T</span>, <span class="va">soil</span> <span class="op">==</span> <span class="st">"Commerce"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit.1</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t)</span> +<span class="r-out co"><span class="r-pr">#></span> T245_0 1.038550e+02 2.1847074943 47.537272 4.472189e-18</span> +<span class="r-out co"><span class="r-pr">#></span> k_T245 4.337042e-02 0.0018983965 22.845818 2.276911e-13</span> +<span class="r-out co"><span class="r-pr">#></span> k_phenol 4.050581e-01 0.2986993738 1.356073 9.756990e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_anisole 6.678742e-03 0.0008021439 8.326114 2.623177e-07</span> +<span class="r-out co"><span class="r-pr">#></span> f_T245_to_phenol 6.227599e-01 0.3985340721 1.562626 6.949414e-02</span> +<span class="r-out co"><span class="r-pr">#></span> f_phenol_to_anisole 1.000000e+00 0.6718440131 1.488441 7.867790e-02</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.514628e+00 0.4907558973 5.123989 6.233159e-05</span> +<span class="r-out co"><span class="r-pr">#></span> Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> T245_0 99.246061490 1.084640e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k_T245 0.039631621 4.746194e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_phenol 0.218013879 7.525762e-01</span> +<span class="r-out co"><span class="r-pr">#></span> k_anisole 0.005370739 8.305299e-03</span> +<span class="r-out co"><span class="r-pr">#></span> f_T245_to_phenol 0.547559080 6.924813e-01</span> +<span class="r-out co"><span class="r-pr">#></span> f_phenol_to_anisole 0.000000000 1.000000e+00</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.706607296 3.322649e+00</span> +<span class="r-in"><span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fit.1</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $ff</span> +<span class="r-out co"><span class="r-pr">#></span> T245_phenol T245_sink phenol_anisole phenol_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 6.227599e-01 3.772401e-01 1.000000e+00 3.072478e-10 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> T245 15.982025 53.09114</span> +<span class="r-out co"><span class="r-pr">#></span> phenol 1.711229 5.68458</span> +<span class="r-out co"><span class="r-pr">#></span> anisole 103.784093 344.76329</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span> <span class="co"># formation fraction from phenol to anisol is practically 1. As we cannot</span></span></span> +<span class="r-in"><span> <span class="co"># fix formation fractions when using the ilr transformation, we can turn of</span></span></span> +<span class="r-in"><span> <span class="co"># the sink in the model generation</span></span></span> +<span class="r-in"><span> <span class="va">SFO_SFO_SFO_2</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>T245 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"phenol"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> phenol <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"anisole"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> anisole <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span> <span class="va">fit.2</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO_SFO_2</span>, <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">mccall81_245T</span>, <span class="va">soil</span> <span class="op">==</span> <span class="st">"Commerce"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit.2</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t) Lower</span> +<span class="r-out co"><span class="r-pr">#></span> T245_0 1.038550e+02 2.1623653059 48.028439 4.993108e-19 99.271020328</span> +<span class="r-out co"><span class="r-pr">#></span> k_T245 4.337042e-02 0.0018343666 23.643268 3.573556e-14 0.039650976</span> +<span class="r-out co"><span class="r-pr">#></span> k_phenol 4.050582e-01 0.1177237651 3.440752 1.679255e-03 0.218746589</span> +<span class="r-out co"><span class="r-pr">#></span> k_anisole 6.678742e-03 0.0006829745 9.778903 1.872894e-08 0.005377083</span> +<span class="r-out co"><span class="r-pr">#></span> f_T245_to_phenol 6.227599e-01 0.0342197873 18.198824 2.039411e-12 0.547975634</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.514628e+00 0.3790944250 6.633250 2.875782e-06 1.710983655</span> +<span class="r-out co"><span class="r-pr">#></span> Upper</span> +<span class="r-out co"><span class="r-pr">#></span> T245_0 108.43904079</span> +<span class="r-out co"><span class="r-pr">#></span> k_T245 0.04743877</span> +<span class="r-out co"><span class="r-pr">#></span> k_phenol 0.75005593</span> +<span class="r-out co"><span class="r-pr">#></span> k_anisole 0.00829550</span> +<span class="r-out co"><span class="r-pr">#></span> f_T245_to_phenol 0.69212307</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 3.31827222</span> +<span class="r-in"><span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fit.1</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $ff</span> +<span class="r-out co"><span class="r-pr">#></span> T245_phenol T245_sink phenol_anisole phenol_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 6.227599e-01 3.772401e-01 1.000000e+00 3.072478e-10 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> T245 15.982025 53.09114</span> +<span class="r-out co"><span class="r-pr">#></span> phenol 1.711229 5.68458</span> +<span class="r-out co"><span class="r-pr">#></span> anisole 103.784093 344.76329</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span> <span class="fu"><a href="plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">fit.2</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mccall81_245T-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mean_degparms.html b/docs/dev/reference/mean_degparms.html new file mode 100644 index 00000000..41517875 --- /dev/null +++ b/docs/dev/reference/mean_degparms.html @@ -0,0 +1,134 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Calculate mean degradation parameters for an mmkin row object — mean_degparms • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Calculate mean degradation parameters for an mmkin row object — mean_degparms"><meta name="description" content="Calculate mean degradation parameters for an mmkin row object"><meta property="og:description" content="Calculate mean degradation parameters for an mmkin row object"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Calculate mean degradation parameters for an mmkin row object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mean_degparms.R" class="external-link"><code>R/mean_degparms.R</code></a></small> + <div class="d-none name"><code>mean_degparms.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Calculate mean degradation parameters for an mmkin row object</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mean_degparms</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> random <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> test_log_parms <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> conf.level <span class="op">=</span> <span class="fl">0.6</span>,</span> +<span> default_log_parms <span class="op">=</span> <span class="cn">NA</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An mmkin row object containing several fits of the same model to different datasets</p></dd> + + +<dt id="arg-random">random<a class="anchor" aria-label="anchor" href="#arg-random"></a></dt> +<dd><p>Should a list with fixed and random effects be returned?</p></dd> + + +<dt id="arg-test-log-parms">test_log_parms<a class="anchor" aria-label="anchor" href="#arg-test-log-parms"></a></dt> +<dd><p>If TRUE, log parameters are only considered in +the mean calculations if their untransformed counterparts (most likely +rate constants) pass the t-test for significant difference from zero.</p></dd> + + +<dt id="arg-conf-level">conf.level<a class="anchor" aria-label="anchor" href="#arg-conf-level"></a></dt> +<dd><p>Possibility to adjust the required confidence level +for parameter that are tested if requested by 'test_log_parms'.</p></dd> + + +<dt id="arg-default-log-parms">default_log_parms<a class="anchor" aria-label="anchor" href="#arg-default-log-parms"></a></dt> +<dd><p>If set to a numeric value, this is used +as a default value for the tested log parameters that failed the +t-test.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>If random is FALSE (default), a named vector containing mean values +of the fitted degradation model parameters. If random is TRUE, a list with +fixed and random effects, in the format required by the start argument of +nlme for the case of a single grouping variable ds.</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mhmkin-1.png b/docs/dev/reference/mhmkin-1.png Binary files differnew file mode 100644 index 00000000..1c99aead --- /dev/null +++ b/docs/dev/reference/mhmkin-1.png diff --git a/docs/dev/reference/mhmkin-2.png b/docs/dev/reference/mhmkin-2.png Binary files differnew file mode 100644 index 00000000..7311206d --- /dev/null +++ b/docs/dev/reference/mhmkin-2.png diff --git a/docs/dev/reference/mhmkin.html b/docs/dev/reference/mhmkin.html new file mode 100644 index 00000000..513fc780 --- /dev/null +++ b/docs/dev/reference/mhmkin.html @@ -0,0 +1,286 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin"><meta name="description" content="The name of the methods expresses that (multiple) hierarchichal +(also known as multilevel) multicompartment kinetic models are +fitted. Our kinetic models are nonlinear, so we can use various nonlinear +mixed-effects model fitting functions."><meta property="og:description" content="The name of the methods expresses that (multiple) hierarchichal +(also known as multilevel) multicompartment kinetic models are +fitted. Our kinetic models are nonlinear, so we can use various nonlinear +mixed-effects model fitting functions."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mhmkin.R" class="external-link"><code>R/mhmkin.R</code></a></small> + <div class="d-none name"><code>mhmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The name of the methods expresses that (<strong>m</strong>ultiple) <strong>h</strong>ierarchichal +(also known as multilevel) <strong>m</strong>ulticompartment <strong>kin</strong>etic models are +fitted. Our kinetic models are nonlinear, so we can use various nonlinear +mixed-effects model fitting functions.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mhmkin</span><span class="op">(</span><span class="va">objects</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu">mhmkin</span><span class="op">(</span><span class="va">objects</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'list'</span></span> +<span><span class="fu">mhmkin</span><span class="op">(</span></span> +<span> <span class="va">objects</span>,</span> +<span> backend <span class="op">=</span> <span class="st">"saemix"</span>,</span> +<span> algorithm <span class="op">=</span> <span class="st">"saem"</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> <span class="va">...</span>,</span> +<span> cores <span class="op">=</span> <span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.info.html" class="external-link">Sys.info</a></span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="st">"sysname"</span><span class="op">]</span> <span class="op">==</span> <span class="st">"Windows"</span><span class="op">)</span> <span class="fl">1</span> <span class="kw">else</span> <span class="fu">parallel</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> cluster <span class="op">=</span> <span class="cn">NULL</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mhmkin'</span></span> +<span><span class="va">x</span><span class="op">[</span><span class="va">i</span>, <span class="va">j</span>, <span class="va">...</span>, drop <span class="op">=</span> <span class="cn">FALSE</span><span class="op">]</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mhmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-objects">objects<a class="anchor" aria-label="anchor" href="#arg-objects"></a></dt> +<dd><p>A list of <a href="mmkin.html">mmkin</a> objects containing fits of the same +degradation models to the same data, but using different error models. +Alternatively, a single <a href="mmkin.html">mmkin</a> object containing fits of several +degradation models to the same data</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further arguments that will be passed to the nonlinear mixed-effects +model fitting function.</p></dd> + + +<dt id="arg-backend">backend<a class="anchor" aria-label="anchor" href="#arg-backend"></a></dt> +<dd><p>The backend to be used for fitting. Currently, only saemix is +supported</p></dd> + + +<dt id="arg-algorithm">algorithm<a class="anchor" aria-label="anchor" href="#arg-algorithm"></a></dt> +<dd><p>The algorithm to be used for fitting (currently not used)</p></dd> + + +<dt id="arg-no-random-effect">no_random_effect<a class="anchor" aria-label="anchor" href="#arg-no-random-effect"></a></dt> +<dd><p>Default is NULL and will be passed to <a href="saem.html">saem</a>. If a +character vector is supplied, it will be passed to all calls to <a href="saem.html">saem</a>, +which will exclude random effects for all matching parameters. Alternatively, +a list of character vectors or an object of class <a href="illparms.html">illparms.mhmkin</a> can be +specified. They have to have the same dimensions that the return object of +the current call will have, i.e. the number of rows must match the number +of degradation models in the mmkin object(s), and the number of columns must +match the number of error models used in the mmkin object(s).</p></dd> + + +<dt id="arg-cores">cores<a class="anchor" aria-label="anchor" href="#arg-cores"></a></dt> +<dd><p>The number of cores to be used for multicore processing. This +is only used when the <code>cluster</code> argument is <code>NULL</code>. On Windows +machines, cores > 1 is not supported, you need to use the <code>cluster</code> +argument to use multiple logical processors. Per default, all cores detected +by <code><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">parallel::detectCores()</a></code> are used, except on Windows where the default +is 1.</p></dd> + + +<dt id="arg-cluster">cluster<a class="anchor" aria-label="anchor" href="#arg-cluster"></a></dt> +<dd><p>A cluster as returned by makeCluster to be used for +parallel execution.</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An mhmkin object.</p></dd> + + +<dt id="arg-i">i<a class="anchor" aria-label="anchor" href="#arg-i"></a></dt> +<dd><p>Row index selecting the fits for specific models</p></dd> + + +<dt id="arg-j">j<a class="anchor" aria-label="anchor" href="#arg-j"></a></dt> +<dd><p>Column index selecting the fits to specific datasets</p></dd> + + +<dt id="arg-drop">drop<a class="anchor" aria-label="anchor" href="#arg-drop"></a></dt> +<dd><p>If FALSE, the method always returns an mhmkin object, otherwise +either a list of fit objects or a single fit object.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A two-dimensional <a href="https://rdrr.io/r/base/array.html" class="external-link">array</a> of fit objects and/or try-errors that can +be indexed using the degradation model names for the first index (row index) +and the error model names for the second index (column index), with class +attribute 'mhmkin'.</p> +<p>An object inheriting from <code>mhmkin</code>.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><code>[.mhmkin</code> for subsetting mhmkin objects</p></div> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="co"># We start with separate evaluations of all the first six datasets with two</span></span></span> +<span class="r-in"><span><span class="co"># degradation models and two error models</span></span></span> +<span class="r-in"><span><span class="va">f_sep_const</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span><span class="op">)</span>, <span class="va">ds_fomc</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">6</span><span class="op">]</span>, cores <span class="op">=</span> <span class="fl">2</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_sep_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_sep_const</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># The mhmkin function sets up hierarchical degradation models aka</span></span></span> +<span class="r-in"><span><span class="co"># nonlinear mixed-effects models for all four combinations, specifying</span></span></span> +<span class="r-in"><span><span class="co"># uncorrelated random effects for all degradation parameters</span></span></span> +<span class="r-in"><span><span class="va">f_saem_1</span> <span class="op"><-</span> <span class="fu">mhmkin</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">f_sep_const</span>, <span class="va">f_sep_tc</span><span class="op">)</span>, cores <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="status.html">status</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> error</span> +<span class="r-out co"><span class="r-pr">#></span> degradation const tc</span> +<span class="r-out co"><span class="r-pr">#></span> SFO OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> OK: Fit terminated successfully</span> +<span class="r-in"><span><span class="co"># The 'illparms' function shows that in all hierarchical fits, at least</span></span></span> +<span class="r-in"><span><span class="co"># one random effect is ill-defined (the confidence interval for the</span></span></span> +<span class="r-in"><span><span class="co"># random effect expressed as standard deviation includes zero)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> error</span> +<span class="r-out co"><span class="r-pr">#></span> degradation const tc </span> +<span class="r-out co"><span class="r-pr">#></span> SFO sd(parent_0) sd(parent_0) </span> +<span class="r-out co"><span class="r-pr">#></span> FOMC sd(log_beta) sd(parent_0), sd(log_beta)</span> +<span class="r-in"><span><span class="co"># Therefore we repeat the fits, excluding the ill-defined random effects</span></span></span> +<span class="r-in"><span><span class="va">f_saem_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_1</span>, no_random_effect <span class="op">=</span> <span class="fu"><a href="illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="status.html">status</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> error</span> +<span class="r-out co"><span class="r-pr">#></span> degradation const tc</span> +<span class="r-out co"><span class="r-pr">#></span> SFO OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> OK: Fit terminated successfully</span> +<span class="r-in"><span><span class="fu"><a href="illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> error</span> +<span class="r-out co"><span class="r-pr">#></span> degradation const tc</span> +<span class="r-out co"><span class="r-pr">#></span> SFO </span> +<span class="r-out co"><span class="r-pr">#></span> FOMC </span> +<span class="r-in"><span><span class="co"># Model comparisons show that FOMC with two-component error is preferable,</span></span></span> +<span class="r-in"><span><span class="co"># and confirms our reduction of the default parameter model</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_1</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 95 observations of 1 variable(s) grouped in 6 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik</span> +<span class="r-out co"><span class="r-pr">#></span> SFO const 5 574.40 573.35 -282.20</span> +<span class="r-out co"><span class="r-pr">#></span> SFO tc 6 543.72 542.47 -265.86</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC const 7 489.67 488.22 -237.84</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC tc 8 406.11 404.44 -195.05</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 95 observations of 1 variable(s) grouped in 6 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik</span> +<span class="r-out co"><span class="r-pr">#></span> SFO const 4 572.22 571.39 -282.11</span> +<span class="r-out co"><span class="r-pr">#></span> SFO tc 5 541.63 540.59 -265.81</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC const 6 487.38 486.13 -237.69</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC tc 6 402.12 400.88 -195.06</span> +<span class="r-in"><span><span class="co"># The convergence plot for the selected model looks fine</span></span></span> +<span class="r-in"><span><span class="fu">saemix</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"FOMC"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"convergence"</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mhmkin-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># The plot of predictions versus data shows that we have a pretty data-rich</span></span></span> +<span class="r-in"><span><span class="co"># situation with homogeneous distribution of residuals, because we used the</span></span></span> +<span class="r-in"><span><span class="co"># same degradation model, error model and parameter distribution model that</span></span></span> +<span class="r-in"><span><span class="co"># was used in the data generation.</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_2</span><span class="op">[[</span><span class="st">"FOMC"</span>, <span class="st">"tc"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mhmkin-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># We can specify the same parameter model reductions manually</span></span></span> +<span class="r-in"><span><span class="va">no_ranef</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"parent_0"</span>, <span class="st">"log_beta"</span>, <span class="st">"parent_0"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"parent_0"</span>, <span class="st">"log_beta"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/dim.html" class="external-link">dim</a></span><span class="op">(</span><span class="va">no_ranef</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">2</span>, <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_2m</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_1</span>, no_random_effect <span class="op">=</span> <span class="va">no_ranef</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_2m</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 95 observations of 1 variable(s) grouped in 6 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik</span> +<span class="r-out co"><span class="r-pr">#></span> SFO const 4 572.22 571.39 -282.11</span> +<span class="r-out co"><span class="r-pr">#></span> SFO tc 5 541.63 540.59 -265.81</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC const 6 487.38 486.13 -237.69</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC tc 6 402.12 400.88 -195.06</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mhmkin.list.html b/docs/dev/reference/mhmkin.list.html new file mode 100644 index 00000000..19cc9c91 --- /dev/null +++ b/docs/dev/reference/mhmkin.list.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/mhmkin.mmkin.html b/docs/dev/reference/mhmkin.mmkin.html new file mode 100644 index 00000000..19cc9c91 --- /dev/null +++ b/docs/dev/reference/mhmkin.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/mixed-1.png b/docs/dev/reference/mixed-1.png Binary files differnew file mode 100644 index 00000000..d46a2485 --- /dev/null +++ b/docs/dev/reference/mixed-1.png diff --git a/docs/dev/reference/mixed.html b/docs/dev/reference/mixed.html new file mode 100644 index 00000000..513fb226 --- /dev/null +++ b/docs/dev/reference/mixed.html @@ -0,0 +1,199 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Create a mixed effects model from an mmkin row object — mixed • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Create a mixed effects model from an mmkin row object — mixed"><meta name="description" content="Create a mixed effects model from an mmkin row object"><meta property="og:description" content="Create a mixed effects model from an mmkin row object"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Create a mixed effects model from an mmkin row object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mixed.mmkin.R" class="external-link"><code>R/mixed.mmkin.R</code></a></small> + <div class="d-none name"><code>mixed.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Create a mixed effects model from an mmkin row object</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mixed</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu">mixed</span><span class="op">(</span><span class="va">object</span>, method <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"none"</span><span class="op">)</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mixed.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, digits <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"digits"</span><span class="op">)</span> <span class="op">-</span> <span class="fl">3</span><span class="op">)</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An <a href="mmkin.html">mmkin</a> row object</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Currently not used</p></dd> + + +<dt id="arg-method">method<a class="anchor" aria-label="anchor" href="#arg-method"></a></dt> +<dd><p>The method to be used</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>A mixed.mmkin object to print</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>Number of digits to use for printing.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>An object of class 'mixed.mmkin' which has the observed data in a +single dataframe which is convenient for plotting</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">sampling_times</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">n_biphasic</span> <span class="op"><-</span> <span class="fl">8</span></span></span> +<span class="r-in"><span><span class="va">err_1</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>const <span class="op">=</span> <span class="fl">1</span>, prop <span class="op">=</span> <span class="fl">0.07</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">DFOP_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">123456</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">log_sd</span> <span class="op"><-</span> <span class="fl">0.3</span></span></span> +<span class="r-in"><span><span class="va">syn_biphasic_parms</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/matrix.html" class="external-link">as.matrix</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> k1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/Lognormal.html" class="external-link">rlnorm</a></span><span class="op">(</span><span class="va">n_biphasic</span>, <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">0.05</span><span class="op">)</span>, <span class="va">log_sd</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> k2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/Lognormal.html" class="external-link">rlnorm</a></span><span class="op">(</span><span class="va">n_biphasic</span>, <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">0.01</span><span class="op">)</span>, <span class="va">log_sd</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> g <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/Logistic.html" class="external-link">plogis</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/stats/Normal.html" class="external-link">rnorm</a></span><span class="op">(</span><span class="va">n_biphasic</span>, <span class="fl">0</span>, <span class="va">log_sd</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> f_parent_to_m1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/Logistic.html" class="external-link">plogis</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/stats/Normal.html" class="external-link">rnorm</a></span><span class="op">(</span><span class="va">n_biphasic</span>, <span class="fl">0</span>, <span class="va">log_sd</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> k_m1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/Lognormal.html" class="external-link">rlnorm</a></span><span class="op">(</span><span class="va">n_biphasic</span>, <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">0.002</span><span class="op">)</span>, <span class="va">log_sd</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">ds_biphasic_mean</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="va">n_biphasic</span>,</span></span> +<span class="r-in"><span> <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">DFOP_SFO</span>, <span class="va">syn_biphasic_parms</span><span class="op">[</span><span class="va">i</span>, <span class="op">]</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, m1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>, <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="op">}</span></span></span> +<span class="r-in"><span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">123456L</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">ds_biphasic</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">ds_biphasic_mean</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">ds</span>,</span></span> +<span class="r-in"><span> sdfunc <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/MathFun.html" class="external-link">sqrt</a></span><span class="op">(</span><span class="va">err_1</span><span class="op">$</span><span class="va">const</span><span class="op">^</span><span class="fl">2</span> <span class="op">+</span> <span class="va">value</span><span class="op">^</span><span class="fl">2</span> <span class="op">*</span> <span class="va">err_1</span><span class="op">$</span><span class="va">prop</span><span class="op">^</span><span class="fl">2</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> n <span class="op">=</span> <span class="fl">1</span>, secondary <span class="op">=</span> <span class="st">"m1"</span><span class="op">)</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span></span></span> +<span class="r-in"><span><span class="op">}</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">f_mmkin</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"DFOP-SFO"</span> <span class="op">=</span> <span class="va">DFOP_SFO</span><span class="op">)</span>, <span class="va">ds_biphasic</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f_mixed</span> <span class="op"><-</span> <span class="fu">mixed</span><span class="op">(</span><span class="va">f_mmkin</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_mixed</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Kinetic model fitted by nonlinear regression to each dataset</span> +<span class="r-out co"><span class="r-pr">#></span> Structural model:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span> +<span class="r-out co"><span class="r-pr">#></span> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span> +<span class="r-out co"><span class="r-pr">#></span> * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_m1/dt = + f_parent_to_m1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g)</span> +<span class="r-out co"><span class="r-pr">#></span> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) *</span> +<span class="r-out co"><span class="r-pr">#></span> exp(-k2 * time))) * parent - k_m1 * m1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 271 observations of 2 variable(s) grouped in 8 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mmkin> object</span> +<span class="r-out co"><span class="r-pr">#></span> Status of individual fits:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model 1 2 3 4 5 6 7 8 </span> +<span class="r-out co"><span class="r-pr">#></span> DFOP-SFO OK OK OK OK OK C OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> C: Optimisation did not converge:</span> +<span class="r-out co"><span class="r-pr">#></span> iteration limit reached without convergence (10)</span> +<span class="r-out co"><span class="r-pr">#></span> OK: No warnings</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Mean fitted parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_m1 f_parent_qlogis log_k1 log_k2 </span> +<span class="r-out co"><span class="r-pr">#></span> 100.605312 -8.758664 -0.001917 -3.350887 -3.990017 </span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis </span> +<span class="r-out co"><span class="r-pr">#></span> -0.091167 </span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_mixed</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mixed-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mixed.mmkin.html b/docs/dev/reference/mixed.mmkin.html new file mode 100644 index 00000000..7b45f95d --- /dev/null +++ b/docs/dev/reference/mixed.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html"> + </head> +</html> + diff --git a/docs/dev/reference/mkin_long_to_wide.html b/docs/dev/reference/mkin_long_to_wide.html new file mode 100644 index 00000000..c8c748a4 --- /dev/null +++ b/docs/dev/reference/mkin_long_to_wide.html @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Convert a dataframe from long to wide format — mkin_long_to_wide • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Convert a dataframe from long to wide format — mkin_long_to_wide"><meta name="description" content="This function takes a dataframe in the long form, i.e. with a row for each +observed value, and converts it into a dataframe with one independent +variable and several dependent variables as columns."><meta property="og:description" content="This function takes a dataframe in the long form, i.e. with a row for each +observed value, and converts it into a dataframe with one independent +variable and several dependent variables as columns."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Convert a dataframe from long to wide format</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkin_long_to_wide.R" class="external-link"><code>R/mkin_long_to_wide.R</code></a></small> + <div class="d-none name"><code>mkin_long_to_wide.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function takes a dataframe in the long form, i.e. with a row for each +observed value, and converts it into a dataframe with one independent +variable and several dependent variables as columns.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkin_long_to_wide</span><span class="op">(</span><span class="va">long_data</span>, time <span class="op">=</span> <span class="st">"time"</span>, outtime <span class="op">=</span> <span class="st">"time"</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-long-data">long_data<a class="anchor" aria-label="anchor" href="#arg-long-data"></a></dt> +<dd><p>The dataframe must contain one variable called "time" with +the time values specified by the <code>time</code> argument, one column called +"name" with the grouping of the observed values, and finally one column of +observed values called "value".</p></dd> + + +<dt id="arg-time">time<a class="anchor" aria-label="anchor" href="#arg-time"></a></dt> +<dd><p>The name of the time variable in the long input data.</p></dd> + + +<dt id="arg-outtime">outtime<a class="anchor" aria-label="anchor" href="#arg-outtime"></a></dt> +<dd><p>The name of the time variable in the wide output data.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>Dataframe in wide format.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="fu">mkin_long_to_wide</span><span class="op">(</span><span class="va">FOCUS_2006_D</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time parent m1</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0 99.46 0.00</span> +<span class="r-out co"><span class="r-pr">#></span> 2 0 102.04 0.00</span> +<span class="r-out co"><span class="r-pr">#></span> 3 1 93.50 4.84</span> +<span class="r-out co"><span class="r-pr">#></span> 4 1 92.50 5.64</span> +<span class="r-out co"><span class="r-pr">#></span> 5 3 63.23 12.91</span> +<span class="r-out co"><span class="r-pr">#></span> 6 3 68.99 12.96</span> +<span class="r-out co"><span class="r-pr">#></span> 7 7 52.32 22.97</span> +<span class="r-out co"><span class="r-pr">#></span> 8 7 55.13 24.47</span> +<span class="r-out co"><span class="r-pr">#></span> 9 14 27.27 41.69</span> +<span class="r-out co"><span class="r-pr">#></span> 10 14 26.64 33.21</span> +<span class="r-out co"><span class="r-pr">#></span> 11 21 11.50 44.37</span> +<span class="r-out co"><span class="r-pr">#></span> 12 21 11.64 46.44</span> +<span class="r-out co"><span class="r-pr">#></span> 13 35 2.85 41.22</span> +<span class="r-out co"><span class="r-pr">#></span> 14 35 2.91 37.95</span> +<span class="r-out co"><span class="r-pr">#></span> 15 50 0.69 41.19</span> +<span class="r-out co"><span class="r-pr">#></span> 16 50 0.63 40.01</span> +<span class="r-out co"><span class="r-pr">#></span> 17 75 0.05 40.09</span> +<span class="r-out co"><span class="r-pr">#></span> 18 75 0.06 33.85</span> +<span class="r-out co"><span class="r-pr">#></span> 19 100 NA 31.04</span> +<span class="r-out co"><span class="r-pr">#></span> 20 100 NA 33.13</span> +<span class="r-out co"><span class="r-pr">#></span> 21 120 NA 25.15</span> +<span class="r-out co"><span class="r-pr">#></span> 22 120 NA 33.31</span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkin_wide_to_long.html b/docs/dev/reference/mkin_wide_to_long.html new file mode 100644 index 00000000..98a9e7e6 --- /dev/null +++ b/docs/dev/reference/mkin_wide_to_long.html @@ -0,0 +1,135 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Convert a dataframe with observations over time into long format — mkin_wide_to_long • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Convert a dataframe with observations over time into long format — mkin_wide_to_long"><meta name="description" content="This function simply takes a dataframe with one independent variable and +several dependent variable and converts it into the long form as required by +mkinfit."><meta property="og:description" content="This function simply takes a dataframe with one independent variable and +several dependent variable and converts it into the long form as required by +mkinfit."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Convert a dataframe with observations over time into long format</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkin_wide_to_long.R" class="external-link"><code>R/mkin_wide_to_long.R</code></a></small> + <div class="d-none name"><code>mkin_wide_to_long.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function simply takes a dataframe with one independent variable and +several dependent variable and converts it into the long form as required by +<code><a href="mkinfit.html">mkinfit</a></code>.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkin_wide_to_long</span><span class="op">(</span><span class="va">wide_data</span>, time <span class="op">=</span> <span class="st">"t"</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-wide-data">wide_data<a class="anchor" aria-label="anchor" href="#arg-wide-data"></a></dt> +<dd><p>The dataframe must contain one variable with the time +values specified by the <code>time</code> argument and usually more than one +column of observed values.</p></dd> + + +<dt id="arg-time">time<a class="anchor" aria-label="anchor" href="#arg-time"></a></dt> +<dd><p>The name of the time variable.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>Dataframe in long format as needed for <code><a href="mkinfit.html">mkinfit</a></code>.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">wide</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>t <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>,<span class="fl">2</span>,<span class="fl">3</span><span class="op">)</span>, x <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>,<span class="fl">4</span>,<span class="fl">7</span><span class="op">)</span>, y <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">3</span>,<span class="fl">4</span>,<span class="fl">5</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">mkin_wide_to_long</span><span class="op">(</span><span class="va">wide</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> name time value</span> +<span class="r-out co"><span class="r-pr">#></span> 1 x 1 1</span> +<span class="r-out co"><span class="r-pr">#></span> 2 x 2 4</span> +<span class="r-out co"><span class="r-pr">#></span> 3 x 3 7</span> +<span class="r-out co"><span class="r-pr">#></span> 4 y 1 3</span> +<span class="r-out co"><span class="r-pr">#></span> 5 y 2 4</span> +<span class="r-out co"><span class="r-pr">#></span> 6 y 3 5</span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinds.html b/docs/dev/reference/mkinds.html new file mode 100644 index 00000000..a0387d78 --- /dev/null +++ b/docs/dev/reference/mkinds.html @@ -0,0 +1,219 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>A dataset class for mkin — mkinds • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="A dataset class for mkin — mkinds"><meta name="description" content="At the moment this dataset class is hardly used in mkin. For example, +mkinfit does not take mkinds datasets as argument, but works with dataframes +such as the on contained in the data field of mkinds objects. Some datasets +provided by this package come as mkinds objects nevertheless."><meta property="og:description" content="At the moment this dataset class is hardly used in mkin. For example, +mkinfit does not take mkinds datasets as argument, but works with dataframes +such as the on contained in the data field of mkinds objects. Some datasets +provided by this package come as mkinds objects nevertheless."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>A dataset class for mkin</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinds.R" class="external-link"><code>R/mkinds.R</code></a></small> + <div class="d-none name"><code>mkinds.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>At the moment this dataset class is hardly used in mkin. For example, +mkinfit does not take mkinds datasets as argument, but works with dataframes +such as the on contained in the data field of mkinds objects. Some datasets +provided by this package come as mkinds objects nevertheless.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinds'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, data <span class="op">=</span> <span class="cn">FALSE</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An mkinds object.</p></dd> + + +<dt id="arg-data">data<a class="anchor" aria-label="anchor" href="#arg-data"></a></dt> +<dd><p>Should the data be printed?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="public-fields">Public fields<a class="anchor" aria-label="anchor" href="#public-fields"></a></h2> + <p></p><div class="r6-fields"><dl><dt><code>title</code></dt> +<dd><p>A full title for the dataset</p></dd> + + +<dt><code>sampling_times</code></dt> +<dd><p>The sampling times</p></dd> + + +<dt><code>time_unit</code></dt> +<dd><p>The time unit</p></dd> + + +<dt><code>observed</code></dt> +<dd><p>Names of the observed variables</p></dd> + + +<dt><code>unit</code></dt> +<dd><p>The unit of the observations</p></dd> + + +<dt><code>replicates</code></dt> +<dd><p>The maximum number of replicates per sampling time</p></dd> + + +<dt><code>data</code></dt> +<dd><p>A data frame with at least the columns name, time +and value in order to be compatible with mkinfit</p></dd> + + +</dl><p></p></div> + </div> + <div class="section level2"> + <h2 id="methods">Methods<a class="anchor" aria-label="anchor" href="#methods"></a></h2> + +<div class="section"> +<h3 id="public-methods">Public methods<a class="anchor" aria-label="anchor" href="#public-methods"></a></h3> + +<ul><li><p><a href="#method-mkinds-new"><code>mkinds$new()</code></a></p></li> +<li><p><a href="#method-mkinds-clone"><code>mkinds$clone()</code></a></p></li> +</ul></div><p></p><hr><a id="method-mkinds-new"></a><div class="section"> +<h3 id="method-new-">Method <code>new()</code><a class="anchor" aria-label="anchor" href="#method-new-"></a></h3> +<p>Create a new mkinds object</p><div class="section"> +<h4 id="usage">Usage<a class="anchor" aria-label="anchor" href="#usage"></a></h4> +<p></p><div class="r"><div class="sourceCode"><pre><code><span><span class="va"><a href="../reference/mkinds.html">mkinds</a></span><span class="op">$</span><span class="fu">new</span><span class="op">(</span>title <span class="op">=</span> <span class="st">""</span>, <span class="va">data</span>, time_unit <span class="op">=</span> <span class="cn">NA</span>, unit <span class="op">=</span> <span class="cn">NA</span><span class="op">)</span></span></code></pre></div><p></p></div> +</div> + +<div class="section"> +<h4 id="arguments-1">Arguments<a class="anchor" aria-label="anchor" href="#arguments-1"></a></h4> +<p></p><div class="arguments"><dl><dt><code>title</code></dt> +<dd><p>The dataset title</p></dd> + + +<dt><code>data</code></dt> +<dd><p>The data</p></dd> + + +<dt><code>time_unit</code></dt> +<dd><p>The time unit</p></dd> + + +<dt><code>unit</code></dt> +<dd><p>The unit of the observations</p></dd> + + +</dl><p></p></div> +</div> + +</div><p></p><hr><a id="method-mkinds-clone"></a><div class="section"> +<h3 id="method-clone-">Method <code>clone()</code><a class="anchor" aria-label="anchor" href="#method-clone-"></a></h3> +<p>The objects of this class are cloneable with this method.</p><div class="section"> +<h4 id="usage-1">Usage<a class="anchor" aria-label="anchor" href="#usage-1"></a></h4> +<p></p><div class="r"><div class="sourceCode"><pre><code><span><span class="va">mkinds</span><span class="op">$</span><span class="fu">clone</span><span class="op">(</span>deep <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div><p></p></div> +</div> + +<div class="section"> +<h4 id="arguments-2">Arguments<a class="anchor" aria-label="anchor" href="#arguments-2"></a></h4> +<p></p><div class="arguments"><dl><dt><code>deep</code></dt> +<dd><p>Whether to make a deep clone.</p></dd> + + +</dl><p></p></div> +</div> + +</div> + + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">mds</span> <span class="op"><-</span> <span class="va">mkinds</span><span class="op">$</span><span class="fu">new</span><span class="op">(</span><span class="st">"FOCUS A"</span>, <span class="va">FOCUS_2006_A</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">mds</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: FOCUS A </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 3, 7, 14, 30, 62, 90, 118 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 1 replicates</span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkindsg.html b/docs/dev/reference/mkindsg.html new file mode 100644 index 00000000..fec3f4be --- /dev/null +++ b/docs/dev/reference/mkindsg.html @@ -0,0 +1,407 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>A class for dataset groups for mkin — mkindsg • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="A class for dataset groups for mkin — mkindsg"><meta name="description" content="A container for working with datasets that share at least one compound, +so that combined evaluations are desirable. +Time normalisation factors are initialised with a value of 1 for each +dataset if no data are supplied."><meta property="og:description" content="A container for working with datasets that share at least one compound, +so that combined evaluations are desirable. +Time normalisation factors are initialised with a value of 1 for each +dataset if no data are supplied."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>A class for dataset groups for mkin</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinds.R" class="external-link"><code>R/mkinds.R</code></a></small> + <div class="d-none name"><code>mkindsg.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>A container for working with datasets that share at least one compound, +so that combined evaluations are desirable.</p> +<p>Time normalisation factors are initialised with a value of 1 for each +dataset if no data are supplied.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkindsg'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, data <span class="op">=</span> <span class="cn">FALSE</span>, verbose <span class="op">=</span> <span class="va">data</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An mkindsg object.</p></dd> + + +<dt id="arg-data">data<a class="anchor" aria-label="anchor" href="#arg-data"></a></dt> +<dd><p>Should the mkinds objects be printed with their data?</p></dd> + + +<dt id="arg-verbose">verbose<a class="anchor" aria-label="anchor" href="#arg-verbose"></a></dt> +<dd><p>Should the mkinds objects be printed?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="public-fields">Public fields<a class="anchor" aria-label="anchor" href="#public-fields"></a></h2> + <p></p><div class="r6-fields"><dl><dt><code>title</code></dt> +<dd><p>A title for the dataset group</p></dd> + + +<dt><code>ds</code></dt> +<dd><p>A list of mkinds objects</p></dd> + + +<dt><code>observed_n</code></dt> +<dd><p>Occurrence counts of compounds in datasets</p></dd> + + +<dt><code>f_time_norm</code></dt> +<dd><p>Time normalisation factors</p></dd> + + +<dt><code>meta</code></dt> +<dd><p>A data frame with a row for each dataset, +containing additional information in the form +of categorical data (factors) or numerical data +(e.g. temperature, moisture, +or covariates like soil pH).</p></dd> + + +</dl><p></p></div> + </div> + <div class="section level2"> + <h2 id="methods">Methods<a class="anchor" aria-label="anchor" href="#methods"></a></h2> + +<div class="section"> +<h3 id="public-methods">Public methods<a class="anchor" aria-label="anchor" href="#public-methods"></a></h3> + +<ul><li><p><a href="#method-mkindsg-new"><code>mkindsg$new()</code></a></p></li> +<li><p><a href="#method-mkindsg-clone"><code>mkindsg$clone()</code></a></p></li> +</ul></div><p></p><hr><a id="method-mkindsg-new"></a><div class="section"> +<h3 id="method-new-">Method <code>new()</code><a class="anchor" aria-label="anchor" href="#method-new-"></a></h3> +<p>Create a new mkindsg object</p><div class="section"> +<h4 id="usage">Usage<a class="anchor" aria-label="anchor" href="#usage"></a></h4> +<p></p><div class="r"><div class="sourceCode"><pre><code><span><span class="va"><a href="../reference/mkindsg.html">mkindsg</a></span><span class="op">$</span><span class="fu">new</span><span class="op">(</span>title <span class="op">=</span> <span class="st">""</span>, <span class="va">ds</span>, f_time_norm <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">ds</span><span class="op">)</span><span class="op">)</span>, <span class="va">meta</span><span class="op">)</span></span></code></pre></div><p></p></div> +</div> + +<div class="section"> +<h4 id="arguments-1">Arguments<a class="anchor" aria-label="anchor" href="#arguments-1"></a></h4> +<p></p><div class="arguments"><dl><dt><code>title</code></dt> +<dd><p>The title</p></dd> + + +<dt><code>ds</code></dt> +<dd><p>A list of mkinds objects</p></dd> + + +<dt><code>f_time_norm</code></dt> +<dd><p>Time normalisation factors</p></dd> + + +<dt><code>meta</code></dt> +<dd><p>The meta data</p></dd> + + +</dl><p></p></div> +</div> + +</div><p></p><hr><a id="method-mkindsg-clone"></a><div class="section"> +<h3 id="method-clone-">Method <code>clone()</code><a class="anchor" aria-label="anchor" href="#method-clone-"></a></h3> +<p>The objects of this class are cloneable with this method.</p><div class="section"> +<h4 id="usage-1">Usage<a class="anchor" aria-label="anchor" href="#usage-1"></a></h4> +<p></p><div class="r"><div class="sourceCode"><pre><code><span><span class="va">mkindsg</span><span class="op">$</span><span class="fu">clone</span><span class="op">(</span>deep <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div><p></p></div> +</div> + +<div class="section"> +<h4 id="arguments-2">Arguments<a class="anchor" aria-label="anchor" href="#arguments-2"></a></h4> +<p></p><div class="arguments"><dl><dt><code>deep</code></dt> +<dd><p>Whether to make a deep clone.</p></dd> + + +</dl><p></p></div> +</div> + +</div> + + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">mdsg</span> <span class="op"><-</span> <span class="va">mkindsg</span><span class="op">$</span><span class="fu">new</span><span class="op">(</span><span class="st">"Experimental X"</span>, <span class="va">experimental_data_for_UBA_2019</span><span class="op">[</span><span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">mdsg</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkindsg> holding 5 mkinds objects</span> +<span class="r-out co"><span class="r-pr">#></span> Title $title: Experimental X </span> +<span class="r-out co"><span class="r-pr">#></span> Occurrence of observed compounds $observed_n:</span> +<span class="r-out co"><span class="r-pr">#></span> parent A1 </span> +<span class="r-out co"><span class="r-pr">#></span> 5 5 </span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">mdsg</span>, verbose <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkindsg> holding 5 mkinds objects</span> +<span class="r-out co"><span class="r-pr">#></span> Title $title: Experimental X </span> +<span class="r-out co"><span class="r-pr">#></span> Occurrence of observed compounds $observed_n:</span> +<span class="r-out co"><span class="r-pr">#></span> parent A1 </span> +<span class="r-out co"><span class="r-pr">#></span> 5 5 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Datasets $ds:</span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 6 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 3, 6, 10, 20, 34, 55, 90, 112, 132 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 7 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 3, 7, 14, 30, 60, 90, 120, 180 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 8 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 1, 3, 8, 14, 27, 48, 70 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 9 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 1, 3, 8, 14, 27, 48, 70, 91, 120 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 10 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 8, 14, 21, 41, 63, 91, 120 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">mdsg</span>, verbose <span class="op">=</span> <span class="cn">TRUE</span>, data <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkindsg> holding 5 mkinds objects</span> +<span class="r-out co"><span class="r-pr">#></span> Title $title: Experimental X </span> +<span class="r-out co"><span class="r-pr">#></span> Occurrence of observed compounds $observed_n:</span> +<span class="r-out co"><span class="r-pr">#></span> parent A1 </span> +<span class="r-out co"><span class="r-pr">#></span> 5 5 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Datasets $ds:</span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 6 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 3, 6, 10, 20, 34, 55, 90, 112, 132 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> time parent A1</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0 97.2 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 2 0 96.4 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 3 3 71.1 4.3</span> +<span class="r-out co"><span class="r-pr">#></span> 4 3 69.2 4.6</span> +<span class="r-out co"><span class="r-pr">#></span> 5 6 58.1 7.0</span> +<span class="r-out co"><span class="r-pr">#></span> 6 6 56.6 7.2</span> +<span class="r-out co"><span class="r-pr">#></span> 7 10 44.4 8.2</span> +<span class="r-out co"><span class="r-pr">#></span> 8 10 43.4 8.0</span> +<span class="r-out co"><span class="r-pr">#></span> 9 20 33.3 11.0</span> +<span class="r-out co"><span class="r-pr">#></span> 10 20 29.2 13.7</span> +<span class="r-out co"><span class="r-pr">#></span> 11 34 17.6 11.5</span> +<span class="r-out co"><span class="r-pr">#></span> 12 34 18.0 12.7</span> +<span class="r-out co"><span class="r-pr">#></span> 13 55 10.5 14.9</span> +<span class="r-out co"><span class="r-pr">#></span> 14 55 9.3 14.5</span> +<span class="r-out co"><span class="r-pr">#></span> 15 90 4.5 12.1</span> +<span class="r-out co"><span class="r-pr">#></span> 16 90 4.7 12.3</span> +<span class="r-out co"><span class="r-pr">#></span> 17 112 3.0 9.9</span> +<span class="r-out co"><span class="r-pr">#></span> 18 112 3.4 10.2</span> +<span class="r-out co"><span class="r-pr">#></span> 19 132 2.3 8.8</span> +<span class="r-out co"><span class="r-pr">#></span> 20 132 2.7 7.8</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 7 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 3, 7, 14, 30, 60, 90, 120, 180 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> time parent A1</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0 93.6 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 2 0 92.3 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 3 3 87.0 3.9</span> +<span class="r-out co"><span class="r-pr">#></span> 4 3 82.2 3.1</span> +<span class="r-out co"><span class="r-pr">#></span> 5 7 74.0 6.9</span> +<span class="r-out co"><span class="r-pr">#></span> 6 7 73.9 6.6</span> +<span class="r-out co"><span class="r-pr">#></span> 7 14 64.2 10.4</span> +<span class="r-out co"><span class="r-pr">#></span> 8 14 69.5 8.3</span> +<span class="r-out co"><span class="r-pr">#></span> 9 30 54.0 14.4</span> +<span class="r-out co"><span class="r-pr">#></span> 10 30 54.6 13.7</span> +<span class="r-out co"><span class="r-pr">#></span> 11 60 41.1 22.1</span> +<span class="r-out co"><span class="r-pr">#></span> 12 60 38.4 22.3</span> +<span class="r-out co"><span class="r-pr">#></span> 13 90 32.5 27.5</span> +<span class="r-out co"><span class="r-pr">#></span> 14 90 35.5 25.4</span> +<span class="r-out co"><span class="r-pr">#></span> 15 120 28.1 28.0</span> +<span class="r-out co"><span class="r-pr">#></span> 16 120 29.0 26.6</span> +<span class="r-out co"><span class="r-pr">#></span> 17 180 26.5 25.8</span> +<span class="r-out co"><span class="r-pr">#></span> 18 180 27.6 25.3</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 8 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 1, 3, 8, 14, 27, 48, 70 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> time parent A1</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0 91.9 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 2 0 90.8 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 3 1 64.9 9.6</span> +<span class="r-out co"><span class="r-pr">#></span> 4 1 66.2 7.7</span> +<span class="r-out co"><span class="r-pr">#></span> 5 3 43.5 15.0</span> +<span class="r-out co"><span class="r-pr">#></span> 6 3 44.1 15.1</span> +<span class="r-out co"><span class="r-pr">#></span> 7 8 18.3 21.2</span> +<span class="r-out co"><span class="r-pr">#></span> 8 8 18.1 21.1</span> +<span class="r-out co"><span class="r-pr">#></span> 9 14 10.2 19.7</span> +<span class="r-out co"><span class="r-pr">#></span> 10 14 10.8 18.9</span> +<span class="r-out co"><span class="r-pr">#></span> 11 27 4.9 17.5</span> +<span class="r-out co"><span class="r-pr">#></span> 12 27 3.3 15.9</span> +<span class="r-out co"><span class="r-pr">#></span> 13 48 1.6 9.5</span> +<span class="r-out co"><span class="r-pr">#></span> 14 48 1.5 9.8</span> +<span class="r-out co"><span class="r-pr">#></span> 15 70 1.1 6.2</span> +<span class="r-out co"><span class="r-pr">#></span> 16 70 0.9 6.1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 9 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 1, 3, 8, 14, 27, 48, 70, 91, 120 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> time parent A1</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0 99.8 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 2 0 98.3 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 3 1 77.1 4.2</span> +<span class="r-out co"><span class="r-pr">#></span> 4 1 77.2 3.9</span> +<span class="r-out co"><span class="r-pr">#></span> 5 3 59.0 7.4</span> +<span class="r-out co"><span class="r-pr">#></span> 6 3 58.1 7.9</span> +<span class="r-out co"><span class="r-pr">#></span> 7 8 27.4 14.5</span> +<span class="r-out co"><span class="r-pr">#></span> 8 8 29.2 13.7</span> +<span class="r-out co"><span class="r-pr">#></span> 9 14 19.1 14.2</span> +<span class="r-out co"><span class="r-pr">#></span> 10 14 29.6 12.2</span> +<span class="r-out co"><span class="r-pr">#></span> 11 27 10.1 13.7</span> +<span class="r-out co"><span class="r-pr">#></span> 12 27 18.2 13.2</span> +<span class="r-out co"><span class="r-pr">#></span> 13 48 4.5 13.6</span> +<span class="r-out co"><span class="r-pr">#></span> 14 48 9.1 15.4</span> +<span class="r-out co"><span class="r-pr">#></span> 15 70 2.3 10.4</span> +<span class="r-out co"><span class="r-pr">#></span> 16 70 2.9 11.6</span> +<span class="r-out co"><span class="r-pr">#></span> 17 91 2.0 10.0</span> +<span class="r-out co"><span class="r-pr">#></span> 18 91 1.8 9.5</span> +<span class="r-out co"><span class="r-pr">#></span> 19 120 2.0 9.1</span> +<span class="r-out co"><span class="r-pr">#></span> 20 120 2.2 9.0</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> <mkinds> with $title: Soil 10 </span> +<span class="r-out co"><span class="r-pr">#></span> Observed compounds $observed: parent, A1 </span> +<span class="r-out co"><span class="r-pr">#></span> Sampling times $sampling_times:</span> +<span class="r-out co"><span class="r-pr">#></span> 0, 8, 14, 21, 41, 63, 91, 120 </span> +<span class="r-out co"><span class="r-pr">#></span> With a maximum of 2 replicates</span> +<span class="r-out co"><span class="r-pr">#></span> Time unit: days </span> +<span class="r-out co"><span class="r-pr">#></span> Observation unit: \%AR </span> +<span class="r-out co"><span class="r-pr">#></span> time parent A1</span> +<span class="r-out co"><span class="r-pr">#></span> 1 0 96.1 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 2 0 94.3 NA</span> +<span class="r-out co"><span class="r-pr">#></span> 3 8 73.9 3.3</span> +<span class="r-out co"><span class="r-pr">#></span> 4 8 73.9 3.4</span> +<span class="r-out co"><span class="r-pr">#></span> 5 14 69.4 3.9</span> +<span class="r-out co"><span class="r-pr">#></span> 6 14 73.1 2.9</span> +<span class="r-out co"><span class="r-pr">#></span> 7 21 65.6 6.4</span> +<span class="r-out co"><span class="r-pr">#></span> 8 21 65.3 7.2</span> +<span class="r-out co"><span class="r-pr">#></span> 9 41 55.9 9.1</span> +<span class="r-out co"><span class="r-pr">#></span> 10 41 54.4 8.5</span> +<span class="r-out co"><span class="r-pr">#></span> 11 63 47.0 11.7</span> +<span class="r-out co"><span class="r-pr">#></span> 12 63 49.3 12.0</span> +<span class="r-out co"><span class="r-pr">#></span> 13 91 44.7 13.3</span> +<span class="r-out co"><span class="r-pr">#></span> 14 91 46.7 13.2</span> +<span class="r-out co"><span class="r-pr">#></span> 15 120 42.1 14.3</span> +<span class="r-out co"><span class="r-pr">#></span> 16 120 41.3 12.1</span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinerrmin.html b/docs/dev/reference/mkinerrmin.html new file mode 100644 index 00000000..14e4e187 --- /dev/null +++ b/docs/dev/reference/mkinerrmin.html @@ -0,0 +1,163 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Calculate the minimum error to assume in order to pass the variance test — mkinerrmin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Calculate the minimum error to assume in order to pass the variance test — mkinerrmin"><meta name="description" content="This function finds the smallest relative error still resulting in passing +the chi-squared test as defined in the FOCUS kinetics report from 2006."><meta property="og:description" content="This function finds the smallest relative error still resulting in passing +the chi-squared test as defined in the FOCUS kinetics report from 2006."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Calculate the minimum error to assume in order to pass the variance test</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinerrmin.R" class="external-link"><code>R/mkinerrmin.R</code></a></small> + <div class="d-none name"><code>mkinerrmin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function finds the smallest relative error still resulting in passing +the chi-squared test as defined in the FOCUS kinetics report from 2006.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkinerrmin</span><span class="op">(</span><span class="va">fit</span>, alpha <span class="op">=</span> <span class="fl">0.05</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-fit">fit<a class="anchor" aria-label="anchor" href="#arg-fit"></a></dt> +<dd><p>an object of class <code><a href="mkinfit.html">mkinfit</a></code>.</p></dd> + + +<dt id="arg-alpha">alpha<a class="anchor" aria-label="anchor" href="#arg-alpha"></a></dt> +<dd><p>The confidence level chosen for the chi-squared test.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A dataframe with the following components:</p> +<dl><dt>err.min</dt> +<dd><p>The +relative error, expressed as a fraction.</p></dd> + <dt>n.optim</dt> +<dd><p>The number of +optimised parameters attributed to the data series.</p></dd> + <dt>df</dt> +<dd><p>The number of +remaining degrees of freedom for the chi2 error level calculations. Note +that mean values are used for the chi2 statistic and therefore every time +point with observed values in the series only counts one time.</p></dd> +</dl><p>The +dataframe has one row for the total dataset and one further row for each +observed state variable in the model.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>This function is used internally by <code><a href="summary.mkinfit.html">summary.mkinfit</a></code>.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in EU +Registration” Report of the FOCUS Work Group on Degradation Kinetics, EC +Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">fit_FOCUS_D</span> <span class="op">=</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Round.html" class="external-link">round</a></span><span class="op">(</span><span class="fu">mkinerrmin</span><span class="op">(</span><span class="va">fit_FOCUS_D</span><span class="op">)</span>, <span class="fl">4</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> err.min n.optim df</span> +<span class="r-out co"><span class="r-pr">#></span> All data 0.0640 4 15</span> +<span class="r-out co"><span class="r-pr">#></span> parent 0.0646 2 7</span> +<span class="r-out co"><span class="r-pr">#></span> m1 0.0469 2 8</span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">fit_FOCUS_E</span> <span class="op">=</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_2006_E</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/Round.html" class="external-link">round</a></span><span class="op">(</span><span class="fu">mkinerrmin</span><span class="op">(</span><span class="va">fit_FOCUS_E</span><span class="op">)</span>, <span class="fl">4</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> err.min n.optim df</span> +<span class="r-out co"><span class="r-pr">#></span> All data 0.1544 4 13</span> +<span class="r-out co"><span class="r-pr">#></span> parent 0.1659 2 7</span> +<span class="r-out co"><span class="r-pr">#></span> m1 0.1095 2 6</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinerrplot-1.png b/docs/dev/reference/mkinerrplot-1.png Binary files differnew file mode 100644 index 00000000..03a054c8 --- /dev/null +++ b/docs/dev/reference/mkinerrplot-1.png diff --git a/docs/dev/reference/mkinerrplot.html b/docs/dev/reference/mkinerrplot.html new file mode 100644 index 00000000..01adc052 --- /dev/null +++ b/docs/dev/reference/mkinerrplot.html @@ -0,0 +1,201 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Function to plot squared residuals and the error model for an mkin object — mkinerrplot • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Function to plot squared residuals and the error model for an mkin object — mkinerrplot"><meta name="description" content="This function plots the squared residuals for the specified subset of the +observed variables from an mkinfit object. In addition, one or more dashed +line(s) show the fitted error model. A combined plot of the fitted model +and this error model plot can be obtained with plot.mkinfit +using the argument show_errplot = TRUE."><meta property="og:description" content="This function plots the squared residuals for the specified subset of the +observed variables from an mkinfit object. In addition, one or more dashed +line(s) show the fitted error model. A combined plot of the fitted model +and this error model plot can be obtained with plot.mkinfit +using the argument show_errplot = TRUE."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Function to plot squared residuals and the error model for an mkin object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinerrplot.R" class="external-link"><code>R/mkinerrplot.R</code></a></small> + <div class="d-none name"><code>mkinerrplot.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function plots the squared residuals for the specified subset of the +observed variables from an mkinfit object. In addition, one or more dashed +line(s) show the fitted error model. A combined plot of the fitted model +and this error model plot can be obtained with <code><a href="plot.mkinfit.html">plot.mkinfit</a></code> +using the argument <code>show_errplot = TRUE</code>.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkinerrplot</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> obs_vars <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">object</span><span class="op">$</span><span class="va">mkinmod</span><span class="op">$</span><span class="va">map</span><span class="op">)</span>,</span> +<span> xlim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1.1</span> <span class="op">*</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="va">object</span><span class="op">$</span><span class="va">data</span><span class="op">$</span><span class="va">predicted</span><span class="op">)</span><span class="op">)</span>,</span> +<span> xlab <span class="op">=</span> <span class="st">"Predicted"</span>,</span> +<span> ylab <span class="op">=</span> <span class="st">"Squared residual"</span>,</span> +<span> maxy <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> legend <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> lpos <span class="op">=</span> <span class="st">"topright"</span>,</span> +<span> col_obs <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> pch_obs <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> frame <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>A fit represented in an <code><a href="mkinfit.html">mkinfit</a></code> object.</p></dd> + + +<dt id="arg-obs-vars">obs_vars<a class="anchor" aria-label="anchor" href="#arg-obs-vars"></a></dt> +<dd><p>A character vector of names of the observed variables for +which residuals should be plotted. Defaults to all observed variables in +the model</p></dd> + + +<dt id="arg-xlim">xlim<a class="anchor" aria-label="anchor" href="#arg-xlim"></a></dt> +<dd><p>plot range in x direction.</p></dd> + + +<dt id="arg-xlab">xlab<a class="anchor" aria-label="anchor" href="#arg-xlab"></a></dt> +<dd><p>Label for the x axis.</p></dd> + + +<dt id="arg-ylab">ylab<a class="anchor" aria-label="anchor" href="#arg-ylab"></a></dt> +<dd><p>Label for the y axis.</p></dd> + + +<dt id="arg-maxy">maxy<a class="anchor" aria-label="anchor" href="#arg-maxy"></a></dt> +<dd><p>Maximum value of the residuals. This is used for the scaling of +the y axis and defaults to "auto".</p></dd> + + +<dt id="arg-legend">legend<a class="anchor" aria-label="anchor" href="#arg-legend"></a></dt> +<dd><p>Should a legend be plotted?</p></dd> + + +<dt id="arg-lpos">lpos<a class="anchor" aria-label="anchor" href="#arg-lpos"></a></dt> +<dd><p>Where should the legend be placed? Default is "topright". Will +be passed on to <code><a href="https://rdrr.io/r/graphics/legend.html" class="external-link">legend</a></code>.</p></dd> + + +<dt id="arg-col-obs">col_obs<a class="anchor" aria-label="anchor" href="#arg-col-obs"></a></dt> +<dd><p>Colors for the observed variables.</p></dd> + + +<dt id="arg-pch-obs">pch_obs<a class="anchor" aria-label="anchor" href="#arg-pch-obs"></a></dt> +<dd><p>Symbols to be used for the observed variables.</p></dd> + + +<dt id="arg-frame">frame<a class="anchor" aria-label="anchor" href="#arg-frame"></a></dt> +<dd><p>Should a frame be drawn around the plots?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>further arguments passed to <code><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>Nothing is returned by this function, as it is called for its side +effect, namely to produce a plot.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><code><a href="mkinplot.html">mkinplot</a></code>, for a way to plot the data and the fitted +lines of the mkinfit object.</p></div> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">model</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>, m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">model</span>, <span class="va">FOCUS_2006_D</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span><span class="fu">mkinerrplot</span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mkinerrplot-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinfit-1.png b/docs/dev/reference/mkinfit-1.png Binary files differnew file mode 100644 index 00000000..77f6e65c --- /dev/null +++ b/docs/dev/reference/mkinfit-1.png diff --git a/docs/dev/reference/mkinfit.html b/docs/dev/reference/mkinfit.html new file mode 100644 index 00000000..1c84b9b2 --- /dev/null +++ b/docs/dev/reference/mkinfit.html @@ -0,0 +1,679 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Fit a kinetic model to data with one or more state variables — mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Fit a kinetic model to data with one or more state variables — mkinfit"><meta name="description" content="This function maximises the likelihood of the observed data using the Port +algorithm stats::nlminb(), and the specified initial or fixed +parameters and starting values. In each step of the optimisation, the +kinetic model is solved using the function mkinpredict(), except +if an analytical solution is implemented, in which case the model is solved +using the degradation function in the mkinmod object. The +parameters of the selected error model are fitted simultaneously with the +degradation model parameters, as both of them are arguments of the +likelihood function."><meta property="og:description" content="This function maximises the likelihood of the observed data using the Port +algorithm stats::nlminb(), and the specified initial or fixed +parameters and starting values. In each step of the optimisation, the +kinetic model is solved using the function mkinpredict(), except +if an analytical solution is implemented, in which case the model is solved +using the degradation function in the mkinmod object. The +parameters of the selected error model are fitted simultaneously with the +degradation model parameters, as both of them are arguments of the +likelihood function."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Fit a kinetic model to data with one or more state variables</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinfit.R" class="external-link"><code>R/mkinfit.R</code></a></small> + <div class="d-none name"><code>mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function maximises the likelihood of the observed data using the Port +algorithm <code><a href="https://rdrr.io/r/stats/nlminb.html" class="external-link">stats::nlminb()</a></code>, and the specified initial or fixed +parameters and starting values. In each step of the optimisation, the +kinetic model is solved using the function <code><a href="mkinpredict.html">mkinpredict()</a></code>, except +if an analytical solution is implemented, in which case the model is solved +using the degradation function in the <a href="mkinmod.html">mkinmod</a> object. The +parameters of the selected error model are fitted simultaneously with the +degradation model parameters, as both of them are arguments of the +likelihood function.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkinfit</span><span class="op">(</span></span> +<span> <span class="va">mkinmod</span>,</span> +<span> <span class="va">observed</span>,</span> +<span> parms.ini <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> state.ini <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> err.ini <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> fixed_parms <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> fixed_initials <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">mkinmod</span><span class="op">$</span><span class="va">diffs</span><span class="op">)</span><span class="op">[</span><span class="op">-</span><span class="fl">1</span><span class="op">]</span>,</span> +<span> from_max_mean <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> solution_type <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"auto"</span>, <span class="st">"analytical"</span>, <span class="st">"eigen"</span>, <span class="st">"deSolve"</span><span class="op">)</span>,</span> +<span> method.ode <span class="op">=</span> <span class="st">"lsoda"</span>,</span> +<span> use_compiled <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> control <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>eval.max <span class="op">=</span> <span class="fl">300</span>, iter.max <span class="op">=</span> <span class="fl">200</span><span class="op">)</span>,</span> +<span> transform_rates <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> transform_fractions <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> atol <span class="op">=</span> <span class="fl">1e-08</span>,</span> +<span> rtol <span class="op">=</span> <span class="fl">1e-10</span>,</span> +<span> error_model <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"const"</span>, <span class="st">"obs"</span>, <span class="st">"tc"</span><span class="op">)</span>,</span> +<span> error_model_algorithm <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"auto"</span>, <span class="st">"d_3"</span>, <span class="st">"direct"</span>, <span class="st">"twostep"</span>, <span class="st">"threestep"</span>, <span class="st">"fourstep"</span>,</span> +<span> <span class="st">"IRLS"</span>, <span class="st">"OLS"</span><span class="op">)</span>,</span> +<span> reweight.tol <span class="op">=</span> <span class="fl">1e-08</span>,</span> +<span> reweight.max.iter <span class="op">=</span> <span class="fl">10</span>,</span> +<span> trace_parms <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> test_residuals <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-mkinmod">mkinmod<a class="anchor" aria-label="anchor" href="#arg-mkinmod"></a></dt> +<dd><p>A list of class <a href="mkinmod.html">mkinmod</a>, containing the kinetic +model to be fitted to the data, or one of the shorthand names ("SFO", +"FOMC", "DFOP", "HS", "SFORB", "IORE"). If a shorthand name is given, a +parent only degradation model is generated for the variable with the +highest value in <code>observed</code>.</p></dd> + + +<dt id="arg-observed">observed<a class="anchor" aria-label="anchor" href="#arg-observed"></a></dt> +<dd><p>A dataframe or an object coercible to a dataframe +(e.g. a <code>tibble</code>) with the observed data. The first column called +"name" must contain the name of the observed variable for each data point. +The second column must contain the times of observation, named "time". +The third column must be named "value" and contain the observed values. +Zero values in the "value" column will be removed, with a warning, in +order to avoid problems with fitting the two-component error model. This +is not expected to be a problem, because in general, values of zero are +not observed in degradation data, because there is a lower limit of +detection.</p></dd> + + +<dt id="arg-parms-ini">parms.ini<a class="anchor" aria-label="anchor" href="#arg-parms-ini"></a></dt> +<dd><p>A named vector of initial values for the parameters, +including parameters to be optimised and potentially also fixed parameters +as indicated by <code>fixed_parms</code>. If set to "auto", initial values for +rate constants are set to default values. Using parameter names that are +not in the model gives an error.</p> +<p>It is possible to only specify a subset of the parameters that the model +needs. You can use the parameter lists "bparms.ode" from a previously +fitted model, which contains the differential equation parameters from +this model. This works nicely if the models are nested. An example is +given below.</p></dd> + + +<dt id="arg-state-ini">state.ini<a class="anchor" aria-label="anchor" href="#arg-state-ini"></a></dt> +<dd><p>A named vector of initial values for the state variables of +the model. In case the observed variables are represented by more than one +model variable, the names will differ from the names of the observed +variables (see <code>map</code> component of <a href="mkinmod.html">mkinmod</a>). The default +is to set the initial value of the first model variable to the mean of the +time zero values for the variable with the maximum observed value, and all +others to 0. If this variable has no time zero observations, its initial +value is set to 100.</p></dd> + + +<dt id="arg-err-ini">err.ini<a class="anchor" aria-label="anchor" href="#arg-err-ini"></a></dt> +<dd><p>A named vector of initial values for the error model +parameters to be optimised. If set to "auto", initial values are set to +default values. Otherwise, inital values for all error model parameters +must be given.</p></dd> + + +<dt id="arg-fixed-parms">fixed_parms<a class="anchor" aria-label="anchor" href="#arg-fixed-parms"></a></dt> +<dd><p>The names of parameters that should not be optimised but +rather kept at the values specified in <code>parms.ini</code>. Alternatively, +a named numeric vector of parameters to be fixed, regardless of the values +in parms.ini.</p></dd> + + +<dt id="arg-fixed-initials">fixed_initials<a class="anchor" aria-label="anchor" href="#arg-fixed-initials"></a></dt> +<dd><p>The names of model variables for which the initial +state at time 0 should be excluded from the optimisation. Defaults to all +state variables except for the first one.</p></dd> + + +<dt id="arg-from-max-mean">from_max_mean<a class="anchor" aria-label="anchor" href="#arg-from-max-mean"></a></dt> +<dd><p>If this is set to TRUE, and the model has only one +observed variable, then data before the time of the maximum observed value +(after averaging for each sampling time) are discarded, and this time is +subtracted from all remaining time values, so the time of the maximum +observed mean value is the new time zero.</p></dd> + + +<dt id="arg-solution-type">solution_type<a class="anchor" aria-label="anchor" href="#arg-solution-type"></a></dt> +<dd><p>If set to "eigen", the solution of the system of +differential equations is based on the spectral decomposition of the +coefficient matrix in cases that this is possible. If set to "deSolve", a +numerical <a href="https://rdrr.io/pkg/deSolve/man/ode.html" class="external-link">ode solver from package deSolve</a> is used. If +set to "analytical", an analytical solution of the model is used. This is +only implemented for relatively simple degradation models. The default is +"auto", which uses "analytical" if possible, otherwise "deSolve" if a +compiler is present, and "eigen" if no compiler is present and the model +can be expressed using eigenvalues and eigenvectors.</p></dd> + + +<dt id="arg-method-ode">method.ode<a class="anchor" aria-label="anchor" href="#arg-method-ode"></a></dt> +<dd><p>The solution method passed via <code><a href="mkinpredict.html">mkinpredict()</a></code> +to <code><a href="https://rdrr.io/pkg/deSolve/man/ode.html" class="external-link">deSolve::ode()</a></code> in case the solution type is "deSolve". The default +"lsoda" is performant, but sometimes fails to converge.</p></dd> + + +<dt id="arg-use-compiled">use_compiled<a class="anchor" aria-label="anchor" href="#arg-use-compiled"></a></dt> +<dd><p>If set to <code>FALSE</code>, no compiled version of the +<a href="mkinmod.html">mkinmod</a> model is used in the calls to <code><a href="mkinpredict.html">mkinpredict()</a></code> even if a compiled +version is present.</p></dd> + + +<dt id="arg-control">control<a class="anchor" aria-label="anchor" href="#arg-control"></a></dt> +<dd><p>A list of control arguments passed to <code><a href="https://rdrr.io/r/stats/nlminb.html" class="external-link">stats::nlminb()</a></code>.</p></dd> + + +<dt id="arg-transform-rates">transform_rates<a class="anchor" aria-label="anchor" href="#arg-transform-rates"></a></dt> +<dd><p>Boolean specifying if kinetic rate constants should +be transformed in the model specification used in the fitting for better +compliance with the assumption of normal distribution of the estimator. If +TRUE, also alpha and beta parameters of the FOMC model are +log-transformed, as well as k1 and k2 rate constants for the DFOP and HS +models and the break point tb of the HS model. If FALSE, zero is used as +a lower bound for the rates in the optimisation.</p></dd> + + +<dt id="arg-transform-fractions">transform_fractions<a class="anchor" aria-label="anchor" href="#arg-transform-fractions"></a></dt> +<dd><p>Boolean specifying if formation fractions +should be transformed in the model specification used in the fitting for +better compliance with the assumption of normal distribution of the +estimator. The default (TRUE) is to do transformations. If TRUE, +the g parameter of the DFOP model is also transformed. Transformations +are described in <a href="transform_odeparms.html">transform_odeparms</a>.</p></dd> + + +<dt id="arg-quiet">quiet<a class="anchor" aria-label="anchor" href="#arg-quiet"></a></dt> +<dd><p>Suppress printing out the current value of the negative +log-likelihood after each improvement?</p></dd> + + +<dt id="arg-atol">atol<a class="anchor" aria-label="anchor" href="#arg-atol"></a></dt> +<dd><p>Absolute error tolerance, passed to <code><a href="https://rdrr.io/pkg/deSolve/man/ode.html" class="external-link">deSolve::ode()</a></code>. Default +is 1e-8, which is lower than the default in the <code><a href="https://rdrr.io/pkg/deSolve/man/lsoda.html" class="external-link">deSolve::lsoda()</a></code> +function which is used per default.</p></dd> + + +<dt id="arg-rtol">rtol<a class="anchor" aria-label="anchor" href="#arg-rtol"></a></dt> +<dd><p>Absolute error tolerance, passed to <code><a href="https://rdrr.io/pkg/deSolve/man/ode.html" class="external-link">deSolve::ode()</a></code>. Default +is 1e-10, much lower than in <code><a href="https://rdrr.io/pkg/deSolve/man/lsoda.html" class="external-link">deSolve::lsoda()</a></code>.</p></dd> + + +<dt id="arg-error-model">error_model<a class="anchor" aria-label="anchor" href="#arg-error-model"></a></dt> +<dd><p>If the error model is "const", a constant standard +deviation is assumed.</p> +<p>If the error model is "obs", each observed variable is assumed to have its +own variance.</p> +<p>If the error model is "tc" (two-component error model), a two component +error model similar to the one described by Rocke and Lorenzato (1995) is +used for setting up the likelihood function. Note that this model +deviates from the model by Rocke and Lorenzato, as their model implies +that the errors follow a lognormal distribution for large values, not a +normal distribution as assumed by this method.</p></dd> + + +<dt id="arg-error-model-algorithm">error_model_algorithm<a class="anchor" aria-label="anchor" href="#arg-error-model-algorithm"></a></dt> +<dd><p>If "auto", the selected algorithm depends on +the error model. If the error model is "const", unweighted nonlinear +least squares fitting ("OLS") is selected. If the error model is "obs", or +"tc", the "d_3" algorithm is selected.</p> +<p>The algorithm "d_3" will directly minimize the negative log-likelihood +and independently also use the three step algorithm described below. +The fit with the higher likelihood is returned.</p> +<p>The algorithm "direct" will directly minimize the negative log-likelihood.</p> +<p>The algorithm "twostep" will minimize the negative log-likelihood after an +initial unweighted least squares optimisation step.</p> +<p>The algorithm "threestep" starts with unweighted least squares, then +optimizes only the error model using the degradation model parameters +found, and then minimizes the negative log-likelihood with free +degradation and error model parameters.</p> +<p>The algorithm "fourstep" starts with unweighted least squares, then +optimizes only the error model using the degradation model parameters +found, then optimizes the degradation model again with fixed error model +parameters, and finally minimizes the negative log-likelihood with free +degradation and error model parameters.</p> +<p>The algorithm "IRLS" (Iteratively Reweighted Least Squares) starts with +unweighted least squares, and then iterates optimization of the error +model parameters and subsequent optimization of the degradation model +using those error model parameters, until the error model parameters +converge.</p></dd> + + +<dt id="arg-reweight-tol">reweight.tol<a class="anchor" aria-label="anchor" href="#arg-reweight-tol"></a></dt> +<dd><p>Tolerance for the convergence criterion calculated from +the error model parameters in IRLS fits.</p></dd> + + +<dt id="arg-reweight-max-iter">reweight.max.iter<a class="anchor" aria-label="anchor" href="#arg-reweight-max-iter"></a></dt> +<dd><p>Maximum number of iterations in IRLS fits.</p></dd> + + +<dt id="arg-trace-parms">trace_parms<a class="anchor" aria-label="anchor" href="#arg-trace-parms"></a></dt> +<dd><p>Should a trace of the parameter values be listed?</p></dd> + + +<dt id="arg-test-residuals">test_residuals<a class="anchor" aria-label="anchor" href="#arg-test-residuals"></a></dt> +<dd><p>Should the residuals be tested for normal distribution?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further arguments that will be passed on to +<code><a href="https://rdrr.io/pkg/deSolve/man/ode.html" class="external-link">deSolve::ode()</a></code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A list with "mkinfit" in the class attribute.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>Per default, parameters in the kinetic models are internally transformed in +order to better satisfy the assumption of a normal distribution of their +estimators.</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>When using the "IORE" submodel for metabolites, fitting with +"transform_rates = TRUE" (the default) often leads to failures of the +numerical ODE solver. In this situation it may help to switch off the +internal rate transformation.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Rocke DM and Lorenzato S (1995) A two-component model +for measurement error in analytical chemistry. <em>Technometrics</em> 37(2), 176-184.</p> +<p>Ranke J and Meinecke S (2019) Error Models for the Kinetic Evaluation of Chemical +Degradation Data. <em>Environments</em> 6(12) 124 +<a href="https://doi.org/10.3390/environments6120124" class="external-link">doi:10.3390/environments6120124</a> +.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><a href="summary.mkinfit.html">summary.mkinfit</a>, <a href="plot.mkinfit.html">plot.mkinfit</a>, <a href="parms.html">parms</a> and <a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a>.</p> +<p>Comparisons of models fitted to the same data can be made using +<code><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></code> by virtue of the method <code><a href="logLik.mkinfit.html">logLik.mkinfit</a></code>.</p> +<p>Fitting of several models to several datasets in a single call to +<code><a href="mmkin.html">mmkin</a></code>.</p></div> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Use shorthand notation for parent only degradation</span></span></span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> mkin version used for fitting: 1.2.10 </span> +<span class="r-out co"><span class="r-pr">#></span> R version used for fitting: 4.4.2 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of fit: Fri Feb 14 07:30:02 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of summary: Fri Feb 14 07:30:02 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model predictions using solution type analytical </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted using 222 model solutions performed in 0.014 s</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error model: Constant variance </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error model algorithm: OLS </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for parameters to be optimised:</span> +<span class="r-out co"><span class="r-pr">#></span> value type</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 85.1 state</span> +<span class="r-out co"><span class="r-pr">#></span> alpha 1.0 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> beta 10.0 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for the transformed parameters actually optimised:</span> +<span class="r-out co"><span class="r-pr">#></span> value lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 85.100000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_alpha 0.000000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_beta 2.302585 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed parameter values:</span> +<span class="r-out co"><span class="r-pr">#></span> None</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Results:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 44.68652 45.47542 -18.34326</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Optimised, transformed parameters with symmetric confidence intervals:</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 85.87000 1.8070 81.23000 90.5200</span> +<span class="r-out co"><span class="r-pr">#></span> log_alpha 0.05192 0.1353 -0.29580 0.3996</span> +<span class="r-out co"><span class="r-pr">#></span> log_beta 0.65100 0.2287 0.06315 1.2390</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.85700 0.4378 0.73200 2.9830</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Parameter correlation:</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_alpha log_beta sigma</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 1.000e+00 -1.565e-01 -3.142e-01 4.681e-08</span> +<span class="r-out co"><span class="r-pr">#></span> log_alpha -1.565e-01 1.000e+00 9.564e-01 1.013e-07</span> +<span class="r-out co"><span class="r-pr">#></span> log_beta -3.142e-01 9.564e-01 1.000e+00 8.637e-08</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 4.681e-08 1.013e-07 8.637e-08 1.000e+00</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Backtransformed parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> Confidence intervals for internally transformed parameters are asymmetric.</span> +<span class="r-out co"><span class="r-pr">#></span> t-test (unrealistically) based on the assumption of normal distribution</span> +<span class="r-out co"><span class="r-pr">#></span> for estimators of untransformed parameters.</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate t value Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 85.870 47.530 3.893e-08 81.2300 90.520</span> +<span class="r-out co"><span class="r-pr">#></span> alpha 1.053 7.393 3.562e-04 0.7439 1.491</span> +<span class="r-out co"><span class="r-pr">#></span> beta 1.917 4.373 3.601e-03 1.0650 3.451</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.857 4.243 4.074e-03 0.7320 2.983</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> FOCUS Chi2 error levels in percent:</span> +<span class="r-out co"><span class="r-pr">#></span> err.min n.optim df</span> +<span class="r-out co"><span class="r-pr">#></span> All data 6.657 3 6</span> +<span class="r-out co"><span class="r-pr">#></span> parent 6.657 3 6</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Estimated disappearance times:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back</span> +<span class="r-out co"><span class="r-pr">#></span> parent 1.785 15.15 4.56</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> time variable observed predicted residual</span> +<span class="r-out co"><span class="r-pr">#></span> 0 parent 85.1 85.875 -0.7749</span> +<span class="r-out co"><span class="r-pr">#></span> 1 parent 57.9 55.191 2.7091</span> +<span class="r-out co"><span class="r-pr">#></span> 3 parent 29.9 31.845 -1.9452</span> +<span class="r-out co"><span class="r-pr">#></span> 7 parent 14.6 17.012 -2.4124</span> +<span class="r-out co"><span class="r-pr">#></span> 14 parent 9.7 9.241 0.4590</span> +<span class="r-out co"><span class="r-pr">#></span> 28 parent 6.6 4.754 1.8460</span> +<span class="r-out co"><span class="r-pr">#></span> 63 parent 4.0 2.102 1.8977</span> +<span class="r-out co"><span class="r-pr">#></span> 91 parent 3.9 1.441 2.4590</span> +<span class="r-out co"><span class="r-pr">#></span> 119 parent 0.6 1.092 -0.4919</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># One parent compound, one metabolite, both single first order.</span></span></span> +<span class="r-in"><span><span class="co"># We remove zero values from FOCUS dataset D in order to avoid warnings</span></span></span> +<span class="r-in"><span><span class="va">FOCUS_D</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># Use mkinsub for convenience in model formulation. Pathway to sink included per default.</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Fit the model quietly to the FOCUS example dataset D using defaults</span></span></span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mkinfit-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># As lower parent values appear to have lower variance, we try an alternative error model</span></span></span> +<span class="r-in"><span><span class="va">fit.tc</span> <span class="op"><-</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># This avoids the warning, and the likelihood ratio test confirms it is preferable</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">fit.tc</span>, <span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: SFO_SFO with error model tc and fixed parameter(s) m1_0</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: SFO_SFO with error model const and fixed parameter(s) m1_0</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 6 -64.983 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 5 -97.224 -1 64.483 9.737e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="co"># We can also allow for different variances of parent and metabolite as error model</span></span></span> +<span class="r-in"><span><span class="va">fit.obs</span> <span class="op"><-</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"obs"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># The two-component error model has significantly higher likelihood</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">fit.obs</span>, <span class="va">fit.tc</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: SFO_SFO with error model tc and fixed parameter(s) m1_0</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: SFO_SFO with error model obs and fixed parameter(s) m1_0</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> 1 6 -64.983 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 6 -96.936 0 63.907 < 2.2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="fu"><a href="parms.html">parms</a></span><span class="op">(</span><span class="va">fit.tc</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 k_parent k_m1 f_parent_to_m1 sigma_low </span> +<span class="r-out co"><span class="r-pr">#></span> 1.007343e+02 1.005562e-01 5.166712e-03 5.083933e-01 3.049883e-03 </span> +<span class="r-out co"><span class="r-pr">#></span> rsd_high </span> +<span class="r-out co"><span class="r-pr">#></span> 7.928118e-02 </span> +<span class="r-in"><span><span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fit.tc</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_m1 parent_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 0.5083933 0.4916067 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> parent 6.89313 22.89848</span> +<span class="r-out co"><span class="r-pr">#></span> m1 134.15634 445.65771</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># We can show a quick (only one replication) benchmark for this case, as we</span></span></span> +<span class="r-in"><span><span class="co"># have several alternative solution methods for the model. We skip</span></span></span> +<span class="r-in"><span><span class="co"># uncompiled deSolve, as it is so slow. More benchmarks are found in the</span></span></span> +<span class="r-in"><span><span class="co"># benchmark vignette</span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="kw">if</span><span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="va"><a href="http://rbenchmark.googlecode.com" class="external-link">rbenchmark</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/rbenchmark/man/benchmark.html" class="external-link">benchmark</a></span><span class="op">(</span>replications <span class="op">=</span> <span class="fl">1</span>, order <span class="op">=</span> <span class="st">"relative"</span>, columns <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"test"</span>, <span class="st">"relative"</span>, <span class="st">"elapsed"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> deSolve_compiled <span class="op">=</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, use_compiled <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> eigen <span class="op">=</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"eigen"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> analytical <span class="op">=</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"analytical"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">}</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> test relative elapsed</span> +<span class="r-out co"><span class="r-pr">#></span> 3 analytical 1.000 0.242</span> +<span class="r-out co"><span class="r-pr">#></span> 2 eigen 1.913 0.463</span> +<span class="r-out co"><span class="r-pr">#></span> 1 deSolve_compiled 1.917 0.464</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Use stepwise fitting, using optimised parameters from parent only fit, FOMC-SFO</span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">FOMC_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">fit.FOMC_SFO</span> <span class="op"><-</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">FOMC_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># Again, we get a warning and try a more sophisticated error model</span></span></span> +<span class="r-in"><span><span class="va">fit.FOMC_SFO.tc</span> <span class="op"><-</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">FOMC_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># This model has a higher likelihood, but not significantly so</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></span><span class="op">(</span><span class="va">fit.tc</span>, <span class="va">fit.FOMC_SFO.tc</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood ratio test</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model 1: FOMC_SFO with error model tc and fixed parameter(s) m1_0</span> +<span class="r-out co"><span class="r-pr">#></span> Model 2: SFO_SFO with error model tc and fixed parameter(s) m1_0</span> +<span class="r-out co"><span class="r-pr">#></span> #Df LogLik Df Chisq Pr(>Chisq)</span> +<span class="r-out co"><span class="r-pr">#></span> 1 7 -64.829 </span> +<span class="r-out co"><span class="r-pr">#></span> 2 6 -64.983 -1 0.3075 0.5792</span> +<span class="r-in"><span><span class="co"># Also, the missing standard error for log_beta and the t-tests for alpha</span></span></span> +<span class="r-in"><span><span class="co"># and beta indicate overparameterisation</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit.FOMC_SFO.tc</span>, data <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>NaNs produced</span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>diag(V) had non-positive or NA entries; the non-finite result may be dubious</span> +<span class="r-out co"><span class="r-pr">#></span> mkin version used for fitting: 1.2.10 </span> +<span class="r-out co"><span class="r-pr">#></span> R version used for fitting: 4.4.2 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of fit: Fri Feb 14 07:30:07 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of summary: Fri Feb 14 07:30:07 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_m1/dt = + f_parent_to_m1 * (alpha/beta) * 1/((time/beta) + 1) *</span> +<span class="r-out co"><span class="r-pr">#></span> parent - k_m1 * m1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model predictions using solution type deSolve </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted using 4062 model solutions performed in 0.77 s</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error model: Two-component variance function </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error model algorithm: d_3 </span> +<span class="r-out co"><span class="r-pr">#></span> Direct fitting and three-step fitting yield approximately the same likelihood </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for parameters to be optimised:</span> +<span class="r-out co"><span class="r-pr">#></span> value type</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 100.75 state</span> +<span class="r-out co"><span class="r-pr">#></span> alpha 1.00 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> beta 10.00 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.10 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.50 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> sigma_low 0.10 error</span> +<span class="r-out co"><span class="r-pr">#></span> rsd_high 0.10 error</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for the transformed parameters actually optimised:</span> +<span class="r-out co"><span class="r-pr">#></span> value lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 100.750000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 -2.302585 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis 0.000000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_alpha 0.000000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_beta 2.302585 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> sigma_low 0.100000 0 Inf</span> +<span class="r-out co"><span class="r-pr">#></span> rsd_high 0.100000 0 Inf</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed parameter values:</span> +<span class="r-out co"><span class="r-pr">#></span> value type</span> +<span class="r-out co"><span class="r-pr">#></span> m1_0 0 state</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Results:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 143.658 155.1211 -64.82902</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Optimised, transformed parameters with symmetric confidence intervals:</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 101.600000 2.6400000 96.240000 107.000000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 -5.284000 0.0929100 -5.474000 -5.095000</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis 0.001426 0.0766900 -0.155000 0.157800</span> +<span class="r-out co"><span class="r-pr">#></span> log_alpha 5.522000 0.0077320 5.506000 5.538000</span> +<span class="r-out co"><span class="r-pr">#></span> log_beta 7.806000 NaN NaN NaN</span> +<span class="r-out co"><span class="r-pr">#></span> sigma_low 0.002488 0.0002431 0.001992 0.002984</span> +<span class="r-out co"><span class="r-pr">#></span> rsd_high 0.079210 0.0093280 0.060180 0.098230</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Parameter correlation:</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_m1 f_parent_qlogis log_alpha log_beta</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 1.000000 -0.095161 -0.76675 0.70542 NaN</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 -0.095161 1.000000 0.51429 -0.14382 NaN</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -0.766750 0.514286 1.00000 -0.61393 NaN</span> +<span class="r-out co"><span class="r-pr">#></span> log_alpha 0.705417 -0.143821 -0.61393 1.00000 NaN</span> +<span class="r-out co"><span class="r-pr">#></span> log_beta NaN NaN NaN NaN 1</span> +<span class="r-out co"><span class="r-pr">#></span> sigma_low 0.016086 0.001583 0.01547 5.87036 NaN</span> +<span class="r-out co"><span class="r-pr">#></span> rsd_high 0.006618 -0.011695 -0.05356 0.04848 NaN</span> +<span class="r-out co"><span class="r-pr">#></span> sigma_low rsd_high</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 0.016086 0.006618</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 0.001583 -0.011695</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis 0.015466 -0.053560</span> +<span class="r-out co"><span class="r-pr">#></span> log_alpha 5.870361 0.048483</span> +<span class="r-out co"><span class="r-pr">#></span> log_beta NaN NaN</span> +<span class="r-out co"><span class="r-pr">#></span> sigma_low 1.000000 -0.652545</span> +<span class="r-out co"><span class="r-pr">#></span> rsd_high -0.652545 1.000000</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Backtransformed parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> Confidence intervals for internally transformed parameters are asymmetric.</span> +<span class="r-out co"><span class="r-pr">#></span> t-test (unrealistically) based on the assumption of normal distribution</span> +<span class="r-out co"><span class="r-pr">#></span> for estimators of untransformed parameters.</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate t value Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 1.016e+02 32.7800 6.310e-26 9.624e+01 1.070e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 5.072e-03 10.1200 1.216e-11 4.196e-03 6.130e-03</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 5.004e-01 20.8300 4.316e-20 4.613e-01 5.394e-01</span> +<span class="r-out co"><span class="r-pr">#></span> alpha 2.502e+02 0.5624 2.889e-01 2.463e+02 2.542e+02</span> +<span class="r-out co"><span class="r-pr">#></span> beta 2.455e+03 0.5549 2.915e-01 NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> sigma_low 2.488e-03 0.4843 3.158e-01 1.992e-03 2.984e-03</span> +<span class="r-out co"><span class="r-pr">#></span> rsd_high 7.921e-02 8.4300 8.001e-10 6.018e-02 9.823e-02</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> FOCUS Chi2 error levels in percent:</span> +<span class="r-out co"><span class="r-pr">#></span> err.min n.optim df</span> +<span class="r-out co"><span class="r-pr">#></span> All data 6.781 5 14</span> +<span class="r-out co"><span class="r-pr">#></span> parent 7.141 3 6</span> +<span class="r-out co"><span class="r-pr">#></span> m1 4.640 2 8</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Resulting formation fractions:</span> +<span class="r-out co"><span class="r-pr">#></span> ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_m1 0.5004</span> +<span class="r-out co"><span class="r-pr">#></span> parent_sink 0.4996</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Estimated disappearance times:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back</span> +<span class="r-out co"><span class="r-pr">#></span> parent 6.812 22.7 6.834</span> +<span class="r-out co"><span class="r-pr">#></span> m1 136.661 454.0 NA</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># We can easily use starting parameters from the parent only fit (only for illustration)</span></span></span> +<span class="r-in"><span><span class="va">fit.FOMC</span> <span class="op">=</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">fit.FOMC_SFO</span> <span class="op"><-</span> <span class="fu">mkinfit</span><span class="op">(</span><span class="va">FOMC_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>,</span></span> +<span class="r-in"><span> parms.ini <span class="op">=</span> <span class="va">fit.FOMC</span><span class="op">$</span><span class="va">bparms.ode</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinmod.html b/docs/dev/reference/mkinmod.html new file mode 100644 index 00000000..d26086eb --- /dev/null +++ b/docs/dev/reference/mkinmod.html @@ -0,0 +1,382 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Function to set up a kinetic model with one or more state variables — mkinmod • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Function to set up a kinetic model with one or more state variables — mkinmod"><meta name="description" content="This function is usually called using a call to mkinsub() for each observed +variable, specifying the corresponding submodel as well as outgoing pathways +(see examples). +Print mkinmod objects in a way that the user finds his way to get to its +components."><meta property="og:description" content="This function is usually called using a call to mkinsub() for each observed +variable, specifying the corresponding submodel as well as outgoing pathways +(see examples). +Print mkinmod objects in a way that the user finds his way to get to its +components."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Function to set up a kinetic model with one or more state variables</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinmod.R" class="external-link"><code>R/mkinmod.R</code></a>, <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinsub.R" class="external-link"><code>R/mkinsub.R</code></a></small> + <div class="d-none name"><code>mkinmod.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function is usually called using a call to <code>mkinsub()</code> for each observed +variable, specifying the corresponding submodel as well as outgoing pathways +(see examples).</p> +<p>Print mkinmod objects in a way that the user finds his way to get to its +components.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkinmod</span><span class="op">(</span></span> +<span> <span class="va">...</span>,</span> +<span> use_of_ff <span class="op">=</span> <span class="st">"max"</span>,</span> +<span> name <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> speclist <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> verbose <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> dll_dir <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> unload <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> overwrite <span class="op">=</span> <span class="cn">FALSE</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mkinmod'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">mkinsub</span><span class="op">(</span><span class="va">submodel</span>, to <span class="op">=</span> <span class="cn">NULL</span>, sink <span class="op">=</span> <span class="cn">TRUE</span>, full_name <span class="op">=</span> <span class="cn">NA</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>For each observed variable, a list as obtained by <code>mkinsub()</code> +has to be specified as an argument (see examples). Currently, single +first order kinetics "SFO", indeterminate order rate equation kinetics +"IORE", or single first order with reversible binding "SFORB" are +implemented for all variables, while "FOMC", "DFOP", "HS" and "logistic" +can additionally be chosen for the first variable which is assumed to be +the source compartment. +Additionally, <code>mkinsub()</code> has an argument <code>to</code>, specifying names of +variables to which a transfer is to be assumed in the model. +If the argument <code>use_of_ff</code> is set to "min" +and the model for the compartment is "SFO" or "SFORB", an +additional <code>mkinsub()</code> argument can be <code>sink = FALSE</code>, effectively +fixing the flux to sink to zero. +In print.mkinmod, this argument is currently not used.</p></dd> + + +<dt id="arg-use-of-ff">use_of_ff<a class="anchor" aria-label="anchor" href="#arg-use-of-ff"></a></dt> +<dd><p>Specification of the use of formation fractions in the +model equations and, if applicable, the coefficient matrix. If "max", +formation fractions are always used (default). If "min", a minimum use of +formation fractions is made, i.e. each first-order pathway to a metabolite +has its own rate constant.</p></dd> + + +<dt id="arg-name">name<a class="anchor" aria-label="anchor" href="#arg-name"></a></dt> +<dd><p>A name for the model. Should be a valid R object name.</p></dd> + + +<dt id="arg-speclist">speclist<a class="anchor" aria-label="anchor" href="#arg-speclist"></a></dt> +<dd><p>The specification of the observed variables and their +submodel types and pathways can be given as a single list using this +argument. Default is NULL.</p></dd> + + +<dt id="arg-quiet">quiet<a class="anchor" aria-label="anchor" href="#arg-quiet"></a></dt> +<dd><p>Should messages be suppressed?</p></dd> + + +<dt id="arg-verbose">verbose<a class="anchor" aria-label="anchor" href="#arg-verbose"></a></dt> +<dd><p>If <code>TRUE</code>, passed to <code><a href="https://rdrr.io/pkg/inline/man/cfunction.html" class="external-link">inline::cfunction()</a></code> if +applicable to give detailed information about the C function being built.</p></dd> + + +<dt id="arg-dll-dir">dll_dir<a class="anchor" aria-label="anchor" href="#arg-dll-dir"></a></dt> +<dd><p>Directory where an DLL object, if generated internally by +<code><a href="https://rdrr.io/pkg/inline/man/cfunction.html" class="external-link">inline::cfunction()</a></code>, should be saved. The DLL will only be stored in a +permanent location for use in future sessions, if 'dll_dir' and 'name' +are specified. This is helpful if fit objects are cached e.g. by knitr, +as the cache remains functional across sessions if the DLL is stored in +a user defined location.</p></dd> + + +<dt id="arg-unload">unload<a class="anchor" aria-label="anchor" href="#arg-unload"></a></dt> +<dd><p>If a DLL from the target location in 'dll_dir' is already +loaded, should that be unloaded first?</p></dd> + + +<dt id="arg-overwrite">overwrite<a class="anchor" aria-label="anchor" href="#arg-overwrite"></a></dt> +<dd><p>If a file exists at the target DLL location in 'dll_dir', +should this be overwritten?</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An <code>mkinmod</code> object.</p></dd> + + +<dt id="arg-submodel">submodel<a class="anchor" aria-label="anchor" href="#arg-submodel"></a></dt> +<dd><p>Character vector of length one to specify the submodel type. +See <code>mkinmod</code> for the list of allowed submodel names.</p></dd> + + +<dt id="arg-to">to<a class="anchor" aria-label="anchor" href="#arg-to"></a></dt> +<dd><p>Vector of the names of the state variable to which a +transformation shall be included in the model.</p></dd> + + +<dt id="arg-sink">sink<a class="anchor" aria-label="anchor" href="#arg-sink"></a></dt> +<dd><p>Should a pathway to sink be included in the model in addition to +the pathways to other state variables?</p></dd> + + +<dt id="arg-full-name">full_name<a class="anchor" aria-label="anchor" href="#arg-full-name"></a></dt> +<dd><p>An optional name to be used e.g. for plotting fits +performed with the model. You can use non-ASCII characters here, but then +your R code will not be portable, <em>i.e.</em> may produce unintended plot +results on other operating systems or system configurations.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A list of class <code>mkinmod</code> for use with <code><a href="mkinfit.html">mkinfit()</a></code>, +containing, among others,</p> +<dl><dt>diffs</dt> +<dd><p>A vector of string representations of differential equations, one for +each modelling variable.</p></dd> + +<dt>map</dt> +<dd><p>A list containing named character vectors for each observed variable, +specifying the modelling variables by which it is represented.</p></dd> + +<dt>use_of_ff</dt> +<dd><p>The content of <code>use_of_ff</code> is passed on in this list component.</p></dd> + +<dt>deg_func</dt> +<dd><p>If generated, a function containing the solution of the degradation +model.</p></dd> + +<dt>coefmat</dt> +<dd><p>The coefficient matrix, if the system of differential equations can be +represented by one.</p></dd> + +<dt>cf</dt> +<dd><p>If generated, a compiled function calculating the derivatives as +returned by cfunction.</p></dd> + + +</dl><p>A list for use with <code>mkinmod</code>.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>For the definition of model types and their parameters, the equations given +in the FOCUS and NAFTA guidance documents are used.</p> +<p>For kinetic models with more than one observed variable, a symbolic solution +of the system of differential equations is included in the resulting +mkinmod object in some cases, speeding up the solution.</p> +<p>If a C compiler is found by <code><a href="https://pkgbuild.r-lib.org/reference/has_compiler.html" class="external-link">pkgbuild::has_compiler()</a></code> and there +is more than one observed variable in the specification, C code is generated +for evaluating the differential equations, compiled using +<code><a href="https://rdrr.io/pkg/inline/man/cfunction.html" class="external-link">inline::cfunction()</a></code> and added to the resulting mkinmod object.</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>The IORE submodel is not well tested for metabolites. When using this +model for metabolites, you may want to read the note in the help +page to <a href="mkinfit.html">mkinfit</a>.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> +<p>NAFTA Technical Working Group on Pesticides (not dated) Guidance for +Evaluating and Calculating Degradation Kinetics in Environmental Media</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Specify the SFO model (this is not needed any more, as we can now mkinfit("SFO", ...)</span></span></span> +<span class="r-in"><span><span class="va">SFO</span> <span class="op"><-</span> <span class="fu">mkinmod</span><span class="op">(</span>parent <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># One parent compound, one metabolite, both single first order</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu">mkinmod</span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">SFO_SFO</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mkinmod> model generated with</span> +<span class="r-out co"><span class="r-pr">#></span> Use of formation fractions $use_of_ff: max </span> +<span class="r-out co"><span class="r-pr">#></span> Specification $spec:</span> +<span class="r-out co"><span class="r-pr">#></span> $parent</span> +<span class="r-out co"><span class="r-pr">#></span> $type: SFO; $to: m1; $sink: TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> $m1</span> +<span class="r-out co"><span class="r-pr">#></span> $type: SFO; $sink: TRUE</span> +<span class="r-out co"><span class="r-pr">#></span> Coefficient matrix $coefmat available</span> +<span class="r-out co"><span class="r-pr">#></span> Compiled model $cf available</span> +<span class="r-out co"><span class="r-pr">#></span> Differential equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - k_parent * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_m1/dt = + f_parent_to_m1 * k_parent * parent - k_m1 * m1</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">fit_sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, solution_type <span class="op">=</span> <span class="st">"deSolve"</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># Now supplying compound names used for plotting, and write to user defined location</span></span></span> +<span class="r-in"><span> <span class="co"># We need to choose a path outside the session tempdir because this gets removed</span></span></span> +<span class="r-in"><span> <span class="va">DLL_dir</span> <span class="op"><-</span> <span class="st">"~/.local/share/mkin"</span></span></span> +<span class="r-in"><span> <span class="kw">if</span> <span class="op">(</span><span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/files2.html" class="external-link">dir.exists</a></span><span class="op">(</span><span class="va">DLL_dir</span><span class="op">)</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/files2.html" class="external-link">dir.create</a></span><span class="op">(</span><span class="va">DLL_dir</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">SFO_SFO.2</span> <span class="op"><-</span> <span class="fu">mkinmod</span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span>, full_name <span class="op">=</span> <span class="st">"Test compound"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span>, full_name <span class="op">=</span> <span class="st">"Metabolite M1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> name <span class="op">=</span> <span class="st">"SFO_SFO"</span>, dll_dir <span class="op">=</span> <span class="va">DLL_dir</span>, unload <span class="op">=</span> <span class="cn">TRUE</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-msg co"><span class="r-pr">#></span> Copied DLL from /tmp/RtmpSeNGYy/file226312370605e2.so to /home/jranke/.local/share/mkin/SFO_SFO.so</span> +<span class="r-in"><span><span class="co"># Now we can save the model and restore it in a new session</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/readRDS.html" class="external-link">saveRDS</a></span><span class="op">(</span><span class="va">SFO_SFO.2</span>, file <span class="op">=</span> <span class="st">"~/SFO_SFO.rds"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># Terminate the R session here if you would like to check, and then do</span></span></span> +<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO.3</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/readRDS.html" class="external-link">readRDS</a></span><span class="op">(</span><span class="st">"~/SFO_SFO.rds"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">fit_sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO.3</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, solution_type <span class="op">=</span> <span class="st">"deSolve"</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Show details of creating the C function</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu">mkinmod</span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, verbose <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Program source:</span> +<span class="r-out co"><span class="r-pr">#></span> 1: #include <R.h></span> +<span class="r-out co"><span class="r-pr">#></span> 2: </span> +<span class="r-out co"><span class="r-pr">#></span> 3: </span> +<span class="r-out co"><span class="r-pr">#></span> 4: static double parms [3];</span> +<span class="r-out co"><span class="r-pr">#></span> 5: #define k_parent parms[0]</span> +<span class="r-out co"><span class="r-pr">#></span> 6: #define f_parent_to_m1 parms[1]</span> +<span class="r-out co"><span class="r-pr">#></span> 7: #define k_m1 parms[2]</span> +<span class="r-out co"><span class="r-pr">#></span> 8: </span> +<span class="r-out co"><span class="r-pr">#></span> 9: void initpar(void (* odeparms)(int *, double *)) {</span> +<span class="r-out co"><span class="r-pr">#></span> 10: int N = 3;</span> +<span class="r-out co"><span class="r-pr">#></span> 11: odeparms(&N, parms);</span> +<span class="r-out co"><span class="r-pr">#></span> 12: }</span> +<span class="r-out co"><span class="r-pr">#></span> 13: </span> +<span class="r-out co"><span class="r-pr">#></span> 14: </span> +<span class="r-out co"><span class="r-pr">#></span> 15: void diffs ( int * n, double * t, double * y, double * f, double * rpar, int * ipar ) {</span> +<span class="r-out co"><span class="r-pr">#></span> 16: </span> +<span class="r-out co"><span class="r-pr">#></span> 17: f[0] = - k_parent * y[0];</span> +<span class="r-out co"><span class="r-pr">#></span> 18: f[1] = + f_parent_to_m1 * k_parent * y[0] - k_m1 * y[1];</span> +<span class="r-out co"><span class="r-pr">#></span> 19: }</span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The symbolic solution which is available in this case is not</span></span></span> +<span class="r-in"><span><span class="co"># made for human reading but for speed of computation</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span><span class="op">$</span><span class="va">deg_func</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> function (observed, odeini, odeparms) </span> +<span class="r-out co"><span class="r-pr">#></span> {</span> +<span class="r-out co"><span class="r-pr">#></span> predicted <- numeric(0)</span> +<span class="r-out co"><span class="r-pr">#></span> with(as.list(odeparms), {</span> +<span class="r-out co"><span class="r-pr">#></span> t <- observed[observed$name == "parent", "time"]</span> +<span class="r-out co"><span class="r-pr">#></span> predicted <<- c(predicted, SFO.solution(t, odeini["parent"], </span> +<span class="r-out co"><span class="r-pr">#></span> k_parent))</span> +<span class="r-out co"><span class="r-pr">#></span> t <- observed[observed$name == "m1", "time"]</span> +<span class="r-out co"><span class="r-pr">#></span> predicted <<- c(predicted, (((k_m1 - k_parent) * odeini["m1"] - </span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 * k_parent * odeini["parent"]) * exp(-k_m1 * </span> +<span class="r-out co"><span class="r-pr">#></span> t) + f_parent_to_m1 * k_parent * odeini["parent"] * </span> +<span class="r-out co"><span class="r-pr">#></span> exp(-k_parent * t))/(k_m1 - k_parent))</span> +<span class="r-out co"><span class="r-pr">#></span> })</span> +<span class="r-out co"><span class="r-pr">#></span> return(predicted)</span> +<span class="r-out co"><span class="r-pr">#></span> }</span> +<span class="r-out co"><span class="r-pr">#></span> <environment: 0x5555577ec6d0></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># If we have several parallel metabolites</span></span></span> +<span class="r-in"><span><span class="co"># (compare tests/testthat/test_synthetic_data_for_UBA_2014.R)</span></span></span> +<span class="r-in"><span><span class="va">m_synth_DFOP_par</span> <span class="op"><-</span> <span class="fu">mkinmod</span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu">mkinsub</span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">fit_DFOP_par_c</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_synth_DFOP_par</span>,</span></span> +<span class="r-in"><span> <span class="va">synthetic_data_for_UBA_2014</span><span class="op">[[</span><span class="fl">12</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinparplot-1.png b/docs/dev/reference/mkinparplot-1.png Binary files differnew file mode 100644 index 00000000..8d34b451 --- /dev/null +++ b/docs/dev/reference/mkinparplot-1.png diff --git a/docs/dev/reference/mkinparplot.html b/docs/dev/reference/mkinparplot.html new file mode 100644 index 00000000..e3f85961 --- /dev/null +++ b/docs/dev/reference/mkinparplot.html @@ -0,0 +1,128 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Function to plot the confidence intervals obtained using mkinfit — mkinparplot • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Function to plot the confidence intervals obtained using mkinfit — mkinparplot"><meta name="description" content="This function plots the confidence intervals for the parameters fitted using +mkinfit."><meta property="og:description" content="This function plots the confidence intervals for the parameters fitted using +mkinfit."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Function to plot the confidence intervals obtained using mkinfit</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinparplot.R" class="external-link"><code>R/mkinparplot.R</code></a></small> + <div class="d-none name"><code>mkinparplot.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function plots the confidence intervals for the parameters fitted using +<code><a href="mkinfit.html">mkinfit</a></code>.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkinparplot</span><span class="op">(</span><span class="va">object</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>A fit represented in an <code><a href="mkinfit.html">mkinfit</a></code> object.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>Nothing is returned by this function, as it is called for its side +effect, namely to produce a plot.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">model</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> T245 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"phenol"</span><span class="op">)</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> phenol <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, to <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"anisole"</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> anisole <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">model</span>, <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">mccall81_245T</span>, <span class="va">soil</span> <span class="op">==</span> <span class="st">"Commerce"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span><span class="fu">mkinparplot</span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mkinparplot-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinplot.html b/docs/dev/reference/mkinplot.html new file mode 100644 index 00000000..2505b060 --- /dev/null +++ b/docs/dev/reference/mkinplot.html @@ -0,0 +1,115 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Plot the observed data and the fitted model of an mkinfit object — mkinplot • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Plot the observed data and the fitted model of an mkinfit object — mkinplot"><meta name="description" content="Deprecated function. It now only calls the plot method +plot.mkinfit."><meta property="og:description" content="Deprecated function. It now only calls the plot method +plot.mkinfit."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Plot the observed data and the fitted model of an mkinfit object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/plot.mkinfit.R" class="external-link"><code>R/plot.mkinfit.R</code></a></small> + <div class="d-none name"><code>mkinplot.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Deprecated function. It now only calls the plot method +<code><a href="plot.mkinfit.html">plot.mkinfit</a></code>.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkinplot</span><span class="op">(</span><span class="va">fit</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-fit">fit<a class="anchor" aria-label="anchor" href="#arg-fit"></a></dt> +<dd><p>an object of class <code><a href="mkinfit.html">mkinfit</a></code>.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>further arguments passed to <code><a href="plot.mkinfit.html">plot.mkinfit</a></code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The function is called for its side effect.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinpredict.html b/docs/dev/reference/mkinpredict.html new file mode 100644 index 00000000..e11dacdf --- /dev/null +++ b/docs/dev/reference/mkinpredict.html @@ -0,0 +1,390 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Produce predictions from a kinetic model using specific parameters — mkinpredict • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Produce predictions from a kinetic model using specific parameters — mkinpredict"><meta name="description" content="This function produces a time series for all the observed variables in a +kinetic model as specified by mkinmod, using a specific set of +kinetic parameters and initial values for the state variables."><meta property="og:description" content="This function produces a time series for all the observed variables in a +kinetic model as specified by mkinmod, using a specific set of +kinetic parameters and initial values for the state variables."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Produce predictions from a kinetic model using specific parameters</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinpredict.R" class="external-link"><code>R/mkinpredict.R</code></a></small> + <div class="d-none name"><code>mkinpredict.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function produces a time series for all the observed variables in a +kinetic model as specified by <a href="mkinmod.html">mkinmod</a>, using a specific set of +kinetic parameters and initial values for the state variables.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">x</span>, <span class="va">odeparms</span>, <span class="va">odeini</span>, <span class="va">outtimes</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mkinmod'</span></span> +<span><span class="fu">mkinpredict</span><span class="op">(</span></span> +<span> <span class="va">x</span>,</span> +<span> odeparms <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent_sink <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span> +<span> odeini <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>,</span> +<span> outtimes <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">120</span>, by <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span> +<span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span>,</span> +<span> use_compiled <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> use_symbols <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> method.ode <span class="op">=</span> <span class="st">"lsoda"</span>,</span> +<span> atol <span class="op">=</span> <span class="fl">1e-08</span>,</span> +<span> rtol <span class="op">=</span> <span class="fl">1e-10</span>,</span> +<span> maxsteps <span class="op">=</span> <span class="fl">20000L</span>,</span> +<span> map_output <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> na_stop <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu">mkinpredict</span><span class="op">(</span></span> +<span> <span class="va">x</span>,</span> +<span> odeparms <span class="op">=</span> <span class="va">x</span><span class="op">$</span><span class="va">bparms.ode</span>,</span> +<span> odeini <span class="op">=</span> <span class="va">x</span><span class="op">$</span><span class="va">bparms.state</span>,</span> +<span> outtimes <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">120</span>, by <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span> +<span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span>,</span> +<span> use_compiled <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> method.ode <span class="op">=</span> <span class="st">"lsoda"</span>,</span> +<span> atol <span class="op">=</span> <span class="fl">1e-08</span>,</span> +<span> rtol <span class="op">=</span> <span class="fl">1e-10</span>,</span> +<span> map_output <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>A kinetic model as produced by <a href="mkinmod.html">mkinmod</a>, or a kinetic fit as +fitted by <a href="mkinfit.html">mkinfit</a>. In the latter case, the fitted parameters are used for +the prediction.</p></dd> + + +<dt id="arg-odeparms">odeparms<a class="anchor" aria-label="anchor" href="#arg-odeparms"></a></dt> +<dd><p>A numeric vector specifying the parameters used in the +kinetic model, which is generally defined as a set of ordinary differential +equations.</p></dd> + + +<dt id="arg-odeini">odeini<a class="anchor" aria-label="anchor" href="#arg-odeini"></a></dt> +<dd><p>A numeric vector containing the initial values of the state +variables of the model. Note that the state variables can differ from the +observed variables, for example in the case of the SFORB model.</p></dd> + + +<dt id="arg-outtimes">outtimes<a class="anchor" aria-label="anchor" href="#arg-outtimes"></a></dt> +<dd><p>A numeric vector specifying the time points for which model +predictions should be generated.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further arguments passed to the ode solver in case such a +solver is used.</p></dd> + + +<dt id="arg-solution-type">solution_type<a class="anchor" aria-label="anchor" href="#arg-solution-type"></a></dt> +<dd><p>The method that should be used for producing the +predictions. This should generally be "analytical" if there is only one +observed variable, and usually "deSolve" in the case of several observed +variables. The third possibility "eigen" is fast in comparison to uncompiled +ODE models, but not applicable to some models, e.g. using FOMC for the +parent compound.</p></dd> + + +<dt id="arg-use-compiled">use_compiled<a class="anchor" aria-label="anchor" href="#arg-use-compiled"></a></dt> +<dd><p>If set to <code>FALSE</code>, no compiled version of the +<a href="mkinmod.html">mkinmod</a> model is used, even if is present.</p></dd> + + +<dt id="arg-use-symbols">use_symbols<a class="anchor" aria-label="anchor" href="#arg-use-symbols"></a></dt> +<dd><p>If set to <code>TRUE</code> (default), symbol info present in +the <a href="mkinmod.html">mkinmod</a> object is used if available for accessing compiled code</p></dd> + + +<dt id="arg-method-ode">method.ode<a class="anchor" aria-label="anchor" href="#arg-method-ode"></a></dt> +<dd><p>The solution method passed via mkinpredict to <code><a href="https://rdrr.io/pkg/deSolve/man/ode.html" class="external-link">deSolve::ode()</a></code> in +case the solution type is "deSolve" and we are not using compiled code. +When using compiled code, only lsoda is supported.</p></dd> + + +<dt id="arg-atol">atol<a class="anchor" aria-label="anchor" href="#arg-atol"></a></dt> +<dd><p>Absolute error tolerance, passed to the ode solver.</p></dd> + + +<dt id="arg-rtol">rtol<a class="anchor" aria-label="anchor" href="#arg-rtol"></a></dt> +<dd><p>Absolute error tolerance, passed to the ode solver.</p></dd> + + +<dt id="arg-maxsteps">maxsteps<a class="anchor" aria-label="anchor" href="#arg-maxsteps"></a></dt> +<dd><p>Maximum number of steps, passed to the ode solver.</p></dd> + + +<dt id="arg-map-output">map_output<a class="anchor" aria-label="anchor" href="#arg-map-output"></a></dt> +<dd><p>Boolean to specify if the output should list values for +the observed variables (default) or for all state variables (if set to +FALSE). Setting this to FALSE has no effect for analytical solutions, +as these always return mapped output.</p></dd> + + +<dt id="arg-na-stop">na_stop<a class="anchor" aria-label="anchor" href="#arg-na-stop"></a></dt> +<dd><p>Should it be an error if <code><a href="https://rdrr.io/pkg/deSolve/man/ode.html" class="external-link">deSolve::ode()</a></code> returns NaN values</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A matrix with the numeric solution in wide format</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># Compare solution types</span></span></span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, <span class="fl">0</span><span class="op">:</span><span class="fl">20</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"analytical"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol</span> +<span class="r-out co"><span class="r-pr">#></span> 0 0 100.0000000</span> +<span class="r-out co"><span class="r-pr">#></span> 1 1 74.0818221</span> +<span class="r-out co"><span class="r-pr">#></span> 2 2 54.8811636</span> +<span class="r-out co"><span class="r-pr">#></span> 3 3 40.6569660</span> +<span class="r-out co"><span class="r-pr">#></span> 4 4 30.1194212</span> +<span class="r-out co"><span class="r-pr">#></span> 5 5 22.3130160</span> +<span class="r-out co"><span class="r-pr">#></span> 6 6 16.5298888</span> +<span class="r-out co"><span class="r-pr">#></span> 7 7 12.2456428</span> +<span class="r-out co"><span class="r-pr">#></span> 8 8 9.0717953</span> +<span class="r-out co"><span class="r-pr">#></span> 9 9 6.7205513</span> +<span class="r-out co"><span class="r-pr">#></span> 10 10 4.9787068</span> +<span class="r-out co"><span class="r-pr">#></span> 11 11 3.6883167</span> +<span class="r-out co"><span class="r-pr">#></span> 12 12 2.7323722</span> +<span class="r-out co"><span class="r-pr">#></span> 13 13 2.0241911</span> +<span class="r-out co"><span class="r-pr">#></span> 14 14 1.4995577</span> +<span class="r-out co"><span class="r-pr">#></span> 15 15 1.1108997</span> +<span class="r-out co"><span class="r-pr">#></span> 16 16 0.8229747</span> +<span class="r-out co"><span class="r-pr">#></span> 17 17 0.6096747</span> +<span class="r-out co"><span class="r-pr">#></span> 18 18 0.4516581</span> +<span class="r-out co"><span class="r-pr">#></span> 19 19 0.3345965</span> +<span class="r-out co"><span class="r-pr">#></span> 20 20 0.2478752</span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, <span class="fl">0</span><span class="op">:</span><span class="fl">20</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol</span> +<span class="r-out co"><span class="r-pr">#></span> 0 0 100.0000000</span> +<span class="r-out co"><span class="r-pr">#></span> 1 1 74.0818221</span> +<span class="r-out co"><span class="r-pr">#></span> 2 2 54.8811636</span> +<span class="r-out co"><span class="r-pr">#></span> 3 3 40.6569660</span> +<span class="r-out co"><span class="r-pr">#></span> 4 4 30.1194212</span> +<span class="r-out co"><span class="r-pr">#></span> 5 5 22.3130160</span> +<span class="r-out co"><span class="r-pr">#></span> 6 6 16.5298888</span> +<span class="r-out co"><span class="r-pr">#></span> 7 7 12.2456428</span> +<span class="r-out co"><span class="r-pr">#></span> 8 8 9.0717953</span> +<span class="r-out co"><span class="r-pr">#></span> 9 9 6.7205513</span> +<span class="r-out co"><span class="r-pr">#></span> 10 10 4.9787068</span> +<span class="r-out co"><span class="r-pr">#></span> 11 11 3.6883167</span> +<span class="r-out co"><span class="r-pr">#></span> 12 12 2.7323722</span> +<span class="r-out co"><span class="r-pr">#></span> 13 13 2.0241911</span> +<span class="r-out co"><span class="r-pr">#></span> 14 14 1.4995577</span> +<span class="r-out co"><span class="r-pr">#></span> 15 15 1.1108996</span> +<span class="r-out co"><span class="r-pr">#></span> 16 16 0.8229747</span> +<span class="r-out co"><span class="r-pr">#></span> 17 17 0.6096747</span> +<span class="r-out co"><span class="r-pr">#></span> 18 18 0.4516581</span> +<span class="r-out co"><span class="r-pr">#></span> 19 19 0.3345965</span> +<span class="r-out co"><span class="r-pr">#></span> 20 20 0.2478752</span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, <span class="fl">0</span><span class="op">:</span><span class="fl">20</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, use_compiled <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol</span> +<span class="r-out co"><span class="r-pr">#></span> 0 0 100.0000000</span> +<span class="r-out co"><span class="r-pr">#></span> 1 1 74.0818221</span> +<span class="r-out co"><span class="r-pr">#></span> 2 2 54.8811636</span> +<span class="r-out co"><span class="r-pr">#></span> 3 3 40.6569660</span> +<span class="r-out co"><span class="r-pr">#></span> 4 4 30.1194212</span> +<span class="r-out co"><span class="r-pr">#></span> 5 5 22.3130160</span> +<span class="r-out co"><span class="r-pr">#></span> 6 6 16.5298888</span> +<span class="r-out co"><span class="r-pr">#></span> 7 7 12.2456428</span> +<span class="r-out co"><span class="r-pr">#></span> 8 8 9.0717953</span> +<span class="r-out co"><span class="r-pr">#></span> 9 9 6.7205513</span> +<span class="r-out co"><span class="r-pr">#></span> 10 10 4.9787068</span> +<span class="r-out co"><span class="r-pr">#></span> 11 11 3.6883167</span> +<span class="r-out co"><span class="r-pr">#></span> 12 12 2.7323722</span> +<span class="r-out co"><span class="r-pr">#></span> 13 13 2.0241911</span> +<span class="r-out co"><span class="r-pr">#></span> 14 14 1.4995577</span> +<span class="r-out co"><span class="r-pr">#></span> 15 15 1.1108996</span> +<span class="r-out co"><span class="r-pr">#></span> 16 16 0.8229747</span> +<span class="r-out co"><span class="r-pr">#></span> 17 17 0.6096747</span> +<span class="r-out co"><span class="r-pr">#></span> 18 18 0.4516581</span> +<span class="r-out co"><span class="r-pr">#></span> 19 19 0.3345965</span> +<span class="r-out co"><span class="r-pr">#></span> 20 20 0.2478752</span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, <span class="fl">0</span><span class="op">:</span><span class="fl">20</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"eigen"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol</span> +<span class="r-out co"><span class="r-pr">#></span> 0 0 100.0000000</span> +<span class="r-out co"><span class="r-pr">#></span> 1 1 74.0818221</span> +<span class="r-out co"><span class="r-pr">#></span> 2 2 54.8811636</span> +<span class="r-out co"><span class="r-pr">#></span> 3 3 40.6569660</span> +<span class="r-out co"><span class="r-pr">#></span> 4 4 30.1194212</span> +<span class="r-out co"><span class="r-pr">#></span> 5 5 22.3130160</span> +<span class="r-out co"><span class="r-pr">#></span> 6 6 16.5298888</span> +<span class="r-out co"><span class="r-pr">#></span> 7 7 12.2456428</span> +<span class="r-out co"><span class="r-pr">#></span> 8 8 9.0717953</span> +<span class="r-out co"><span class="r-pr">#></span> 9 9 6.7205513</span> +<span class="r-out co"><span class="r-pr">#></span> 10 10 4.9787068</span> +<span class="r-out co"><span class="r-pr">#></span> 11 11 3.6883167</span> +<span class="r-out co"><span class="r-pr">#></span> 12 12 2.7323722</span> +<span class="r-out co"><span class="r-pr">#></span> 13 13 2.0241911</span> +<span class="r-out co"><span class="r-pr">#></span> 14 14 1.4995577</span> +<span class="r-out co"><span class="r-pr">#></span> 15 15 1.1108997</span> +<span class="r-out co"><span class="r-pr">#></span> 16 16 0.8229747</span> +<span class="r-out co"><span class="r-pr">#></span> 17 17 0.6096747</span> +<span class="r-out co"><span class="r-pr">#></span> 18 18 0.4516581</span> +<span class="r-out co"><span class="r-pr">#></span> 19 19 0.3345965</span> +<span class="r-out co"><span class="r-pr">#></span> 20 20 0.2478752</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Compare integration methods to analytical solution</span></span></span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, <span class="fl">0</span><span class="op">:</span><span class="fl">20</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"analytical"</span><span class="op">)</span><span class="op">[</span><span class="fl">21</span>,<span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol </span> +<span class="r-out co"><span class="r-pr">#></span> 20.0000000 0.2478752 </span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, <span class="fl">0</span><span class="op">:</span><span class="fl">20</span>,</span></span> +<span class="r-in"><span> method <span class="op">=</span> <span class="st">"lsoda"</span>, use_compiled <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">[</span><span class="fl">21</span>,<span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol </span> +<span class="r-out co"><span class="r-pr">#></span> 20.0000000 0.2478752 </span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, <span class="fl">0</span><span class="op">:</span><span class="fl">20</span>,</span></span> +<span class="r-in"><span> method <span class="op">=</span> <span class="st">"ode45"</span>, use_compiled <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">[</span><span class="fl">21</span>,<span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol </span> +<span class="r-out co"><span class="r-pr">#></span> 20.0000000 0.2478752 </span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, <span class="fl">0</span><span class="op">:</span><span class="fl">20</span>,</span></span> +<span class="r-in"><span> method <span class="op">=</span> <span class="st">"rk4"</span>, use_compiled <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">[</span><span class="fl">21</span>,<span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol </span> +<span class="r-out co"><span class="r-pr">#></span> 20.0000000 0.2480043 </span> +<span class="r-in"><span><span class="co"># rk4 is not as precise here</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The number of output times used to make a lot of difference until the</span></span></span> +<span class="r-in"><span><span class="co"># default for atol was adjusted</span></span></span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">20</span>, by <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span><span class="op">)</span><span class="op">[</span><span class="fl">201</span>,<span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol </span> +<span class="r-out co"><span class="r-pr">#></span> 20.0000000 0.2478752 </span> +<span class="r-in"><span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_degradinol <span class="op">=</span> <span class="fl">0.3</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>degradinol <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">20</span>, by <span class="op">=</span> <span class="fl">0.01</span><span class="op">)</span><span class="op">)</span><span class="op">[</span><span class="fl">2001</span>,<span class="op">]</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> time degradinol </span> +<span class="r-out co"><span class="r-pr">#></span> 20.0000000 0.2478752 </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Comparison of the performance of solution types</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="kw">if</span><span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="va"><a href="http://rbenchmark.googlecode.com" class="external-link">rbenchmark</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/rbenchmark/man/benchmark.html" class="external-link">benchmark</a></span><span class="op">(</span>replications <span class="op">=</span> <span class="fl">10</span>, order <span class="op">=</span> <span class="st">"relative"</span>, columns <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"test"</span>, <span class="st">"relative"</span>, <span class="st">"elapsed"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> eigen <span class="op">=</span> <span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO_SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.15</span>, f_parent_to_m1 <span class="op">=</span> <span class="fl">0.5</span>, k_m1 <span class="op">=</span> <span class="fl">0.01</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, m1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">20</span>, by <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"eigen"</span><span class="op">)</span><span class="op">[</span><span class="fl">201</span>,<span class="op">]</span>,</span></span> +<span class="r-in"><span> deSolve_compiled <span class="op">=</span> <span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO_SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.15</span>, f_parent_to_m1 <span class="op">=</span> <span class="fl">0.5</span>, k_m1 <span class="op">=</span> <span class="fl">0.01</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, m1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">20</span>, by <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span><span class="op">)</span><span class="op">[</span><span class="fl">201</span>,<span class="op">]</span>,</span></span> +<span class="r-in"><span> deSolve <span class="op">=</span> <span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO_SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.15</span>, f_parent_to_m1 <span class="op">=</span> <span class="fl">0.5</span>, k_m1 <span class="op">=</span> <span class="fl">0.01</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, m1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">20</span>, by <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, use_compiled <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">[</span><span class="fl">201</span>,<span class="op">]</span>,</span></span> +<span class="r-in"><span> analytical <span class="op">=</span> <span class="fu">mkinpredict</span><span class="op">(</span><span class="va">SFO_SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.15</span>, f_parent_to_m1 <span class="op">=</span> <span class="fl">0.5</span>, k_m1 <span class="op">=</span> <span class="fl">0.01</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, m1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">20</span>, by <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"analytical"</span>, use_compiled <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span><span class="op">[</span><span class="fl">201</span>,<span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">}</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> test relative elapsed</span> +<span class="r-out co"><span class="r-pr">#></span> 2 deSolve_compiled 1.0 0.002</span> +<span class="r-out co"><span class="r-pr">#></span> 4 analytical 1.0 0.002</span> +<span class="r-out co"><span class="r-pr">#></span> 1 eigen 4.0 0.008</span> +<span class="r-out co"><span class="r-pr">#></span> 3 deSolve 30.5 0.061</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="co"># Predict from a fitted model</span></span></span> +<span class="r-in"><span> <span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, solution_type <span class="op">=</span> <span class="st">"deSolve"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/utils/head.html" class="external-link">head</a></span><span class="op">(</span><span class="fu">mkinpredict</span><span class="op">(</span><span class="va">f</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-err co"><span class="r-pr">#></span> <span class="error">Error in !is.null(x$symbols) & use_symbols:</span> operations are possible only for numeric, logical or complex types</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinpredict.mkinfit.html b/docs/dev/reference/mkinpredict.mkinfit.html new file mode 100644 index 00000000..5f03c04c --- /dev/null +++ b/docs/dev/reference/mkinpredict.mkinfit.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html"> + </head> +</html> + diff --git a/docs/dev/reference/mkinpredict.mkinmod.html b/docs/dev/reference/mkinpredict.mkinmod.html new file mode 100644 index 00000000..5f03c04c --- /dev/null +++ b/docs/dev/reference/mkinpredict.mkinmod.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html"> + </head> +</html> + diff --git a/docs/dev/reference/mkinresplot-1.png b/docs/dev/reference/mkinresplot-1.png Binary files differnew file mode 100644 index 00000000..29da1fda --- /dev/null +++ b/docs/dev/reference/mkinresplot-1.png diff --git a/docs/dev/reference/mkinresplot.html b/docs/dev/reference/mkinresplot.html new file mode 100644 index 00000000..b9de393d --- /dev/null +++ b/docs/dev/reference/mkinresplot.html @@ -0,0 +1,203 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Function to plot residuals stored in an mkin object — mkinresplot • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Function to plot residuals stored in an mkin object — mkinresplot"><meta name="description" content="This function plots the residuals for the specified subset of the observed +variables from an mkinfit object. A combined plot of the fitted model and +the residuals can be obtained using plot.mkinfit using the +argument show_residuals = TRUE."><meta property="og:description" content="This function plots the residuals for the specified subset of the observed +variables from an mkinfit object. A combined plot of the fitted model and +the residuals can be obtained using plot.mkinfit using the +argument show_residuals = TRUE."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Function to plot residuals stored in an mkin object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mkinresplot.R" class="external-link"><code>R/mkinresplot.R</code></a></small> + <div class="d-none name"><code>mkinresplot.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function plots the residuals for the specified subset of the observed +variables from an mkinfit object. A combined plot of the fitted model and +the residuals can be obtained using <code><a href="plot.mkinfit.html">plot.mkinfit</a></code> using the +argument <code>show_residuals = TRUE</code>.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mkinresplot</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> obs_vars <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">object</span><span class="op">$</span><span class="va">mkinmod</span><span class="op">$</span><span class="va">map</span><span class="op">)</span>,</span> +<span> xlim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1.1</span> <span class="op">*</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="va">object</span><span class="op">$</span><span class="va">data</span><span class="op">$</span><span class="va">time</span><span class="op">)</span><span class="op">)</span>,</span> +<span> standardized <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> xlab <span class="op">=</span> <span class="st">"Time"</span>,</span> +<span> ylab <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/ifelse.html" class="external-link">ifelse</a></span><span class="op">(</span><span class="va">standardized</span>, <span class="st">"Standardized residual"</span>, <span class="st">"Residual"</span><span class="op">)</span>,</span> +<span> maxabs <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> legend <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> lpos <span class="op">=</span> <span class="st">"topright"</span>,</span> +<span> col_obs <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> pch_obs <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> frame <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>A fit represented in an <code><a href="mkinfit.html">mkinfit</a></code> object.</p></dd> + + +<dt id="arg-obs-vars">obs_vars<a class="anchor" aria-label="anchor" href="#arg-obs-vars"></a></dt> +<dd><p>A character vector of names of the observed variables for +which residuals should be plotted. Defaults to all observed variables in +the model</p></dd> + + +<dt id="arg-xlim">xlim<a class="anchor" aria-label="anchor" href="#arg-xlim"></a></dt> +<dd><p>plot range in x direction.</p></dd> + + +<dt id="arg-standardized">standardized<a class="anchor" aria-label="anchor" href="#arg-standardized"></a></dt> +<dd><p>Should the residuals be standardized by dividing by the +standard deviation given by the error model of the fit?</p></dd> + + +<dt id="arg-xlab">xlab<a class="anchor" aria-label="anchor" href="#arg-xlab"></a></dt> +<dd><p>Label for the x axis.</p></dd> + + +<dt id="arg-ylab">ylab<a class="anchor" aria-label="anchor" href="#arg-ylab"></a></dt> +<dd><p>Label for the y axis.</p></dd> + + +<dt id="arg-maxabs">maxabs<a class="anchor" aria-label="anchor" href="#arg-maxabs"></a></dt> +<dd><p>Maximum absolute value of the residuals. This is used for the +scaling of the y axis and defaults to "auto".</p></dd> + + +<dt id="arg-legend">legend<a class="anchor" aria-label="anchor" href="#arg-legend"></a></dt> +<dd><p>Should a legend be plotted?</p></dd> + + +<dt id="arg-lpos">lpos<a class="anchor" aria-label="anchor" href="#arg-lpos"></a></dt> +<dd><p>Where should the legend be placed? Default is "topright". Will +be passed on to <code><a href="https://rdrr.io/r/graphics/legend.html" class="external-link">legend</a></code>.</p></dd> + + +<dt id="arg-col-obs">col_obs<a class="anchor" aria-label="anchor" href="#arg-col-obs"></a></dt> +<dd><p>Colors for the observed variables.</p></dd> + + +<dt id="arg-pch-obs">pch_obs<a class="anchor" aria-label="anchor" href="#arg-pch-obs"></a></dt> +<dd><p>Symbols to be used for the observed variables.</p></dd> + + +<dt id="arg-frame">frame<a class="anchor" aria-label="anchor" href="#arg-frame"></a></dt> +<dd><p>Should a frame be drawn around the plots?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>further arguments passed to <code><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>Nothing is returned by this function, as it is called for its side +effect, namely to produce a plot.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><code><a href="mkinplot.html">mkinplot</a></code>, for a way to plot the data and the fitted +lines of the mkinfit object, and <code><a href="plot.mkinfit.html">plot_res</a></code> for a function +combining the plot of the fit and the residual plot.</p></div> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke and Katrin Lindenberger</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">model</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span><span class="op">)</span>, m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">model</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span><span class="fu">mkinresplot</span><span class="op">(</span><span class="va">fit</span>, <span class="st">"m1"</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mkinresplot-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/mkinsub.html b/docs/dev/reference/mkinsub.html new file mode 100644 index 00000000..0ffb4f23 --- /dev/null +++ b/docs/dev/reference/mkinsub.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html"> + </head> +</html> + diff --git a/docs/dev/reference/mmkin-1.png b/docs/dev/reference/mmkin-1.png Binary files differnew file mode 100644 index 00000000..060775ff --- /dev/null +++ b/docs/dev/reference/mmkin-1.png diff --git a/docs/dev/reference/mmkin-2.png b/docs/dev/reference/mmkin-2.png Binary files differnew file mode 100644 index 00000000..242a50fa --- /dev/null +++ b/docs/dev/reference/mmkin-2.png diff --git a/docs/dev/reference/mmkin-3.png b/docs/dev/reference/mmkin-3.png Binary files differnew file mode 100644 index 00000000..ef013dea --- /dev/null +++ b/docs/dev/reference/mmkin-3.png diff --git a/docs/dev/reference/mmkin-4.png b/docs/dev/reference/mmkin-4.png Binary files differnew file mode 100644 index 00000000..c08d231d --- /dev/null +++ b/docs/dev/reference/mmkin-4.png diff --git a/docs/dev/reference/mmkin-5.png b/docs/dev/reference/mmkin-5.png Binary files differnew file mode 100644 index 00000000..fe5797b4 --- /dev/null +++ b/docs/dev/reference/mmkin-5.png diff --git a/docs/dev/reference/mmkin.html b/docs/dev/reference/mmkin.html new file mode 100644 index 00000000..c2bbd3c4 --- /dev/null +++ b/docs/dev/reference/mmkin.html @@ -0,0 +1,239 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin"><meta name="description" content="This function calls mkinfit on all combinations of models and +datasets specified in its first two arguments."><meta property="og:description" content="This function calls mkinfit on all combinations of models and +datasets specified in its first two arguments."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Fit one or more kinetic models with one or more state variables to one or more datasets</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/mmkin.R" class="external-link"><code>R/mmkin.R</code></a></small> + <div class="d-none name"><code>mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function calls <code><a href="mkinfit.html">mkinfit</a></code> on all combinations of models and +datasets specified in its first two arguments.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">mmkin</span><span class="op">(</span></span> +<span> models <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span><span class="op">)</span>,</span> +<span> <span class="va">datasets</span>,</span> +<span> cores <span class="op">=</span> <span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.info.html" class="external-link">Sys.info</a></span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="st">"sysname"</span><span class="op">]</span> <span class="op">==</span> <span class="st">"Windows"</span><span class="op">)</span> <span class="fl">1</span> <span class="kw">else</span> <span class="fu">parallel</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> cluster <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-models">models<a class="anchor" aria-label="anchor" href="#arg-models"></a></dt> +<dd><p>Either a character vector of shorthand names like +<code>c("SFO", "FOMC", "DFOP", "HS", "SFORB")</code>, or an optionally named +list of <code><a href="mkinmod.html">mkinmod</a></code> objects.</p></dd> + + +<dt id="arg-datasets">datasets<a class="anchor" aria-label="anchor" href="#arg-datasets"></a></dt> +<dd><p>An optionally named list of datasets suitable as observed +data for <code><a href="mkinfit.html">mkinfit</a></code>.</p></dd> + + +<dt id="arg-cores">cores<a class="anchor" aria-label="anchor" href="#arg-cores"></a></dt> +<dd><p>The number of cores to be used for multicore processing. This +is only used when the <code>cluster</code> argument is <code>NULL</code>. On Windows +machines, cores > 1 is not supported, you need to use the <code>cluster</code> +argument to use multiple logical processors. Per default, all cores +detected by <code><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">parallel::detectCores()</a></code> are used, except on Windows where +the default is 1.</p></dd> + + +<dt id="arg-cluster">cluster<a class="anchor" aria-label="anchor" href="#arg-cluster"></a></dt> +<dd><p>A cluster as returned by <code>makeCluster</code> to be used +for parallel execution.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used.</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An mmkin object.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A two-dimensional <code><a href="https://rdrr.io/r/base/array.html" class="external-link">array</a></code> of <code><a href="mkinfit.html">mkinfit</a></code> +objects and/or try-errors that can be indexed using the model names for the +first index (row index) and the dataset names for the second index (column +index).</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><code><a href="Extract.mmkin.html">[.mmkin</a></code> for subsetting, <code><a href="plot.mmkin.html">plot.mmkin</a></code> for +plotting.</p></div> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">m_synth_SFO_lin</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">m_synth_FOMC_lin</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="st">"M1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">models</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>SFO_lin <span class="op">=</span> <span class="va">m_synth_SFO_lin</span>, FOMC_lin <span class="op">=</span> <span class="va">m_synth_FOMC_lin</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">datasets</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">synthetic_data_for_UBA_2014</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">3</span><span class="op">]</span>, <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="va">x</span><span class="op">$</span><span class="va">data</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">datasets</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Dataset"</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">time_default</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">fits.0</span> <span class="op"><-</span> <span class="fu">mmkin</span><span class="op">(</span><span class="va">models</span>, <span class="va">datasets</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">time_1</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/system.time.html" class="external-link">system.time</a></span><span class="op">(</span><span class="va">fits.4</span> <span class="op"><-</span> <span class="fu">mmkin</span><span class="op">(</span><span class="va">models</span>, <span class="va">datasets</span>, cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">time_default</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> user system elapsed </span> +<span class="r-out co"><span class="r-pr">#></span> 1.522 0.957 0.720 </span> +<span class="r-in"><span><span class="va">time_1</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> user system elapsed </span> +<span class="r-out co"><span class="r-pr">#></span> 1.991 0.024 2.015 </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fits.0</span><span class="op">[[</span><span class="st">"SFO_lin"</span>, <span class="fl">2</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_M1 parent_sink M1_M2 M1_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 0.7340481 0.2659519 0.7505690 0.2494310 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> parent 0.8777689 2.915885</span> +<span class="r-out co"><span class="r-pr">#></span> M1 2.3257403 7.725942</span> +<span class="r-out co"><span class="r-pr">#></span> M2 33.7201060 112.015767</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># plot.mkinfit handles rows or columns of mmkin result objects</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits.0</span><span class="op">[</span><span class="fl">1</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mmkin-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits.0</span><span class="op">[</span><span class="fl">1</span>, <span class="op">]</span>, obs_var <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mmkin-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits.0</span><span class="op">[</span>, <span class="fl">1</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mmkin-3.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># Use double brackets to extract a single mkinfit object, which will be plotted</span></span></span> +<span class="r-in"><span><span class="co"># by plot.mkinfit and can be plotted using plot_sep</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits.0</span><span class="op">[[</span><span class="fl">1</span>, <span class="fl">1</span><span class="op">]</span><span class="op">]</span>, sep_obs <span class="op">=</span> <span class="cn">TRUE</span>, show_residuals <span class="op">=</span> <span class="cn">TRUE</span>, show_errmin <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mmkin-4.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">fits.0</span><span class="op">[[</span><span class="fl">1</span>, <span class="fl">1</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># Plotting with mmkin (single brackets, extracting an mmkin object) does not</span></span></span> +<span class="r-in"><span><span class="co"># allow to plot the observed variables separately</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits.0</span><span class="op">[</span><span class="fl">1</span>, <span class="fl">1</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="mmkin-5.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># On Windows, we can use multiple cores by making a cluster first</span></span></span> +<span class="r-in"><span><span class="va">cl</span> <span class="op"><-</span> <span class="fu">parallel</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makePSOCKcluster</a></span><span class="op">(</span><span class="fl">12</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f</span> <span class="op"><-</span> <span class="fu">mmkin</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>A <span class="op">=</span> <span class="va">FOCUS_2006_A</span>, B <span class="op">=</span> <span class="va">FOCUS_2006_B</span>, C <span class="op">=</span> <span class="va">FOCUS_2006_C</span>, D <span class="op">=</span> <span class="va">FOCUS_2006_D</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> cluster <span class="op">=</span> <span class="va">cl</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> <mmkin> object</span> +<span class="r-out co"><span class="r-pr">#></span> Status of individual fits:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model A B C D </span> +<span class="r-out co"><span class="r-pr">#></span> SFO OK OK OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> FOMC C OK OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP OK OK OK OK</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> C: Optimisation did not converge:</span> +<span class="r-out co"><span class="r-pr">#></span> false convergence (8)</span> +<span class="r-out co"><span class="r-pr">#></span> OK: No warnings</span> +<span class="r-in"><span><span class="co"># We get false convergence for the FOMC fit to FOCUS_2006_A because this</span></span></span> +<span class="r-in"><span><span class="co"># dataset is really SFO, and the FOMC fit is overparameterised</span></span></span> +<span class="r-in"><span><span class="fu">parallel</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">stopCluster</a></span><span class="op">(</span><span class="va">cl</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/multistart-1.png b/docs/dev/reference/multistart-1.png Binary files differnew file mode 100644 index 00000000..d326b0c4 --- /dev/null +++ b/docs/dev/reference/multistart-1.png diff --git a/docs/dev/reference/multistart-2.png b/docs/dev/reference/multistart-2.png Binary files differnew file mode 100644 index 00000000..b6ae3051 --- /dev/null +++ b/docs/dev/reference/multistart-2.png diff --git a/docs/dev/reference/multistart.html b/docs/dev/reference/multistart.html new file mode 100644 index 00000000..3db38d97 --- /dev/null +++ b/docs/dev/reference/multistart.html @@ -0,0 +1,212 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Perform a hierarchical model fit with multiple starting values — multistart • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Perform a hierarchical model fit with multiple starting values — multistart"><meta name="description" content="The purpose of this method is to check if a certain algorithm for fitting +nonlinear hierarchical models (also known as nonlinear mixed-effects models) +will reliably yield results that are sufficiently similar to each other, if +started with a certain range of reasonable starting parameters. It is +inspired by the article on practical identifiabiliy in the frame of nonlinear +mixed-effects models by Duchesne et al (2021)."><meta property="og:description" content="The purpose of this method is to check if a certain algorithm for fitting +nonlinear hierarchical models (also known as nonlinear mixed-effects models) +will reliably yield results that are sufficiently similar to each other, if +started with a certain range of reasonable starting parameters. It is +inspired by the article on practical identifiabiliy in the frame of nonlinear +mixed-effects models by Duchesne et al (2021)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Perform a hierarchical model fit with multiple starting values</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/multistart.R" class="external-link"><code>R/multistart.R</code></a></small> + <div class="d-none name"><code>multistart.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The purpose of this method is to check if a certain algorithm for fitting +nonlinear hierarchical models (also known as nonlinear mixed-effects models) +will reliably yield results that are sufficiently similar to each other, if +started with a certain range of reasonable starting parameters. It is +inspired by the article on practical identifiabiliy in the frame of nonlinear +mixed-effects models by Duchesne et al (2021).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">multistart</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> n <span class="op">=</span> <span class="fl">50</span>,</span> +<span> cores <span class="op">=</span> <span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Sys.info.html" class="external-link">Sys.info</a></span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="st">"sysname"</span><span class="op">]</span> <span class="op">==</span> <span class="st">"Windows"</span><span class="op">)</span> <span class="fl">1</span> <span class="kw">else</span> <span class="fu">parallel</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/r/parallel/detectCores.html" class="external-link">detectCores</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> cluster <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'saem.mmkin'</span></span> +<span><span class="fu">multistart</span><span class="op">(</span><span class="va">object</span>, n <span class="op">=</span> <span class="fl">50</span>, cores <span class="op">=</span> <span class="fl">1</span>, cluster <span class="op">=</span> <span class="cn">NULL</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'multistart'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">best</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># Default S3 method</span></span> +<span><span class="fu">best</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">which.best</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># Default S3 method</span></span> +<span><span class="fu">which.best</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>The fit object to work with</p></dd> + + +<dt id="arg-n">n<a class="anchor" aria-label="anchor" href="#arg-n"></a></dt> +<dd><p>How many different combinations of starting parameters should be +used?</p></dd> + + +<dt id="arg-cores">cores<a class="anchor" aria-label="anchor" href="#arg-cores"></a></dt> +<dd><p>How many fits should be run in parallel (only on posix platforms)?</p></dd> + + +<dt id="arg-cluster">cluster<a class="anchor" aria-label="anchor" href="#arg-cluster"></a></dt> +<dd><p>A cluster as returned by <a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">parallel::makeCluster</a> to be used +for parallel execution.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Passed to the update function.</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>The multistart object to print</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A list of <a href="saem.html">saem.mmkin</a> objects, with class attributes +'multistart.saem.mmkin' and 'multistart'.</p> +<p>The object with the highest likelihood</p> +<p>The index of the object with the highest likelihood</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Duchesne R, Guillemin A, Gandrillon O, Crauste F. Practical +identifiability in the frame of nonlinear mixed effects models: the example +of the in vitro erythropoiesis. BMC Bioinformatics. 2021 Oct 4;22(1):478. +doi: 10.1186/s12859-021-04373-4.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><a href="parplot.html">parplot</a>, <a href="llhist.html">llhist</a></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://pkgdown.jrwb.de/mkin/">mkin</a></span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dmta_ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">7</span>, <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="va">ds_i</span> <span class="op"><-</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span><span class="op">[[</span><span class="va">i</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span></span></span> +<span class="r-in"><span> <span class="va">ds_i</span><span class="op">[</span><span class="va">ds_i</span><span class="op">$</span><span class="va">name</span> <span class="op">==</span> <span class="st">"DMTAP"</span>, <span class="st">"name"</span><span class="op">]</span> <span class="op"><-</span> <span class="st">"DMTA"</span></span></span> +<span class="r-in"><span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op"><-</span> <span class="va">ds_i</span><span class="op">$</span><span class="va">time</span> <span class="op">*</span> <span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">f_time_norm</span><span class="op">[</span><span class="va">i</span><span class="op">]</span></span></span> +<span class="r-in"><span> <span class="va">ds_i</span></span></span> +<span class="r-in"><span><span class="op">}</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">sapply</a></span><span class="op">(</span><span class="va">dimethenamid_2018</span><span class="op">$</span><span class="va">ds</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="va">ds</span><span class="op">$</span><span class="va">title</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/cbind.html" class="external-link">rbind</a></span><span class="op">(</span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span>, <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 1"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="va">dmta_ds</span><span class="op">[[</span><span class="st">"Elliot 2"</span><span class="op">]</span><span class="op">]</span> <span class="op"><-</span> <span class="cn">NULL</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f_mmkin</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="va">dmta_ds</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, cores <span class="op">=</span> <span class="fl">7</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_full</span> <span class="op"><-</span> <span class="fu"><a href="saem.html">saem</a></span><span class="op">(</span><span class="va">f_mmkin</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_full_multi</span> <span class="op"><-</span> <span class="fu">multistart</span><span class="op">(</span><span class="va">f_saem_full</span>, n <span class="op">=</span> <span class="fl">16</span>, cores <span class="op">=</span> <span class="fl">16</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="parplot.html">parplot</a></span><span class="op">(</span><span class="va">f_saem_full_multi</span>, lpos <span class="op">=</span> <span class="st">"topleft"</span>, las <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="multistart-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_full</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] "sd(log_k2)"</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f_saem_reduced</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_full</span>, no_random_effect <span class="op">=</span> <span class="st">"log_k2"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_reduced</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># On Windows, we need to create a PSOCK cluster first and refer to it</span></span></span> +<span class="r-in"><span><span class="co"># in the call to multistart()</span></span></span> +<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">parallel</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">cl</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">makePSOCKcluster</a></span><span class="op">(</span><span class="fl">12</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_reduced_multi</span> <span class="op"><-</span> <span class="fu">multistart</span><span class="op">(</span><span class="va">f_saem_reduced</span>, n <span class="op">=</span> <span class="fl">16</span>, cluster <span class="op">=</span> <span class="va">cl</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="parplot.html">parplot</a></span><span class="op">(</span><span class="va">f_saem_reduced_multi</span>, lpos <span class="op">=</span> <span class="st">"topright"</span>, ylim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.5</span>, <span class="fl">2</span><span class="op">)</span>, las <span class="op">=</span> <span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="multistart-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/parallel/makeCluster.html" class="external-link">stopCluster</a></span><span class="op">(</span><span class="va">cl</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/multistart.saem.mmkin.html b/docs/dev/reference/multistart.saem.mmkin.html new file mode 100644 index 00000000..06f15f0c --- /dev/null +++ b/docs/dev/reference/multistart.saem.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html"> + </head> +</html> + diff --git a/docs/dev/reference/nafta-1.png b/docs/dev/reference/nafta-1.png Binary files differnew file mode 100644 index 00000000..98d4246c --- /dev/null +++ b/docs/dev/reference/nafta-1.png diff --git a/docs/dev/reference/nafta.html b/docs/dev/reference/nafta.html new file mode 100644 index 00000000..f7b018e5 --- /dev/null +++ b/docs/dev/reference/nafta.html @@ -0,0 +1,215 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Evaluate parent kinetics using the NAFTA guidance — nafta • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Evaluate parent kinetics using the NAFTA guidance — nafta"><meta name="description" content="The function fits the SFO, IORE and DFOP models using mmkin +and returns an object of class nafta that has methods for printing +and plotting. +Print nafta objects. The results for the three models are printed in the +order of increasing model complexity, i.e. SFO, then IORE, and finally DFOP."><meta property="og:description" content="The function fits the SFO, IORE and DFOP models using mmkin +and returns an object of class nafta that has methods for printing +and plotting. +Print nafta objects. The results for the three models are printed in the +order of increasing model complexity, i.e. SFO, then IORE, and finally DFOP."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Evaluate parent kinetics using the NAFTA guidance</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/nafta.R" class="external-link"><code>R/nafta.R</code></a></small> + <div class="d-none name"><code>nafta.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The function fits the SFO, IORE and DFOP models using <code><a href="mmkin.html">mmkin</a></code> +and returns an object of class <code>nafta</code> that has methods for printing +and plotting.</p> +<p>Print nafta objects. The results for the three models are printed in the +order of increasing model complexity, i.e. SFO, then IORE, and finally DFOP.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">nafta</span><span class="op">(</span><span class="va">ds</span>, title <span class="op">=</span> <span class="cn">NA</span>, quiet <span class="op">=</span> <span class="cn">FALSE</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'nafta'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, digits <span class="op">=</span> <span class="fl">3</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>NAFTA (2011) Guidance for evaluating and calculating degradation +kinetics in environmental media. NAFTA Technical Working Group on +Pesticides +<a href="https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/guidance-evaluating-and-calculating-degradation" class="external-link">https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/guidance-evaluating-and-calculating-degradation</a> +accessed 2019-02-22</p> +<p>US EPA (2015) Standard Operating Procedure for Using the NAFTA Guidance to +Calculate Representative Half-life Values and Characterizing Pesticide +Degradation +<a href="https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance" class="external-link">https://www.epa.gov/pesticide-science-and-assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance</a></p> + </div> + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-ds">ds<a class="anchor" aria-label="anchor" href="#arg-ds"></a></dt> +<dd><p>A dataframe that must contain one variable called "time" with the +time values specified by the <code>time</code> argument, one column called +"name" with the grouping of the observed values, and finally one column of +observed values called "value".</p></dd> + + +<dt id="arg-title">title<a class="anchor" aria-label="anchor" href="#arg-title"></a></dt> +<dd><p>Optional title of the dataset</p></dd> + + +<dt id="arg-quiet">quiet<a class="anchor" aria-label="anchor" href="#arg-quiet"></a></dt> +<dd><p>Should the evaluation text be shown?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further arguments passed to <code><a href="mmkin.html">mmkin</a></code> (not for the +printing method).</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An <code>nafta</code> object.</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>Number of digits to be used for printing parameters and +dissipation times.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>An list of class <code>nafta</code>. The list element named "mmkin" is the +<code><a href="mmkin.html">mmkin</a></code> object containing the fits of the three models. The +list element named "title" contains the title of the dataset used. The +list element "data" contains the dataset used in the fits.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">nafta_evaluation</span> <span class="op"><-</span> <span class="fu">nafta</span><span class="op">(</span><span class="va">NAFTA_SOP_Appendix_D</span>, cores <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> The SFO model is rejected as S_SFO is equal or higher than the critical value S_c</span> +<span class="r-msg co"><span class="r-pr">#></span> The representative half-life of the IORE model is longer than the one corresponding</span> +<span class="r-msg co"><span class="r-pr">#></span> to the terminal degradation rate found with the DFOP model.</span> +<span class="r-msg co"><span class="r-pr">#></span> The representative half-life obtained from the DFOP model may be used</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">nafta_evaluation</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Sums of squares:</span> +<span class="r-out co"><span class="r-pr">#></span> SFO IORE DFOP </span> +<span class="r-out co"><span class="r-pr">#></span> 1378.6832 615.7730 517.8836 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Critical sum of squares for checking the SFO model:</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 717.4598</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> $SFO</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 83.7558 1.80e-14 77.18268 90.3288</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.0017 7.43e-05 0.00112 0.0026</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 8.7518 1.22e-05 5.64278 11.8608</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $IORE</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 9.69e+01 NA 8.88e+01 1.05e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k__iore_parent 8.40e-14 NA 1.79e-18 3.94e-09</span> +<span class="r-out co"><span class="r-pr">#></span> N_parent 6.68e+00 NA 4.19e+00 9.17e+00</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.85e+00 NA 3.76e+00 7.94e+00</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $DFOP</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 9.76e+01 1.94e-13 9.02e+01 1.05e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k1 4.24e-02 5.92e-03 2.03e-02 8.88e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k2 8.24e-04 6.48e-03 3.89e-04 1.75e-03</span> +<span class="r-out co"><span class="r-pr">#></span> g 2.88e-01 2.47e-05 1.95e-01 4.03e-01</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.36e+00 2.22e-05 3.43e+00 7.30e+00</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> DTx values:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50_rep</span> +<span class="r-out co"><span class="r-pr">#></span> SFO 407 1350 407</span> +<span class="r-out co"><span class="r-pr">#></span> IORE 541 5190000 1560000</span> +<span class="r-out co"><span class="r-pr">#></span> DFOP 429 2380 841</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Representative half-life:</span> +<span class="r-out co"><span class="r-pr">#></span> [1] 841.41</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">nafta_evaluation</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="nafta-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/nlme-1.png b/docs/dev/reference/nlme-1.png Binary files differnew file mode 100644 index 00000000..9583da2a --- /dev/null +++ b/docs/dev/reference/nlme-1.png diff --git a/docs/dev/reference/nlme-2.png b/docs/dev/reference/nlme-2.png Binary files differnew file mode 100644 index 00000000..08e3b642 --- /dev/null +++ b/docs/dev/reference/nlme-2.png diff --git a/docs/dev/reference/nlme.html b/docs/dev/reference/nlme.html new file mode 100644 index 00000000..e3c13f48 --- /dev/null +++ b/docs/dev/reference/nlme.html @@ -0,0 +1,197 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Helper functions to create nlme models from mmkin row objects — nlme_function • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Helper functions to create nlme models from mmkin row objects — nlme_function"><meta name="description" content="These functions facilitate setting up a nonlinear mixed effects model for +an mmkin row object. An mmkin row object is essentially a list of mkinfit +objects that have been obtained by fitting the same model to a list of +datasets. They are used internally by the nlme.mmkin() method."><meta property="og:description" content="These functions facilitate setting up a nonlinear mixed effects model for +an mmkin row object. An mmkin row object is essentially a list of mkinfit +objects that have been obtained by fitting the same model to a list of +datasets. They are used internally by the nlme.mmkin() method."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Helper functions to create nlme models from mmkin row objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/nlme.R" class="external-link"><code>R/nlme.R</code></a></small> + <div class="d-none name"><code>nlme.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>These functions facilitate setting up a nonlinear mixed effects model for +an mmkin row object. An mmkin row object is essentially a list of mkinfit +objects that have been obtained by fitting the same model to a list of +datasets. They are used internally by the <code><a href="nlme.mmkin.html">nlme.mmkin()</a></code> method.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">nlme_function</span><span class="op">(</span><span class="va">object</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">nlme_data</span><span class="op">(</span><span class="va">object</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An mmkin row object containing several fits of the same model to different datasets</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A function that can be used with nlme</p> +<p>A <code><a href="https://rdrr.io/pkg/nlme/man/groupedData.html" class="external-link">nlme::groupedData</a></code> object</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><code><a href="nlme.mmkin.html">nlme.mmkin</a></code></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">sampling_times</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">m_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d_SFO_1</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">98</span><span class="op">)</span>, <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d_SFO_1_long</span> <span class="op"><-</span> <span class="fu"><a href="mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">d_SFO_1</span>, time <span class="op">=</span> <span class="st">"time"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d_SFO_2</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.05</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">102</span><span class="op">)</span>, <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d_SFO_2_long</span> <span class="op"><-</span> <span class="fu"><a href="mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">d_SFO_2</span>, time <span class="op">=</span> <span class="st">"time"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d_SFO_3</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.02</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">103</span><span class="op">)</span>, <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d_SFO_3_long</span> <span class="op"><-</span> <span class="fu"><a href="mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">d_SFO_3</span>, time <span class="op">=</span> <span class="st">"time"</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">d1</span> <span class="op"><-</span> <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_SFO_1</span>, <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fl">3</span>, n <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d2</span> <span class="op"><-</span> <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_SFO_2</span>, <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fl">2</span>, n <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d3</span> <span class="op"><-</span> <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_SFO_3</span>, <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fl">4</span>, n <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>d1 <span class="op">=</span> <span class="va">d1</span>, d2 <span class="op">=</span> <span class="va">d2</span>, d3 <span class="op">=</span> <span class="va">d3</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">ds</span>, cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">mean_dp</span> <span class="op"><-</span> <span class="fu"><a href="mean_degparms.html">mean_degparms</a></span><span class="op">(</span><span class="va">f</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">grouped_data</span> <span class="op"><-</span> <span class="fu">nlme_data</span><span class="op">(</span><span class="va">f</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">nlme_f</span> <span class="op"><-</span> <span class="fu">nlme_function</span><span class="op">(</span><span class="va">f</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># These assignments are necessary for these objects to be</span></span></span> +<span class="r-in"><span><span class="co"># visible to nlme and augPred when evaluation is done by</span></span></span> +<span class="r-in"><span><span class="co"># pkgdown to generate the html docs.</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/assign.html" class="external-link">assign</a></span><span class="op">(</span><span class="st">"nlme_f"</span>, <span class="va">nlme_f</span>, <span class="fu"><a href="https://rdrr.io/r/base/environment.html" class="external-link">globalenv</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/assign.html" class="external-link">assign</a></span><span class="op">(</span><span class="st">"grouped_data"</span>, <span class="va">grouped_data</span>, <span class="fu"><a href="https://rdrr.io/r/base/environment.html" class="external-link">globalenv</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://svn.r-project.org/R-packages/trunk/nlme/" class="external-link">nlme</a></span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">m_nlme</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">value</span> <span class="op">~</span> <span class="fu">nlme_f</span><span class="op">(</span><span class="va">name</span>, <span class="va">time</span>, <span class="va">parent_0</span>, <span class="va">log_k_parent_sink</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> data <span class="op">=</span> <span class="va">grouped_data</span>,</span></span> +<span class="r-in"><span> fixed <span class="op">=</span> <span class="va">parent_0</span> <span class="op">+</span> <span class="va">log_k_parent_sink</span> <span class="op">~</span> <span class="fl">1</span>,</span></span> +<span class="r-in"><span> random <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/pdDiag.html" class="external-link">pdDiag</a></span><span class="op">(</span><span class="va">parent_0</span> <span class="op">+</span> <span class="va">log_k_parent_sink</span> <span class="op">~</span> <span class="fl">1</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> start <span class="op">=</span> <span class="va">mean_dp</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">m_nlme</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Nonlinear mixed-effects model fit by maximum likelihood</span> +<span class="r-out co"><span class="r-pr">#></span> Model: value ~ nlme_f(name, time, parent_0, log_k_parent_sink) </span> +<span class="r-out co"><span class="r-pr">#></span> Data: grouped_data </span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 266.6428 275.8935 -128.3214</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> Formula: list(parent_0 ~ 1, log_k_parent_sink ~ 1)</span> +<span class="r-out co"><span class="r-pr">#></span> Level: ds</span> +<span class="r-out co"><span class="r-pr">#></span> Structure: Diagonal</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent_sink Residual</span> +<span class="r-out co"><span class="r-pr">#></span> StdDev: 0.0003775775 0.7058039 3.065183</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed effects: parent_0 + log_k_parent_sink ~ 1 </span> +<span class="r-out co"><span class="r-pr">#></span> Value Std.Error DF t-value p-value</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 101.18323 0.7900461 43 128.07257 0</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent_sink -3.08708 0.4171755 43 -7.39995 0</span> +<span class="r-out co"><span class="r-pr">#></span> Correlation: </span> +<span class="r-out co"><span class="r-pr">#></span> prnt_0</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent_sink 0.031 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Standardized Within-Group Residuals:</span> +<span class="r-out co"><span class="r-pr">#></span> Min Q1 Med Q3 Max </span> +<span class="r-out co"><span class="r-pr">#></span> -2.38427070 -0.52059848 0.03593021 0.39987268 2.73188969 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Number of Observations: 47</span> +<span class="r-out co"><span class="r-pr">#></span> Number of Groups: 3 </span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/pkg/nlme/man/augPred.html" class="external-link">augPred</a></span><span class="op">(</span><span class="va">m_nlme</span>, level <span class="op">=</span> <span class="fl">0</span><span class="op">:</span><span class="fl">1</span><span class="op">)</span>, layout <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fl">1</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="nlme-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># augPred does not work on fits with more than one state</span></span></span> +<span class="r-in"><span><span class="co"># variable</span></span></span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="co"># The procedure is greatly simplified by the nlme.mmkin function</span></span></span> +<span class="r-in"><span><span class="va">f_nlme</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_nlme</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="nlme-2.png" alt="" width="700" height="433"></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/nlme.mmkin-1.png b/docs/dev/reference/nlme.mmkin-1.png Binary files differnew file mode 100644 index 00000000..a940da0c --- /dev/null +++ b/docs/dev/reference/nlme.mmkin-1.png diff --git a/docs/dev/reference/nlme.mmkin-2.png b/docs/dev/reference/nlme.mmkin-2.png Binary files differnew file mode 100644 index 00000000..b12ddb73 --- /dev/null +++ b/docs/dev/reference/nlme.mmkin-2.png diff --git a/docs/dev/reference/nlme.mmkin-3.png b/docs/dev/reference/nlme.mmkin-3.png Binary files differnew file mode 100644 index 00000000..629fe7d2 --- /dev/null +++ b/docs/dev/reference/nlme.mmkin-3.png diff --git a/docs/dev/reference/nlme.mmkin.html b/docs/dev/reference/nlme.mmkin.html new file mode 100644 index 00000000..40fb16d3 --- /dev/null +++ b/docs/dev/reference/nlme.mmkin.html @@ -0,0 +1,415 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Create an nlme model for an mmkin row object — nlme.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Create an nlme model for an mmkin row object — nlme.mmkin"><meta name="description" content="This functions sets up a nonlinear mixed effects model for an mmkin row +object. An mmkin row object is essentially a list of mkinfit objects that +have been obtained by fitting the same model to a list of datasets."><meta property="og:description" content="This functions sets up a nonlinear mixed effects model for an mmkin row +object. An mmkin row object is essentially a list of mkinfit objects that +have been obtained by fitting the same model to a list of datasets."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Create an nlme model for an mmkin row object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/nlme.mmkin.R" class="external-link"><code>R/nlme.mmkin.R</code></a></small> + <div class="d-none name"><code>nlme.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This functions sets up a nonlinear mixed effects model for an mmkin row +object. An mmkin row object is essentially a list of mkinfit objects that +have been obtained by fitting the same model to a list of datasets.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span></span> +<span> <span class="va">model</span>,</span> +<span> data <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> fixed <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">as.list</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="fu"><a href="mean_degparms.html">mean_degparms</a></span><span class="op">(</span><span class="va">model</span><span class="op">)</span><span class="op">)</span><span class="op">)</span>, <span class="kw">function</span><span class="op">(</span><span class="va">el</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/eval.html" class="external-link">eval</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/parse.html" class="external-link">parse</a></span><span class="op">(</span>text <span class="op">=</span></span> +<span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="va">el</span>, <span class="fl">1</span>, sep <span class="op">=</span> <span class="st">"~"</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">)</span>,</span> +<span> random <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/pdDiag.html" class="external-link">pdDiag</a></span><span class="op">(</span><span class="va">fixed</span><span class="op">)</span>,</span> +<span> <span class="va">groups</span>,</span> +<span> start <span class="op">=</span> <span class="fu"><a href="mean_degparms.html">mean_degparms</a></span><span class="op">(</span><span class="va">model</span>, random <span class="op">=</span> <span class="cn">TRUE</span>, test_log_parms <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> correlation <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> weights <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> <span class="va">subset</span>,</span> +<span> method <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"ML"</span>, <span class="st">"REML"</span><span class="op">)</span>,</span> +<span> na.action <span class="op">=</span> <span class="va">na.fail</span>,</span> +<span> <span class="va">naPattern</span>,</span> +<span> control <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> verbose <span class="op">=</span> <span class="cn">FALSE</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'nlme.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, digits <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"digits"</span><span class="op">)</span> <span class="op">-</span> <span class="fl">3</span><span class="op">)</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'nlme.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-model">model<a class="anchor" aria-label="anchor" href="#arg-model"></a></dt> +<dd><p>An <a href="mmkin.html">mmkin</a> row object.</p></dd> + + +<dt id="arg-data">data<a class="anchor" aria-label="anchor" href="#arg-data"></a></dt> +<dd><p>Ignored, data are taken from the mmkin model</p></dd> + + +<dt id="arg-fixed">fixed<a class="anchor" aria-label="anchor" href="#arg-fixed"></a></dt> +<dd><p>Ignored, all degradation parameters fitted in the +mmkin model are used as fixed parameters</p></dd> + + +<dt id="arg-random">random<a class="anchor" aria-label="anchor" href="#arg-random"></a></dt> +<dd><p>If not specified, no correlations between random effects are +set up for the optimised degradation model parameters. This is +achieved by using the <a href="https://rdrr.io/pkg/nlme/man/pdDiag.html" class="external-link">nlme::pdDiag</a> method.</p></dd> + + +<dt id="arg-groups">groups<a class="anchor" aria-label="anchor" href="#arg-groups"></a></dt> +<dd><p>See the documentation of nlme</p></dd> + + +<dt id="arg-start">start<a class="anchor" aria-label="anchor" href="#arg-start"></a></dt> +<dd><p>If not specified, mean values of the fitted degradation +parameters taken from the mmkin object are used</p></dd> + + +<dt id="arg-correlation">correlation<a class="anchor" aria-label="anchor" href="#arg-correlation"></a></dt> +<dd><p>See the documentation of nlme</p></dd> + + +<dt id="arg-weights">weights<a class="anchor" aria-label="anchor" href="#arg-weights"></a></dt> +<dd><p>passed to nlme</p></dd> + + +<dt id="arg-subset">subset<a class="anchor" aria-label="anchor" href="#arg-subset"></a></dt> +<dd><p>passed to nlme</p></dd> + + +<dt id="arg-method">method<a class="anchor" aria-label="anchor" href="#arg-method"></a></dt> +<dd><p>passed to nlme</p></dd> + + +<dt id="arg-na-action">na.action<a class="anchor" aria-label="anchor" href="#arg-na-action"></a></dt> +<dd><p>passed to nlme</p></dd> + + +<dt id="arg-napattern">naPattern<a class="anchor" aria-label="anchor" href="#arg-napattern"></a></dt> +<dd><p>passed to nlme</p></dd> + + +<dt id="arg-control">control<a class="anchor" aria-label="anchor" href="#arg-control"></a></dt> +<dd><p>passed to nlme</p></dd> + + +<dt id="arg-verbose">verbose<a class="anchor" aria-label="anchor" href="#arg-verbose"></a></dt> +<dd><p>passed to nlme</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An nlme.mmkin object to print</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>Number of digits to use for printing</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Update specifications passed to update.nlme</p></dd> + + +<dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An nlme.mmkin object to update</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>Upon success, a fitted 'nlme.mmkin' object, which is an nlme object +with additional elements. It also inherits from 'mixed.mmkin'.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>Note that the convergence of the nlme algorithms depends on the quality +of the data. In degradation kinetics, we often only have few datasets +(e.g. data for few soils) and complicated degradation models, which may +make it impossible to obtain convergence with nlme.</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>As the object inherits from <a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme::nlme</a>, there is a wealth of +methods that will automatically work on 'nlme.mmkin' objects, such as +<code><a href="https://rdrr.io/pkg/nlme/man/intervals.html" class="external-link">nlme::intervals()</a></code>, <code><a href="https://rdrr.io/pkg/nlme/man/anova.lme.html" class="external-link">nlme::anova.lme()</a></code> and <code><a href="https://rdrr.io/pkg/nlme/man/coef.lme.html" class="external-link">nlme::coef.lme()</a></code>.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><code><a href="nlme.html">nlme_function()</a></code>, <a href="plot.mixed.mmkin.html">plot.mixed.mmkin</a>, <a href="summary.nlme.mmkin.html">summary.nlme.mmkin</a></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">experimental_data_for_UBA_2019</span><span class="op">[</span><span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">]</span>,</span></span> +<span class="r-in"><span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">x</span><span class="op">$</span><span class="va">data</span><span class="op">[</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"name"</span>, <span class="st">"time"</span>, <span class="st">"value"</span><span class="op">)</span><span class="op">]</span>, <span class="va">name</span> <span class="op">==</span> <span class="st">"parent"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"DFOP"</span><span class="op">)</span>, <span class="va">ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, cores <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://svn.r-project.org/R-packages/trunk/nlme/" class="external-link">nlme</a></span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f_nlme_sfo</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f_nlme_dfop</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_nlme_sfo</span>, <span class="va">f_nlme_dfop</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Model df AIC BIC logLik Test L.Ratio p-value</span> +<span class="r-out co"><span class="r-pr">#></span> f_nlme_sfo 1 5 625.0539 637.5529 -307.5269 </span> +<span class="r-out co"><span class="r-pr">#></span> f_nlme_dfop 2 9 495.1270 517.6253 -238.5635 1 vs 2 137.9269 <.0001</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_nlme_dfop</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Kinetic nonlinear mixed-effects model fit by maximum likelihood</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Structural model:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span> +<span class="r-out co"><span class="r-pr">#></span> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span> +<span class="r-out co"><span class="r-pr">#></span> * parent</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 90 observations of 1 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Log-likelihood: -238.6</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed effects:</span> +<span class="r-out co"><span class="r-pr">#></span> list(parent_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1) </span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k1 log_k2 g_qlogis </span> +<span class="r-out co"><span class="r-pr">#></span> 94.1702 -1.8002 -4.1474 0.0324 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> Formula: list(parent_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1)</span> +<span class="r-out co"><span class="r-pr">#></span> Level: ds</span> +<span class="r-out co"><span class="r-pr">#></span> Structure: Diagonal</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k1 log_k2 g_qlogis Residual</span> +<span class="r-out co"><span class="r-pr">#></span> StdDev: 2.488 0.8447 1.33 0.4652 2.321</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_nlme_dfop</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="nlme.mmkin-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">f_nlme_dfop</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back DT50_k1 DT50_k2</span> +<span class="r-out co"><span class="r-pr">#></span> parent 10.79857 100.7937 30.34192 4.193937 43.85442</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">ds_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">experimental_data_for_UBA_2019</span><span class="op">[</span><span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">]</span>,</span></span> +<span class="r-in"><span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="va">x</span><span class="op">$</span><span class="va">data</span><span class="op">[</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"name"</span>, <span class="st">"time"</span>, <span class="st">"value"</span><span class="op">)</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">m_sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"min"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">m_sfo_sfo_ff</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">m_dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">f_2</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"SFO-SFO"</span> <span class="op">=</span> <span class="va">m_sfo_sfo</span>,</span></span> +<span class="r-in"><span> <span class="st">"SFO-SFO-ff"</span> <span class="op">=</span> <span class="va">m_sfo_sfo_ff</span>,</span></span> +<span class="r-in"><span> <span class="st">"DFOP-SFO"</span> <span class="op">=</span> <span class="va">m_dfop_sfo</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">ds_2</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">f_nlme_sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_2</span><span class="op">[</span><span class="st">"SFO-SFO"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_nlme_sfo_sfo</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="nlme.mmkin-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># With formation fractions this does not coverge with defaults</span></span></span> +<span class="r-in"><span> <span class="co"># f_nlme_sfo_sfo_ff <- nlme(f_2["SFO-SFO-ff", ])</span></span></span> +<span class="r-in"><span> <span class="co">#plot(f_nlme_sfo_sfo_ff)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># For the following, we need to increase pnlsMaxIter and the tolerance</span></span></span> +<span class="r-in"><span> <span class="co"># to get convergence</span></span></span> +<span class="r-in"><span> <span class="va">f_nlme_dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_2</span><span class="op">[</span><span class="st">"DFOP-SFO"</span>, <span class="op">]</span>,</span></span> +<span class="r-in"><span> control <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>pnlsMaxIter <span class="op">=</span> <span class="fl">120</span>, tolerance <span class="op">=</span> <span class="fl">5e-4</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_nlme_dfop_sfo</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="nlme.mmkin-3.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_nlme_dfop_sfo</span>, <span class="va">f_nlme_sfo_sfo</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Model df AIC BIC logLik Test L.Ratio p-value</span> +<span class="r-out co"><span class="r-pr">#></span> f_nlme_dfop_sfo 1 13 843.8547 884.620 -408.9273 </span> +<span class="r-out co"><span class="r-pr">#></span> f_nlme_sfo_sfo 2 9 1085.1821 1113.404 -533.5910 1 vs 2 249.3274 <.0001</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">f_nlme_sfo_sfo</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_sink parent_A1 A1_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 0.5912432 0.4087568 1.0000000 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> parent 19.13518 63.5657</span> +<span class="r-out co"><span class="r-pr">#></span> A1 66.02155 219.3189</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">f_nlme_dfop_sfo</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_A1 parent_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 0.2768574 0.7231426 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back DT50_k1 DT50_k2</span> +<span class="r-out co"><span class="r-pr">#></span> parent 11.07091 104.6320 31.49737 4.462383 46.20825</span> +<span class="r-out co"><span class="r-pr">#></span> A1 162.30550 539.1672 NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="fu">findFunction</span><span class="op">(</span><span class="st">"varConstProp"</span><span class="op">)</span><span class="op">)</span> <span class="op">></span> <span class="fl">0</span><span class="op">)</span> <span class="op">{</span> <span class="co"># tc error model for nlme available</span></span></span> +<span class="r-in"><span> <span class="co"># Attempts to fit metabolite kinetics with the tc error model are possible,</span></span></span> +<span class="r-in"><span> <span class="co"># but need tweeking of control values and sometimes do not converge</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">f_tc</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"DFOP"</span><span class="op">)</span>, <span class="va">ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f_nlme_sfo_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_tc</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f_nlme_dfop_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_tc</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_nlme_sfo</span>, <span class="va">f_nlme_sfo_tc</span>, <span class="va">f_nlme_dfop</span>, <span class="va">f_nlme_dfop_tc</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_nlme_dfop_tc</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="op">}</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Kinetic nonlinear mixed-effects model fit by maximum likelihood</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Structural model:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span> +<span class="r-out co"><span class="r-pr">#></span> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span> +<span class="r-out co"><span class="r-pr">#></span> * parent</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 90 observations of 1 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Log-likelihood: -238.4</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed effects:</span> +<span class="r-out co"><span class="r-pr">#></span> list(parent_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1) </span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k1 log_k2 g_qlogis </span> +<span class="r-out co"><span class="r-pr">#></span> 94.04774 -1.82340 -4.16716 0.05685 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> Formula: list(parent_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1)</span> +<span class="r-out co"><span class="r-pr">#></span> Level: ds</span> +<span class="r-out co"><span class="r-pr">#></span> Structure: Diagonal</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k1 log_k2 g_qlogis Residual</span> +<span class="r-out co"><span class="r-pr">#></span> StdDev: 2.474 0.85 1.337 0.4659 1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance function:</span> +<span class="r-out co"><span class="r-pr">#></span> Structure: Constant plus proportion of variance covariate</span> +<span class="r-out co"><span class="r-pr">#></span> Formula: ~fitted(.) </span> +<span class="r-out co"><span class="r-pr">#></span> Parameter estimates:</span> +<span class="r-out co"><span class="r-pr">#></span> const prop </span> +<span class="r-out co"><span class="r-pr">#></span> 2.23222933 0.01262399 </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">f_2_obs</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_2</span>, error_model <span class="op">=</span> <span class="st">"obs"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f_nlme_sfo_sfo_obs</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_2_obs</span><span class="op">[</span><span class="st">"SFO-SFO"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_nlme_sfo_sfo_obs</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Kinetic nonlinear mixed-effects model fit by maximum likelihood</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Structural model:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - k_parent_sink * parent - k_parent_A1 * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_A1/dt = + k_parent_A1 * parent - k_A1_sink * A1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 170 observations of 2 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Log-likelihood: -473</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed effects:</span> +<span class="r-out co"><span class="r-pr">#></span> list(parent_0 ~ 1, log_k_parent_sink ~ 1, log_k_parent_A1 ~ 1, log_k_A1_sink ~ 1) </span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent_sink log_k_parent_A1 log_k_A1_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 87.976 -3.670 -4.164 -4.645 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> Formula: list(parent_0 ~ 1, log_k_parent_sink ~ 1, log_k_parent_A1 ~ 1, log_k_A1_sink ~ 1)</span> +<span class="r-out co"><span class="r-pr">#></span> Level: ds</span> +<span class="r-out co"><span class="r-pr">#></span> Structure: Diagonal</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent_sink log_k_parent_A1 log_k_A1_sink Residual</span> +<span class="r-out co"><span class="r-pr">#></span> StdDev: 3.992 1.777 1.055 0.4821 6.483</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance function:</span> +<span class="r-out co"><span class="r-pr">#></span> Structure: Different standard deviations per stratum</span> +<span class="r-out co"><span class="r-pr">#></span> Formula: ~1 | name </span> +<span class="r-out co"><span class="r-pr">#></span> Parameter estimates:</span> +<span class="r-out co"><span class="r-pr">#></span> parent A1 </span> +<span class="r-out co"><span class="r-pr">#></span> 1.0000000 0.2050005 </span> +<span class="r-in"><span> <span class="va">f_nlme_dfop_sfo_obs</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_2_obs</span><span class="op">[</span><span class="st">"DFOP-SFO"</span>, <span class="op">]</span>,</span></span> +<span class="r-in"><span> control <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>pnlsMaxIter <span class="op">=</span> <span class="fl">120</span>, tolerance <span class="op">=</span> <span class="fl">5e-4</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">f_2_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_2</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="co"># f_nlme_sfo_sfo_tc <- nlme(f_2_tc["SFO-SFO", ]) # No convergence with 50 iterations</span></span></span> +<span class="r-in"><span> <span class="co"># f_nlme_dfop_sfo_tc <- nlme(f_2_tc["DFOP-SFO", ],</span></span></span> +<span class="r-in"><span> <span class="co"># control = list(pnlsMaxIter = 120, tolerance = 5e-4)) # Error in X[, fmap[[nm]]] <- gradnm</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_nlme_dfop_sfo</span>, <span class="va">f_nlme_dfop_sfo_obs</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Model df AIC BIC logLik Test L.Ratio p-value</span> +<span class="r-out co"><span class="r-pr">#></span> f_nlme_dfop_sfo 1 13 843.8547 884.620 -408.9273 </span> +<span class="r-out co"><span class="r-pr">#></span> f_nlme_dfop_sfo_obs 2 14 817.5338 861.435 -394.7669 1 vs 2 28.32084 <.0001</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/nlme_data.html b/docs/dev/reference/nlme_data.html new file mode 100644 index 00000000..c1e64a4a --- /dev/null +++ b/docs/dev/reference/nlme_data.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/nlme.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/nlme.html"> + </head> +</html> + diff --git a/docs/dev/reference/nobs.mkinfit.html b/docs/dev/reference/nobs.mkinfit.html new file mode 100644 index 00000000..809dafaf --- /dev/null +++ b/docs/dev/reference/nobs.mkinfit.html @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Number of observations on which an mkinfit object was fitted — nobs.mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Number of observations on which an mkinfit object was fitted — nobs.mkinfit"><meta name="description" content="Number of observations on which an mkinfit object was fitted"><meta property="og:description" content="Number of observations on which an mkinfit object was fitted"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Number of observations on which an mkinfit object was fitted</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/nobs.mkinfit.R" class="external-link"><code>R/nobs.mkinfit.R</code></a></small> + <div class="d-none name"><code>nobs.mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Number of observations on which an mkinfit object was fitted</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/nobs.html" class="external-link">nobs</a></span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An mkinfit object</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>For compatibility with the generic method</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The number of rows in the data included in the mkinfit object</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/parms.html b/docs/dev/reference/parms.html new file mode 100644 index 00000000..71a8737f --- /dev/null +++ b/docs/dev/reference/parms.html @@ -0,0 +1,250 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Extract model parameters — parms • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Extract model parameters — parms"><meta name="description" content="This function returns degradation model parameters as well as error +model parameters per default, in order to avoid working with a fitted model +without considering the error structure that was assumed for the fit."><meta property="og:description" content="This function returns degradation model parameters as well as error +model parameters per default, in order to avoid working with a fitted model +without considering the error structure that was assumed for the fit."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Extract model parameters</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parms.R" class="external-link"><code>R/parms.R</code></a>, <a href="https://github.com/jranke/mkin/blob/HEAD/R/saem.R" class="external-link"><code>R/saem.R</code></a></small> + <div class="d-none name"><code>parms.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function returns degradation model parameters as well as error +model parameters per default, in order to avoid working with a fitted model +without considering the error structure that was assumed for the fit.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">parms</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu">parms</span><span class="op">(</span><span class="va">object</span>, transformed <span class="op">=</span> <span class="cn">FALSE</span>, errparms <span class="op">=</span> <span class="cn">TRUE</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu">parms</span><span class="op">(</span><span class="va">object</span>, transformed <span class="op">=</span> <span class="cn">FALSE</span>, errparms <span class="op">=</span> <span class="cn">TRUE</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'multistart'</span></span> +<span><span class="fu">parms</span><span class="op">(</span><span class="va">object</span>, exclude_failed <span class="op">=</span> <span class="cn">TRUE</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'saem.mmkin'</span></span> +<span><span class="fu">parms</span><span class="op">(</span><span class="va">object</span>, ci <span class="op">=</span> <span class="cn">FALSE</span>, covariates <span class="op">=</span> <span class="cn">NULL</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>A fitted model object.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used</p></dd> + + +<dt id="arg-transformed">transformed<a class="anchor" aria-label="anchor" href="#arg-transformed"></a></dt> +<dd><p>Should the parameters be returned as used internally +during the optimisation?</p></dd> + + +<dt id="arg-errparms">errparms<a class="anchor" aria-label="anchor" href="#arg-errparms"></a></dt> +<dd><p>Should the error model parameters be returned +in addition to the degradation parameters?</p></dd> + + +<dt id="arg-exclude-failed">exclude_failed<a class="anchor" aria-label="anchor" href="#arg-exclude-failed"></a></dt> +<dd><p>For <a href="multistart.html">multistart</a> objects, should rows for failed fits +be removed from the returned parameter matrix?</p></dd> + + +<dt id="arg-ci">ci<a class="anchor" aria-label="anchor" href="#arg-ci"></a></dt> +<dd><p>Should a matrix with estimates and confidence interval boundaries +be returned? If FALSE (default), a vector of estimates is returned if no +covariates are given, otherwise a matrix of estimates is returned, with +each column corresponding to a row of the data frame holding the covariates</p></dd> + + +<dt id="arg-covariates">covariates<a class="anchor" aria-label="anchor" href="#arg-covariates"></a></dt> +<dd><p>A data frame holding covariate values for which to +return parameter values. Only has an effect if 'ci' is FALSE.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>Depending on the object, a numeric vector of fitted model parameters, +a matrix (e.g. for mmkin row objects), or a list of matrices (e.g. for +mmkin objects with more than one row).</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><a href="saem.html">saem</a>, <a href="multistart.html">multistart</a></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># mkinfit objects</span></span></span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">parms</span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 k_parent sigma </span> +<span class="r-out co"><span class="r-pr">#></span> 82.4921598 0.3060633 4.6730124 </span> +<span class="r-in"><span><span class="fu">parms</span><span class="op">(</span><span class="va">fit</span>, transformed <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent sigma </span> +<span class="r-out co"><span class="r-pr">#></span> 82.492160 -1.183963 4.673012 </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># mmkin objects</span></span></span> +<span class="r-in"><span><span class="va">ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">experimental_data_for_UBA_2019</span><span class="op">[</span><span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">]</span>,</span></span> +<span class="r-in"><span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">x</span><span class="op">$</span><span class="va">data</span><span class="op">[</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"name"</span>, <span class="st">"time"</span>, <span class="st">"value"</span><span class="op">)</span><span class="op">]</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Dataset"</span>, <span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">fits</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span><span class="op">)</span>, <span class="va">ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, cores <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">parms</span><span class="op">(</span><span class="va">fits</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 88.52275400 82.666781678 86.8547308 91.7779306 82.14809450</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.05794659 0.009647805 0.2102974 0.1232258 0.00720421</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.15274487 7.040168584 3.6769645 6.4669234 6.50457673</span> +<span class="r-in"><span><span class="fu">parms</span><span class="op">(</span><span class="va">fits</span><span class="op">[</span>, <span class="fl">2</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $SFO</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 82.666781678</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.009647805</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 7.040168584</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $FOMC</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 92.6837649</span> +<span class="r-out co"><span class="r-pr">#></span> alpha 0.4967832</span> +<span class="r-out co"><span class="r-pr">#></span> beta 14.1451255</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.9167519</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $DFOP</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 91.058971584</span> +<span class="r-out co"><span class="r-pr">#></span> k1 0.044946770</span> +<span class="r-out co"><span class="r-pr">#></span> k2 0.002868336</span> +<span class="r-out co"><span class="r-pr">#></span> g 0.526942414</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.221302196</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span><span class="fu">parms</span><span class="op">(</span><span class="va">fits</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $SFO</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 88.52275400 82.666781678 86.8547308 91.7779306 82.14809450</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.05794659 0.009647805 0.2102974 0.1232258 0.00720421</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.15274487 7.040168584 3.6769645 6.4669234 6.50457673</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $FOMC</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 95.558575 92.6837649 90.719787 98.383939 94.8481458</span> +<span class="r-out co"><span class="r-pr">#></span> alpha 1.338667 0.4967832 1.639099 1.074460 0.2805272</span> +<span class="r-out co"><span class="r-pr">#></span> beta 13.033315 14.1451255 5.007077 4.397126 6.9052224</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.847671 1.9167519 1.066063 3.146056 1.6222778</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $DFOP</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 96.55213663 91.058971584 90.34509493 98.14858820 94.311323735</span> +<span class="r-out co"><span class="r-pr">#></span> k1 0.21954588 0.044946770 0.41232288 0.31697588 0.080663857</span> +<span class="r-out co"><span class="r-pr">#></span> k2 0.02957934 0.002868336 0.07581766 0.03260384 0.003425417</span> +<span class="r-out co"><span class="r-pr">#></span> g 0.44845068 0.526942414 0.66091967 0.65322767 0.342652880</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.35690468 2.221302196 1.34169076 2.87159846 1.942067831</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span><span class="fu">parms</span><span class="op">(</span><span class="va">fits</span>, transformed <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $SFO</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 88.522754 82.666782 86.854731 91.777931 82.148095</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent -2.848234 -4.641025 -1.559232 -2.093737 -4.933090</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.152745 7.040169 3.676964 6.466923 6.504577</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $FOMC</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 95.5585751 92.6837649 90.7197870 98.38393898 94.848146</span> +<span class="r-out co"><span class="r-pr">#></span> log_alpha 0.2916741 -0.6996015 0.4941466 0.07181816 -1.271085</span> +<span class="r-out co"><span class="r-pr">#></span> log_beta 2.5675088 2.6493701 1.6108523 1.48095106 1.932278</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.8476712 1.9167519 1.0660627 3.14605557 1.622278</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $DFOP</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 96.5521366 91.0589716 90.3450949 98.1485882 94.3113237</span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 -1.5161940 -3.1022764 -0.8859486 -1.1489296 -2.5174647</span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 -3.5206791 -5.8540232 -2.5794240 -3.4233253 -5.6765322</span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis -0.2069326 0.1078741 0.6673953 0.6332573 -0.6514943</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.3569047 2.2213022 1.3416908 2.8715985 1.9420678</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/parms.mkinfit.html b/docs/dev/reference/parms.mkinfit.html new file mode 100644 index 00000000..fee7b266 --- /dev/null +++ b/docs/dev/reference/parms.mkinfit.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/parms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/parms.html"> + </head> +</html> + diff --git a/docs/dev/reference/parms.mmkin.html b/docs/dev/reference/parms.mmkin.html new file mode 100644 index 00000000..fee7b266 --- /dev/null +++ b/docs/dev/reference/parms.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/parms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/parms.html"> + </head> +</html> + diff --git a/docs/dev/reference/parms.multistart.html b/docs/dev/reference/parms.multistart.html new file mode 100644 index 00000000..fee7b266 --- /dev/null +++ b/docs/dev/reference/parms.multistart.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/parms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/parms.html"> + </head> +</html> + diff --git a/docs/dev/reference/parms.saem.mmkin.html b/docs/dev/reference/parms.saem.mmkin.html new file mode 100644 index 00000000..fee7b266 --- /dev/null +++ b/docs/dev/reference/parms.saem.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/parms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/parms.html"> + </head> +</html> + diff --git a/docs/dev/reference/parplot.html b/docs/dev/reference/parplot.html new file mode 100644 index 00000000..4a11710f --- /dev/null +++ b/docs/dev/reference/parplot.html @@ -0,0 +1,161 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Plot parameter variability of multistart objects — parplot • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Plot parameter variability of multistart objects — parplot"><meta name="description" content="Produces a boxplot with all parameters from the multiple runs, scaled +either by the parameters of the run with the highest likelihood, +or by their medians as proposed in the paper by Duchesne et al. (2021)."><meta property="og:description" content="Produces a boxplot with all parameters from the multiple runs, scaled +either by the parameters of the run with the highest likelihood, +or by their medians as proposed in the paper by Duchesne et al. (2021)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Plot parameter variability of multistart objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/parplot.R" class="external-link"><code>R/parplot.R</code></a></small> + <div class="d-none name"><code>parplot.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Produces a boxplot with all parameters from the multiple runs, scaled +either by the parameters of the run with the highest likelihood, +or by their medians as proposed in the paper by Duchesne et al. (2021).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">parplot</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'multistart.saem.mmkin'</span></span> +<span><span class="fu">parplot</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> llmin <span class="op">=</span> <span class="op">-</span><span class="cn">Inf</span>,</span> +<span> llquant <span class="op">=</span> <span class="cn">NA</span>,</span> +<span> scale <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"best"</span>, <span class="st">"median"</span><span class="op">)</span>,</span> +<span> lpos <span class="op">=</span> <span class="st">"bottomleft"</span>,</span> +<span> main <span class="op">=</span> <span class="st">""</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>The <a href="multistart.html">multistart</a> object</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Passed to <a href="https://rdrr.io/r/graphics/boxplot.html" class="external-link">boxplot</a></p></dd> + + +<dt id="arg-llmin">llmin<a class="anchor" aria-label="anchor" href="#arg-llmin"></a></dt> +<dd><p>The minimum likelihood of objects to be shown</p></dd> + + +<dt id="arg-llquant">llquant<a class="anchor" aria-label="anchor" href="#arg-llquant"></a></dt> +<dd><p>Fractional value for selecting only the fits with higher +likelihoods. Overrides 'llmin'.</p></dd> + + +<dt id="arg-scale">scale<a class="anchor" aria-label="anchor" href="#arg-scale"></a></dt> +<dd><p>By default, scale parameters using the best +available fit. +If 'median', parameters are scaled using the median parameters from all fits.</p></dd> + + +<dt id="arg-lpos">lpos<a class="anchor" aria-label="anchor" href="#arg-lpos"></a></dt> +<dd><p>Positioning of the legend.</p></dd> + + +<dt id="arg-main">main<a class="anchor" aria-label="anchor" href="#arg-main"></a></dt> +<dd><p>Title of the plot</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>Starting values of degradation model parameters and error model parameters +are shown as green circles. The results obtained in the original run +are shown as red circles.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Duchesne R, Guillemin A, Gandrillon O, Crauste F. Practical +identifiability in the frame of nonlinear mixed effects models: the example +of the in vitro erythropoiesis. BMC Bioinformatics. 2021 Oct 4;22(1):478. +doi: 10.1186/s12859-021-04373-4.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><a href="multistart.html">multistart</a></p></div> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/parplot.multistart.saem.mmkin.html b/docs/dev/reference/parplot.multistart.saem.mmkin.html new file mode 100644 index 00000000..d795c84e --- /dev/null +++ b/docs/dev/reference/parplot.multistart.saem.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/parplot.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/parplot.html"> + </head> +</html> + diff --git a/docs/dev/reference/plot.mixed.mmkin-1.png b/docs/dev/reference/plot.mixed.mmkin-1.png Binary files differnew file mode 100644 index 00000000..61b47f93 --- /dev/null +++ b/docs/dev/reference/plot.mixed.mmkin-1.png diff --git a/docs/dev/reference/plot.mixed.mmkin-2.png b/docs/dev/reference/plot.mixed.mmkin-2.png Binary files differnew file mode 100644 index 00000000..9229163a --- /dev/null +++ b/docs/dev/reference/plot.mixed.mmkin-2.png diff --git a/docs/dev/reference/plot.mixed.mmkin-3.png b/docs/dev/reference/plot.mixed.mmkin-3.png Binary files differnew file mode 100644 index 00000000..749efd4b --- /dev/null +++ b/docs/dev/reference/plot.mixed.mmkin-3.png diff --git a/docs/dev/reference/plot.mixed.mmkin-4.png b/docs/dev/reference/plot.mixed.mmkin-4.png Binary files differnew file mode 100644 index 00000000..336a80de --- /dev/null +++ b/docs/dev/reference/plot.mixed.mmkin-4.png diff --git a/docs/dev/reference/plot.mixed.mmkin.html b/docs/dev/reference/plot.mixed.mmkin.html new file mode 100644 index 00000000..06afd21f --- /dev/null +++ b/docs/dev/reference/plot.mixed.mmkin.html @@ -0,0 +1,294 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin"><meta name="description" content="Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object"><meta property="og:description" content="Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/plot.mixed.mmkin.R" class="external-link"><code>R/plot.mixed.mmkin.R</code></a></small> + <div class="d-none name"><code>plot.mixed.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mixed.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span></span> +<span> <span class="va">x</span>,</span> +<span> i <span class="op">=</span> <span class="fl">1</span><span class="op">:</span><span class="fu"><a href="https://rdrr.io/r/base/nrow.html" class="external-link">ncol</a></span><span class="op">(</span><span class="va">x</span><span class="op">$</span><span class="va">mmkin</span><span class="op">)</span>,</span> +<span> obs_vars <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">x</span><span class="op">$</span><span class="va">mkinmod</span><span class="op">$</span><span class="va">map</span><span class="op">)</span>,</span> +<span> standardized <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> covariates <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> covariate_quantiles <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.5</span>, <span class="fl">0.05</span>, <span class="fl">0.95</span><span class="op">)</span>,</span> +<span> xlab <span class="op">=</span> <span class="st">"Time"</span>,</span> +<span> xlim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/range.html" class="external-link">range</a></span><span class="op">(</span><span class="va">x</span><span class="op">$</span><span class="va">data</span><span class="op">$</span><span class="va">time</span><span class="op">)</span>,</span> +<span> resplot <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"predicted"</span>, <span class="st">"time"</span><span class="op">)</span>,</span> +<span> pop_curves <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> pred_over <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> test_log_parms <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> conf.level <span class="op">=</span> <span class="fl">0.6</span>,</span> +<span> default_log_parms <span class="op">=</span> <span class="cn">NA</span>,</span> +<span> ymax <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> maxabs <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> ncol.legend <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/ifelse.html" class="external-link">ifelse</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op"><=</span> <span class="fl">3</span>, <span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">+</span> <span class="fl">1</span>, <span class="fu"><a href="https://rdrr.io/r/base/ifelse.html" class="external-link">ifelse</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op"><=</span> <span class="fl">8</span>, <span class="fl">3</span>, <span class="fl">4</span><span class="op">)</span><span class="op">)</span>,</span> +<span> nrow.legend <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Round.html" class="external-link">ceiling</a></span><span class="op">(</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">+</span> <span class="fl">1</span><span class="op">)</span><span class="op">/</span><span class="va">ncol.legend</span><span class="op">)</span>,</span> +<span> rel.height.legend <span class="op">=</span> <span class="fl">0.02</span> <span class="op">+</span> <span class="fl">0.07</span> <span class="op">*</span> <span class="va">nrow.legend</span>,</span> +<span> rel.height.bottom <span class="op">=</span> <span class="fl">1.1</span>,</span> +<span> pch_ds <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">25</span>, <span class="fl">33</span>, <span class="fl">35</span><span class="op">:</span><span class="fl">38</span>, <span class="fl">40</span><span class="op">:</span><span class="fl">41</span>, <span class="fl">47</span><span class="op">:</span><span class="fl">57</span>, <span class="fl">60</span><span class="op">:</span><span class="fl">90</span><span class="op">)</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">i</span><span class="op">)</span><span class="op">]</span>,</span> +<span> col_ds <span class="op">=</span> <span class="va">pch_ds</span> <span class="op">+</span> <span class="fl">1</span>,</span> +<span> lty_ds <span class="op">=</span> <span class="va">col_ds</span>,</span> +<span> frame <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An object of class <a href="mixed.html">mixed.mmkin</a>, <a href="saem.html">saem.mmkin</a> or <a href="nlme.mmkin.html">nlme.mmkin</a></p></dd> + + +<dt id="arg-i">i<a class="anchor" aria-label="anchor" href="#arg-i"></a></dt> +<dd><p>A numeric index to select datasets for which to plot the individual predictions, +in case plots get too large</p></dd> + + +<dt id="arg-obs-vars">obs_vars<a class="anchor" aria-label="anchor" href="#arg-obs-vars"></a></dt> +<dd><p>A character vector of names of the observed variables for +which the data and the model should be plotted. Defauls to all observed +variables in the model.</p></dd> + + +<dt id="arg-standardized">standardized<a class="anchor" aria-label="anchor" href="#arg-standardized"></a></dt> +<dd><p>Should the residuals be standardized? Only takes effect if +<code>resplot = "time"</code>.</p></dd> + + +<dt id="arg-covariates">covariates<a class="anchor" aria-label="anchor" href="#arg-covariates"></a></dt> +<dd><p>Data frame with covariate values for all variables in +any covariate models in the object. If given, it overrides 'covariate_quantiles'. +Each line in the data frame will result in a line drawn for the population. +Rownames are used in the legend to label the lines.</p></dd> + + +<dt id="arg-covariate-quantiles">covariate_quantiles<a class="anchor" aria-label="anchor" href="#arg-covariate-quantiles"></a></dt> +<dd><p>This argument only has an effect if the fitted +object has covariate models. If so, the default is to show three population +curves, for the 5th percentile, the 50th percentile and the 95th percentile +of the covariate values used for fitting the model.</p></dd> + + +<dt id="arg-xlab">xlab<a class="anchor" aria-label="anchor" href="#arg-xlab"></a></dt> +<dd><p>Label for the x axis.</p></dd> + + +<dt id="arg-xlim">xlim<a class="anchor" aria-label="anchor" href="#arg-xlim"></a></dt> +<dd><p>Plot range in x direction.</p></dd> + + +<dt id="arg-resplot">resplot<a class="anchor" aria-label="anchor" href="#arg-resplot"></a></dt> +<dd><p>Should the residuals plotted against time or against +predicted values?</p></dd> + + +<dt id="arg-pop-curves">pop_curves<a class="anchor" aria-label="anchor" href="#arg-pop-curves"></a></dt> +<dd><p>Per default, one population curve is drawn in case +population parameters are fitted by the model, e.g. for saem objects. +In case there is a covariate model, the behaviour depends on the value +of 'covariates'</p></dd> + + +<dt id="arg-pred-over">pred_over<a class="anchor" aria-label="anchor" href="#arg-pred-over"></a></dt> +<dd><p>Named list of alternative predictions as obtained +from <a href="mkinpredict.html">mkinpredict</a> with a compatible <a href="mkinmod.html">mkinmod</a>.</p></dd> + + +<dt id="arg-test-log-parms">test_log_parms<a class="anchor" aria-label="anchor" href="#arg-test-log-parms"></a></dt> +<dd><p>Passed to <a href="mean_degparms.html">mean_degparms</a> in the case of an +<a href="mixed.html">mixed.mmkin</a> object</p></dd> + + +<dt id="arg-conf-level">conf.level<a class="anchor" aria-label="anchor" href="#arg-conf-level"></a></dt> +<dd><p>Passed to <a href="mean_degparms.html">mean_degparms</a> in the case of an +<a href="mixed.html">mixed.mmkin</a> object</p></dd> + + +<dt id="arg-default-log-parms">default_log_parms<a class="anchor" aria-label="anchor" href="#arg-default-log-parms"></a></dt> +<dd><p>Passed to <a href="mean_degparms.html">mean_degparms</a> in the case of an +<a href="mixed.html">mixed.mmkin</a> object</p></dd> + + +<dt id="arg-ymax">ymax<a class="anchor" aria-label="anchor" href="#arg-ymax"></a></dt> +<dd><p>Vector of maximum y axis values</p></dd> + + +<dt id="arg-maxabs">maxabs<a class="anchor" aria-label="anchor" href="#arg-maxabs"></a></dt> +<dd><p>Maximum absolute value of the residuals. This is used for the +scaling of the y axis and defaults to "auto".</p></dd> + + +<dt id="arg-ncol-legend">ncol.legend<a class="anchor" aria-label="anchor" href="#arg-ncol-legend"></a></dt> +<dd><p>Number of columns to use in the legend</p></dd> + + +<dt id="arg-nrow-legend">nrow.legend<a class="anchor" aria-label="anchor" href="#arg-nrow-legend"></a></dt> +<dd><p>Number of rows to use in the legend</p></dd> + + +<dt id="arg-rel-height-legend">rel.height.legend<a class="anchor" aria-label="anchor" href="#arg-rel-height-legend"></a></dt> +<dd><p>The relative height of the legend shown on top</p></dd> + + +<dt id="arg-rel-height-bottom">rel.height.bottom<a class="anchor" aria-label="anchor" href="#arg-rel-height-bottom"></a></dt> +<dd><p>The relative height of the bottom plot row</p></dd> + + +<dt id="arg-pch-ds">pch_ds<a class="anchor" aria-label="anchor" href="#arg-pch-ds"></a></dt> +<dd><p>Symbols to be used for plotting the data.</p></dd> + + +<dt id="arg-col-ds">col_ds<a class="anchor" aria-label="anchor" href="#arg-col-ds"></a></dt> +<dd><p>Colors used for plotting the observed data and the +corresponding model prediction lines for the different datasets.</p></dd> + + +<dt id="arg-lty-ds">lty_ds<a class="anchor" aria-label="anchor" href="#arg-lty-ds"></a></dt> +<dd><p>Line types to be used for the model predictions.</p></dd> + + +<dt id="arg-frame">frame<a class="anchor" aria-label="anchor" href="#arg-frame"></a></dt> +<dd><p>Should a frame be drawn around the plots?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further arguments passed to <code><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The function is called for its side effect.</p> + </div> + <div class="section level2"> + <h2 id="note">Note<a class="anchor" aria-label="anchor" href="#note"></a></h2> + <p>Covariate models are currently only supported for saem.mmkin objects.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">experimental_data_for_UBA_2019</span><span class="op">[</span><span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">]</span>,</span></span> +<span class="r-in"><span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="va">x</span><span class="op">$</span><span class="va">data</span><span class="op">[</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"name"</span>, <span class="st">"time"</span>, <span class="st">"value"</span><span class="op">)</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste0</a></span><span class="op">(</span><span class="st">"ds "</span>, <span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"DFOP-SFO"</span> <span class="op">=</span> <span class="va">dfop_sfo</span><span class="op">)</span>, <span class="va">ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f</span><span class="op">[</span>, <span class="fl">3</span><span class="op">:</span><span class="fl">4</span><span class="op">]</span>, standardized <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mixed.mmkin-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># For this fit we need to increase pnlsMaxiter, and we increase the</span></span></span> +<span class="r-in"><span><span class="co"># tolerance in order to speed up the fit for this example evaluation</span></span></span> +<span class="r-in"><span><span class="co"># It still takes 20 seconds to run</span></span></span> +<span class="r-in"><span><span class="va">f_nlme</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f</span>, control <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>pnlsMaxIter <span class="op">=</span> <span class="fl">120</span>, tolerance <span class="op">=</span> <span class="fl">1e-3</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_nlme</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mixed.mmkin-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f_saem</span> <span class="op"><-</span> <span class="fu"><a href="saem.html">saem</a></span><span class="op">(</span><span class="va">f</span>, transformations <span class="op">=</span> <span class="st">"saemix"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mixed.mmkin-3.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f_obs</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"DFOP-SFO"</span> <span class="op">=</span> <span class="va">dfop_sfo</span><span class="op">)</span>, <span class="va">ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"obs"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_nlmix</span> <span class="op"><-</span> <span class="fu">nlmix</span><span class="op">(</span><span class="va">f_obs</span><span class="op">)</span></span></span> +<span class="r-err co"><span class="r-pr">#></span> <span class="error">Error in nlmix(f_obs):</span> could not find function "nlmix"</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_nlmix</span><span class="op">)</span></span></span> +<span class="r-err co"><span class="r-pr">#></span> <span class="error">Error:</span> object 'f_nlmix' not found</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># We can overlay the two variants if we generate predictions</span></span></span> +<span class="r-in"><span><span class="va">pred_nlme</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">dfop_sfo</span>,</span></span> +<span class="r-in"><span> <span class="va">f_nlme</span><span class="op">$</span><span class="va">bparms.optim</span><span class="op">[</span><span class="op">-</span><span class="fl">1</span><span class="op">]</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="va">f_nlme</span><span class="op">$</span><span class="va">bparms.optim</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span>, A1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">180</span>, by <span class="op">=</span> <span class="fl">0.2</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem</span>, pred_over <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>nlme <span class="op">=</span> <span class="va">pred_nlme</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mixed.mmkin-4.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/plot.mkinfit-1.png b/docs/dev/reference/plot.mkinfit-1.png Binary files differnew file mode 100644 index 00000000..0a120916 --- /dev/null +++ b/docs/dev/reference/plot.mkinfit-1.png diff --git a/docs/dev/reference/plot.mkinfit-2.png b/docs/dev/reference/plot.mkinfit-2.png Binary files differnew file mode 100644 index 00000000..d3a39657 --- /dev/null +++ b/docs/dev/reference/plot.mkinfit-2.png diff --git a/docs/dev/reference/plot.mkinfit-3.png b/docs/dev/reference/plot.mkinfit-3.png Binary files differnew file mode 100644 index 00000000..3a74e51e --- /dev/null +++ b/docs/dev/reference/plot.mkinfit-3.png diff --git a/docs/dev/reference/plot.mkinfit-4.png b/docs/dev/reference/plot.mkinfit-4.png Binary files differnew file mode 100644 index 00000000..0027f3eb --- /dev/null +++ b/docs/dev/reference/plot.mkinfit-4.png diff --git a/docs/dev/reference/plot.mkinfit-5.png b/docs/dev/reference/plot.mkinfit-5.png Binary files differnew file mode 100644 index 00000000..9112cbb9 --- /dev/null +++ b/docs/dev/reference/plot.mkinfit-5.png diff --git a/docs/dev/reference/plot.mkinfit-6.png b/docs/dev/reference/plot.mkinfit-6.png Binary files differnew file mode 100644 index 00000000..6127d2f7 --- /dev/null +++ b/docs/dev/reference/plot.mkinfit-6.png diff --git a/docs/dev/reference/plot.mkinfit-7.png b/docs/dev/reference/plot.mkinfit-7.png Binary files differnew file mode 100644 index 00000000..2b92c212 --- /dev/null +++ b/docs/dev/reference/plot.mkinfit-7.png diff --git a/docs/dev/reference/plot.mkinfit.html b/docs/dev/reference/plot.mkinfit.html new file mode 100644 index 00000000..ffebd25d --- /dev/null +++ b/docs/dev/reference/plot.mkinfit.html @@ -0,0 +1,321 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit"><meta name="description" content="Solves the differential equations with the optimised and fixed parameters +from a previous successful call to mkinfit and plots the +observed data together with the solution of the fitted model."><meta property="og:description" content="Solves the differential equations with the optimised and fixed parameters +from a previous successful call to mkinfit and plots the +observed data together with the solution of the fitted model."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Plot the observed data and the fitted model of an mkinfit object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/plot.mkinfit.R" class="external-link"><code>R/plot.mkinfit.R</code></a></small> + <div class="d-none name"><code>plot.mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Solves the differential equations with the optimised and fixed parameters +from a previous successful call to <code><a href="mkinfit.html">mkinfit</a></code> and plots the +observed data together with the solution of the fitted model.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span></span> +<span> <span class="va">x</span>,</span> +<span> fit <span class="op">=</span> <span class="va">x</span>,</span> +<span> obs_vars <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">fit</span><span class="op">$</span><span class="va">mkinmod</span><span class="op">$</span><span class="va">map</span><span class="op">)</span>,</span> +<span> xlab <span class="op">=</span> <span class="st">"Time"</span>,</span> +<span> ylab <span class="op">=</span> <span class="st">"Residue"</span>,</span> +<span> xlim <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/range.html" class="external-link">range</a></span><span class="op">(</span><span class="va">fit</span><span class="op">$</span><span class="va">data</span><span class="op">$</span><span class="va">time</span><span class="op">)</span>,</span> +<span> ylim <span class="op">=</span> <span class="st">"default"</span>,</span> +<span> col_obs <span class="op">=</span> <span class="fl">1</span><span class="op">:</span><span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">obs_vars</span><span class="op">)</span>,</span> +<span> pch_obs <span class="op">=</span> <span class="va">col_obs</span>,</span> +<span> lty_obs <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="va">obs_vars</span><span class="op">)</span><span class="op">)</span>,</span> +<span> add <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> legend <span class="op">=</span> <span class="op">!</span><span class="va">add</span>,</span> +<span> show_residuals <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> show_errplot <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> maxabs <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> sep_obs <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> rel.height.middle <span class="op">=</span> <span class="fl">0.9</span>,</span> +<span> row_layout <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> lpos <span class="op">=</span> <span class="st">"topright"</span>,</span> +<span> inset <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.05</span>, <span class="fl">0.05</span><span class="op">)</span>,</span> +<span> show_errmin <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> errmin_digits <span class="op">=</span> <span class="fl">3</span>,</span> +<span> frame <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="fu">plot_sep</span><span class="op">(</span></span> +<span> <span class="va">fit</span>,</span> +<span> show_errmin <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> show_residuals <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/ifelse.html" class="external-link">ifelse</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/identical.html" class="external-link">identical</a></span><span class="op">(</span><span class="va">fit</span><span class="op">$</span><span class="va">err_mod</span>, <span class="st">"const"</span><span class="op">)</span>, <span class="cn">TRUE</span>, <span class="st">"standardized"</span><span class="op">)</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="fu">plot_res</span><span class="op">(</span></span> +<span> <span class="va">fit</span>,</span> +<span> sep_obs <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> show_errmin <span class="op">=</span> <span class="va">sep_obs</span>,</span> +<span> standardized <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/ifelse.html" class="external-link">ifelse</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/identical.html" class="external-link">identical</a></span><span class="op">(</span><span class="va">fit</span><span class="op">$</span><span class="va">err_mod</span>, <span class="st">"const"</span><span class="op">)</span>, <span class="cn">FALSE</span>, <span class="cn">TRUE</span><span class="op">)</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="fu">plot_err</span><span class="op">(</span><span class="va">fit</span>, sep_obs <span class="op">=</span> <span class="cn">FALSE</span>, show_errmin <span class="op">=</span> <span class="va">sep_obs</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>Alias for fit introduced for compatibility with the generic S3 +method.</p></dd> + + +<dt id="arg-fit">fit<a class="anchor" aria-label="anchor" href="#arg-fit"></a></dt> +<dd><p>An object of class <code><a href="mkinfit.html">mkinfit</a></code>.</p></dd> + + +<dt id="arg-obs-vars">obs_vars<a class="anchor" aria-label="anchor" href="#arg-obs-vars"></a></dt> +<dd><p>A character vector of names of the observed variables for +which the data and the model should be plotted. Defauls to all observed +variables in the model.</p></dd> + + +<dt id="arg-xlab">xlab<a class="anchor" aria-label="anchor" href="#arg-xlab"></a></dt> +<dd><p>Label for the x axis.</p></dd> + + +<dt id="arg-ylab">ylab<a class="anchor" aria-label="anchor" href="#arg-ylab"></a></dt> +<dd><p>Label for the y axis.</p></dd> + + +<dt id="arg-xlim">xlim<a class="anchor" aria-label="anchor" href="#arg-xlim"></a></dt> +<dd><p>Plot range in x direction.</p></dd> + + +<dt id="arg-ylim">ylim<a class="anchor" aria-label="anchor" href="#arg-ylim"></a></dt> +<dd><p>Plot range in y direction. If given as a list, plot ranges +for the different plot rows can be given for row layout.</p></dd> + + +<dt id="arg-col-obs">col_obs<a class="anchor" aria-label="anchor" href="#arg-col-obs"></a></dt> +<dd><p>Colors used for plotting the observed data and the +corresponding model prediction lines.</p></dd> + + +<dt id="arg-pch-obs">pch_obs<a class="anchor" aria-label="anchor" href="#arg-pch-obs"></a></dt> +<dd><p>Symbols to be used for plotting the data.</p></dd> + + +<dt id="arg-lty-obs">lty_obs<a class="anchor" aria-label="anchor" href="#arg-lty-obs"></a></dt> +<dd><p>Line types to be used for the model predictions.</p></dd> + + +<dt id="arg-add">add<a class="anchor" aria-label="anchor" href="#arg-add"></a></dt> +<dd><p>Should the plot be added to an existing plot?</p></dd> + + +<dt id="arg-legend">legend<a class="anchor" aria-label="anchor" href="#arg-legend"></a></dt> +<dd><p>Should a legend be added to the plot?</p></dd> + + +<dt id="arg-show-residuals">show_residuals<a class="anchor" aria-label="anchor" href="#arg-show-residuals"></a></dt> +<dd><p>Should residuals be shown? If only one plot of the +fits is shown, the residual plot is in the lower third of the plot. +Otherwise, i.e. if "sep_obs" is given, the residual plots will be located +to the right of the plots of the fitted curves. If this is set to +'standardized', a plot of the residuals divided by the standard deviation +given by the fitted error model will be shown.</p></dd> + + +<dt id="arg-show-errplot">show_errplot<a class="anchor" aria-label="anchor" href="#arg-show-errplot"></a></dt> +<dd><p>Should squared residuals and the error model be shown? +If only one plot of the fits is shown, this plot is in the lower third of +the plot. Otherwise, i.e. if "sep_obs" is given, the residual plots will +be located to the right of the plots of the fitted curves.</p></dd> + + +<dt id="arg-maxabs">maxabs<a class="anchor" aria-label="anchor" href="#arg-maxabs"></a></dt> +<dd><p>Maximum absolute value of the residuals. This is used for the +scaling of the y axis and defaults to "auto".</p></dd> + + +<dt id="arg-sep-obs">sep_obs<a class="anchor" aria-label="anchor" href="#arg-sep-obs"></a></dt> +<dd><p>Should the observed variables be shown in separate subplots? +If yes, residual plots requested by "show_residuals" will be shown next +to, not below the plot of the fits.</p></dd> + + +<dt id="arg-rel-height-middle">rel.height.middle<a class="anchor" aria-label="anchor" href="#arg-rel-height-middle"></a></dt> +<dd><p>The relative height of the middle plot, if more +than two rows of plots are shown.</p></dd> + + +<dt id="arg-row-layout">row_layout<a class="anchor" aria-label="anchor" href="#arg-row-layout"></a></dt> +<dd><p>Should we use a row layout where the residual plot or the +error model plot is shown to the right?</p></dd> + + +<dt id="arg-lpos">lpos<a class="anchor" aria-label="anchor" href="#arg-lpos"></a></dt> +<dd><p>Position(s) of the legend(s). Passed to <code><a href="https://rdrr.io/r/graphics/legend.html" class="external-link">legend</a></code> as +the first argument. If not length one, this should be of the same length +as the obs_var argument.</p></dd> + + +<dt id="arg-inset">inset<a class="anchor" aria-label="anchor" href="#arg-inset"></a></dt> +<dd><p>Passed to <code><a href="https://rdrr.io/r/graphics/legend.html" class="external-link">legend</a></code> if applicable.</p></dd> + + +<dt id="arg-show-errmin">show_errmin<a class="anchor" aria-label="anchor" href="#arg-show-errmin"></a></dt> +<dd><p>Should the FOCUS chi2 error value be shown in the upper +margin of the plot?</p></dd> + + +<dt id="arg-errmin-digits">errmin_digits<a class="anchor" aria-label="anchor" href="#arg-errmin-digits"></a></dt> +<dd><p>The number of significant digits for rounding the FOCUS +chi2 error percentage.</p></dd> + + +<dt id="arg-frame">frame<a class="anchor" aria-label="anchor" href="#arg-frame"></a></dt> +<dd><p>Should a frame be drawn around the plots?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further arguments passed to <code><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></code>.</p></dd> + + +<dt id="arg-standardized">standardized<a class="anchor" aria-label="anchor" href="#arg-standardized"></a></dt> +<dd><p>When calling 'plot_res', should the residuals be +standardized in the residual plot?</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The function is called for its side effect.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>If the current plot device is a <code><a href="https://rdrr.io/pkg/tikzDevice/man/tikz.html" class="external-link">tikz</a></code> device, then +latex is being used for the formatting of the chi2 error level, if +<code>show_errmin = TRUE</code>.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># One parent compound, one metabolite, both single first order, path from</span></span></span> +<span class="r-in"><span><span class="co"># parent to sink included</span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"m1"</span>, full <span class="op">=</span> <span class="st">"Parent"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, full <span class="op">=</span> <span class="st">"Metabolite M1"</span> <span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_2006_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mkinfit-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu">plot_res</span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mkinfit-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu">plot_res</span><span class="op">(</span><span class="va">fit</span>, standardized <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mkinfit-3.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu">plot_err</span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mkinfit-4.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Show the observed variables separately, with residuals</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fit</span>, sep_obs <span class="op">=</span> <span class="cn">TRUE</span>, show_residuals <span class="op">=</span> <span class="cn">TRUE</span>, lpos <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"topright"</span>, <span class="st">"bottomright"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> show_errmin <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mkinfit-5.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The same can be obtained with less typing, using the convenience function plot_sep</span></span></span> +<span class="r-in"><span><span class="fu">plot_sep</span><span class="op">(</span><span class="va">fit</span>, lpos <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"topright"</span>, <span class="st">"bottomright"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mkinfit-6.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Show the observed variables separately, with the error model</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fit</span>, sep_obs <span class="op">=</span> <span class="cn">TRUE</span>, show_errplot <span class="op">=</span> <span class="cn">TRUE</span>, lpos <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"topright"</span>, <span class="st">"bottomright"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> show_errmin <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mkinfit-7.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/plot.mmkin-1.png b/docs/dev/reference/plot.mmkin-1.png Binary files differnew file mode 100644 index 00000000..58051871 --- /dev/null +++ b/docs/dev/reference/plot.mmkin-1.png diff --git a/docs/dev/reference/plot.mmkin-2.png b/docs/dev/reference/plot.mmkin-2.png Binary files differnew file mode 100644 index 00000000..eff04808 --- /dev/null +++ b/docs/dev/reference/plot.mmkin-2.png diff --git a/docs/dev/reference/plot.mmkin-3.png b/docs/dev/reference/plot.mmkin-3.png Binary files differnew file mode 100644 index 00000000..781c6351 --- /dev/null +++ b/docs/dev/reference/plot.mmkin-3.png diff --git a/docs/dev/reference/plot.mmkin-4.png b/docs/dev/reference/plot.mmkin-4.png Binary files differnew file mode 100644 index 00000000..ffbc6cab --- /dev/null +++ b/docs/dev/reference/plot.mmkin-4.png diff --git a/docs/dev/reference/plot.mmkin-5.png b/docs/dev/reference/plot.mmkin-5.png Binary files differnew file mode 100644 index 00000000..37bbac8b --- /dev/null +++ b/docs/dev/reference/plot.mmkin-5.png diff --git a/docs/dev/reference/plot.mmkin.html b/docs/dev/reference/plot.mmkin.html new file mode 100644 index 00000000..1f7907e9 --- /dev/null +++ b/docs/dev/reference/plot.mmkin.html @@ -0,0 +1,222 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin"><meta name="description" content="When x is a row selected from an mmkin object ([.mmkin), the +same model fitted for at least one dataset is shown. When it is a column, +the fit of at least one model to the same dataset is shown."><meta property="og:description" content="When x is a row selected from an mmkin object ([.mmkin), the +same model fitted for at least one dataset is shown. When it is a column, +the fit of at least one model to the same dataset is shown."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/plot.mmkin.R" class="external-link"><code>R/plot.mmkin.R</code></a></small> + <div class="d-none name"><code>plot.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>When x is a row selected from an mmkin object (<code><a href="Extract.mmkin.html">[.mmkin</a></code>), the +same model fitted for at least one dataset is shown. When it is a column, +the fit of at least one model to the same dataset is shown.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span></span> +<span> <span class="va">x</span>,</span> +<span> main <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> legends <span class="op">=</span> <span class="fl">1</span>,</span> +<span> resplot <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"time"</span>, <span class="st">"errmod"</span><span class="op">)</span>,</span> +<span> ylab <span class="op">=</span> <span class="st">"Residue"</span>,</span> +<span> standardized <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> show_errmin <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> errmin_var <span class="op">=</span> <span class="st">"All data"</span>,</span> +<span> errmin_digits <span class="op">=</span> <span class="fl">3</span>,</span> +<span> cex <span class="op">=</span> <span class="fl">0.7</span>,</span> +<span> rel.height.middle <span class="op">=</span> <span class="fl">0.9</span>,</span> +<span> ymax <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An object of class <code><a href="mmkin.html">mmkin</a></code>, with either one row or one +column.</p></dd> + + +<dt id="arg-main">main<a class="anchor" aria-label="anchor" href="#arg-main"></a></dt> +<dd><p>The main title placed on the outer margin of the plot.</p></dd> + + +<dt id="arg-legends">legends<a class="anchor" aria-label="anchor" href="#arg-legends"></a></dt> +<dd><p>An index for the fits for which legends should be shown.</p></dd> + + +<dt id="arg-resplot">resplot<a class="anchor" aria-label="anchor" href="#arg-resplot"></a></dt> +<dd><p>Should the residuals plotted against time, using +<code><a href="mkinresplot.html">mkinresplot</a></code>, or as squared residuals against predicted +values, with the error model, using <code><a href="mkinerrplot.html">mkinerrplot</a></code>.</p></dd> + + +<dt id="arg-ylab">ylab<a class="anchor" aria-label="anchor" href="#arg-ylab"></a></dt> +<dd><p>Label for the y axis.</p></dd> + + +<dt id="arg-standardized">standardized<a class="anchor" aria-label="anchor" href="#arg-standardized"></a></dt> +<dd><p>Should the residuals be standardized? This option +is passed to <code><a href="mkinresplot.html">mkinresplot</a></code>, it only takes effect if +<code>resplot = "time"</code>.</p></dd> + + +<dt id="arg-show-errmin">show_errmin<a class="anchor" aria-label="anchor" href="#arg-show-errmin"></a></dt> +<dd><p>Should the chi2 error level be shown on top of the plots +to the left?</p></dd> + + +<dt id="arg-errmin-var">errmin_var<a class="anchor" aria-label="anchor" href="#arg-errmin-var"></a></dt> +<dd><p>The variable for which the FOCUS chi2 error value should +be shown.</p></dd> + + +<dt id="arg-errmin-digits">errmin_digits<a class="anchor" aria-label="anchor" href="#arg-errmin-digits"></a></dt> +<dd><p>The number of significant digits for rounding the FOCUS +chi2 error percentage.</p></dd> + + +<dt id="arg-cex">cex<a class="anchor" aria-label="anchor" href="#arg-cex"></a></dt> +<dd><p>Passed to the plot functions and <code><a href="https://rdrr.io/r/graphics/mtext.html" class="external-link">mtext</a></code>.</p></dd> + + +<dt id="arg-rel-height-middle">rel.height.middle<a class="anchor" aria-label="anchor" href="#arg-rel-height-middle"></a></dt> +<dd><p>The relative height of the middle plot, if more +than two rows of plots are shown.</p></dd> + + +<dt id="arg-ymax">ymax<a class="anchor" aria-label="anchor" href="#arg-ymax"></a></dt> +<dd><p>Maximum y axis value for <code><a href="plot.mkinfit.html">plot.mkinfit</a></code>.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further arguments passed to <code><a href="plot.mkinfit.html">plot.mkinfit</a></code> and +<code><a href="mkinresplot.html">mkinresplot</a></code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The function is called for its side effect.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>If the current plot device is a <code><a href="https://rdrr.io/pkg/tikzDevice/man/tikz.html" class="external-link">tikz</a></code> device, then +latex is being used for the formatting of the chi2 error level.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="co"># Only use one core not to offend CRAN checks</span></span></span> +<span class="r-in"><span> <span class="va">fits</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="st">"HS"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"FOCUS B"</span> <span class="op">=</span> <span class="va">FOCUS_2006_B</span>, <span class="st">"FOCUS C"</span> <span class="op">=</span> <span class="va">FOCUS_2006_C</span><span class="op">)</span>, <span class="co"># named list for titles</span></span></span> +<span class="r-in"><span> cores <span class="op">=</span> <span class="fl">1</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Optimisation did not converge:</span> +<span class="r-wrn co"><span class="r-pr">#></span> iteration limit reached without convergence (10)</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits</span><span class="op">[</span>, <span class="st">"FOCUS C"</span><span class="op">]</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mmkin-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits</span><span class="op">[</span><span class="st">"FOMC"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mmkin-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits</span><span class="op">[</span><span class="st">"FOMC"</span>, <span class="op">]</span>, show_errmin <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mmkin-3.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># We can also plot a single fit, if we like the way plot.mmkin works, but then the plot</span></span></span> +<span class="r-in"><span> <span class="co"># height should be smaller than the plot width (this is not possible for the html pages</span></span></span> +<span class="r-in"><span> <span class="co"># generated by pkgdown, as far as I know).</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits</span><span class="op">[</span><span class="st">"FOMC"</span>, <span class="st">"FOCUS C"</span><span class="op">]</span><span class="op">)</span> <span class="co"># same as plot(fits[1, 2])</span></span></span> +<span class="r-plt img"><img src="plot.mmkin-4.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># Show the error models</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fits</span><span class="op">[</span><span class="st">"FOMC"</span>, <span class="op">]</span>, resplot <span class="op">=</span> <span class="st">"errmod"</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="plot.mmkin-5.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/plot.nafta.html b/docs/dev/reference/plot.nafta.html new file mode 100644 index 00000000..16bf0942 --- /dev/null +++ b/docs/dev/reference/plot.nafta.html @@ -0,0 +1,128 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Plot the results of the three models used in the NAFTA scheme. — plot.nafta • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Plot the results of the three models used in the NAFTA scheme. — plot.nafta"><meta name="description" content="The plots are ordered with increasing complexity of the model in this +function (SFO, then IORE, then DFOP)."><meta property="og:description" content="The plots are ordered with increasing complexity of the model in this +function (SFO, then IORE, then DFOP)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Plot the results of the three models used in the NAFTA scheme.</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/nafta.R" class="external-link"><code>R/nafta.R</code></a></small> + <div class="d-none name"><code>plot.nafta.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The plots are ordered with increasing complexity of the model in this +function (SFO, then IORE, then DFOP).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'nafta'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/graphics/plot.default.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">x</span>, legend <span class="op">=</span> <span class="cn">FALSE</span>, main <span class="op">=</span> <span class="st">"auto"</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An object of class <code><a href="nafta.html">nafta</a></code>.</p></dd> + + +<dt id="arg-legend">legend<a class="anchor" aria-label="anchor" href="#arg-legend"></a></dt> +<dd><p>Should a legend be added?</p></dd> + + +<dt id="arg-main">main<a class="anchor" aria-label="anchor" href="#arg-main"></a></dt> +<dd><p>Possibility to override the main title of the plot.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further arguments passed to <code><a href="plot.mmkin.html">plot.mmkin</a></code>.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The function is called for its side effect.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>Calls <code><a href="plot.mmkin.html">plot.mmkin</a></code>.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/plot_err.html b/docs/dev/reference/plot_err.html new file mode 100644 index 00000000..2885b160 --- /dev/null +++ b/docs/dev/reference/plot_err.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html"> + </head> +</html> + diff --git a/docs/dev/reference/plot_res.html b/docs/dev/reference/plot_res.html new file mode 100644 index 00000000..2885b160 --- /dev/null +++ b/docs/dev/reference/plot_res.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html"> + </head> +</html> + diff --git a/docs/dev/reference/plot_sep.html b/docs/dev/reference/plot_sep.html new file mode 100644 index 00000000..2885b160 --- /dev/null +++ b/docs/dev/reference/plot_sep.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.illparms.mhmkin.html b/docs/dev/reference/print.illparms.mhmkin.html new file mode 100644 index 00000000..efbcc181 --- /dev/null +++ b/docs/dev/reference/print.illparms.mhmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.illparms.mkinfit.html b/docs/dev/reference/print.illparms.mkinfit.html new file mode 100644 index 00000000..efbcc181 --- /dev/null +++ b/docs/dev/reference/print.illparms.mkinfit.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.illparms.mmkin.html b/docs/dev/reference/print.illparms.mmkin.html new file mode 100644 index 00000000..efbcc181 --- /dev/null +++ b/docs/dev/reference/print.illparms.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.illparms.saem.mmkin.html b/docs/dev/reference/print.illparms.saem.mmkin.html new file mode 100644 index 00000000..efbcc181 --- /dev/null +++ b/docs/dev/reference/print.illparms.saem.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.mhmkin.html b/docs/dev/reference/print.mhmkin.html new file mode 100644 index 00000000..19cc9c91 --- /dev/null +++ b/docs/dev/reference/print.mhmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.mixed.mmkin.html b/docs/dev/reference/print.mixed.mmkin.html new file mode 100644 index 00000000..7b45f95d --- /dev/null +++ b/docs/dev/reference/print.mixed.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.mkinds.html b/docs/dev/reference/print.mkinds.html new file mode 100644 index 00000000..69424352 --- /dev/null +++ b/docs/dev/reference/print.mkinds.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.mkindsg.html b/docs/dev/reference/print.mkindsg.html new file mode 100644 index 00000000..66f9a81d --- /dev/null +++ b/docs/dev/reference/print.mkindsg.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.mkinmod.html b/docs/dev/reference/print.mkinmod.html new file mode 100644 index 00000000..0ffb4f23 --- /dev/null +++ b/docs/dev/reference/print.mkinmod.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.mmkin.html b/docs/dev/reference/print.mmkin.html new file mode 100644 index 00000000..9ea1bd04 --- /dev/null +++ b/docs/dev/reference/print.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.multistart.html b/docs/dev/reference/print.multistart.html new file mode 100644 index 00000000..06f15f0c --- /dev/null +++ b/docs/dev/reference/print.multistart.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.nafta.html b/docs/dev/reference/print.nafta.html new file mode 100644 index 00000000..e9563e53 --- /dev/null +++ b/docs/dev/reference/print.nafta.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.nlme.mmkin.html b/docs/dev/reference/print.nlme.mmkin.html new file mode 100644 index 00000000..dc3bfe09 --- /dev/null +++ b/docs/dev/reference/print.nlme.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.saem.mmkin.html b/docs/dev/reference/print.saem.mmkin.html new file mode 100644 index 00000000..fb5a153f --- /dev/null +++ b/docs/dev/reference/print.saem.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/saem.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/saem.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.status.mhmkin.html b/docs/dev/reference/print.status.mhmkin.html new file mode 100644 index 00000000..9451cf16 --- /dev/null +++ b/docs/dev/reference/print.status.mhmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/status.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/status.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.status.mmkin.html b/docs/dev/reference/print.status.mmkin.html new file mode 100644 index 00000000..9451cf16 --- /dev/null +++ b/docs/dev/reference/print.status.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/status.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/status.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.summary.mkinfit.html b/docs/dev/reference/print.summary.mkinfit.html new file mode 100644 index 00000000..e8ff4c3c --- /dev/null +++ b/docs/dev/reference/print.summary.mkinfit.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.summary.mmkin.html b/docs/dev/reference/print.summary.mmkin.html new file mode 100644 index 00000000..2ec58ffd --- /dev/null +++ b/docs/dev/reference/print.summary.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/summary.mmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/summary.mmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.summary.nlme.mmkin.html b/docs/dev/reference/print.summary.nlme.mmkin.html new file mode 100644 index 00000000..b6c51558 --- /dev/null +++ b/docs/dev/reference/print.summary.nlme.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/print.summary.saem.mmkin.html b/docs/dev/reference/print.summary.saem.mmkin.html new file mode 100644 index 00000000..280587f2 --- /dev/null +++ b/docs/dev/reference/print.summary.saem.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/read_spreadsheet.html b/docs/dev/reference/read_spreadsheet.html new file mode 100644 index 00000000..d9c6ca2d --- /dev/null +++ b/docs/dev/reference/read_spreadsheet.html @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Read datasets and relevant meta information from a spreadsheet file — read_spreadsheet • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Read datasets and relevant meta information from a spreadsheet file — read_spreadsheet"><meta name="description" content="This function imports one dataset from each sheet of a spreadsheet file. +These sheets are selected based on the contents of a sheet 'Datasets', with +a column called 'Dataset Number', containing numbers identifying the dataset +sheets to be read in. In the second column there must be a grouping +variable, which will often be named 'Soil'. Optionally, time normalization +factors can be given in columns named 'Temperature' and 'Moisture'."><meta property="og:description" content="This function imports one dataset from each sheet of a spreadsheet file. +These sheets are selected based on the contents of a sheet 'Datasets', with +a column called 'Dataset Number', containing numbers identifying the dataset +sheets to be read in. In the second column there must be a grouping +variable, which will often be named 'Soil'. Optionally, time normalization +factors can be given in columns named 'Temperature' and 'Moisture'."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Read datasets and relevant meta information from a spreadsheet file</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/read_spreadsheet.R" class="external-link"><code>R/read_spreadsheet.R</code></a></small> + <div class="d-none name"><code>read_spreadsheet.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function imports one dataset from each sheet of a spreadsheet file. +These sheets are selected based on the contents of a sheet 'Datasets', with +a column called 'Dataset Number', containing numbers identifying the dataset +sheets to be read in. In the second column there must be a grouping +variable, which will often be named 'Soil'. Optionally, time normalization +factors can be given in columns named 'Temperature' and 'Moisture'.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">read_spreadsheet</span><span class="op">(</span></span> +<span> <span class="va">path</span>,</span> +<span> valid_datasets <span class="op">=</span> <span class="st">"all"</span>,</span> +<span> parent_only <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> normalize <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-path">path<a class="anchor" aria-label="anchor" href="#arg-path"></a></dt> +<dd><p>Absolute or relative path to the spreadsheet file</p></dd> + + +<dt id="arg-valid-datasets">valid_datasets<a class="anchor" aria-label="anchor" href="#arg-valid-datasets"></a></dt> +<dd><p>Optional numeric index of the valid datasets, default is +to use all datasets</p></dd> + + +<dt id="arg-parent-only">parent_only<a class="anchor" aria-label="anchor" href="#arg-parent-only"></a></dt> +<dd><p>Should only the parent data be used?</p></dd> + + +<dt id="arg-normalize">normalize<a class="anchor" aria-label="anchor" href="#arg-normalize"></a></dt> +<dd><p>Should the time scale be normalized using temperature +and moisture normalisation factors in the sheet 'Datasets'?</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>There must be a sheet 'Compounds', with columns 'Name' and 'Acronym'. +The first row read after the header read in from this sheet is assumed +to contain name and acronym of the parent compound.</p> +<p>The dataset sheets should be named using the dataset numbers read in from +the 'Datasets' sheet, i.e. '1', '2', ... . In each dataset sheet, the name +of the observed variable (e.g. the acronym of the parent compound or +one of its transformation products) should be in the first column, +the time values should be in the second colum, and the observed value +in the third column.</p> +<p>In case relevant covariate data are available, they should be given +in a sheet 'Covariates', containing one line for each value of the grouping +variable specified in 'Datasets'. These values should be in the first +column and the column must have the same name as the second column in +'Datasets'. Covariates will be read in from columns four and higher. +Their names should preferably not contain special characters like spaces, +so they can be easily used for specifying covariate models.</p> +<p>A similar data structure is defined as the R6 class <a href="mkindsg.html">mkindsg</a>, but +is probably more complicated to use.</p> + </div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/reexports.html b/docs/dev/reference/reexports.html new file mode 100644 index 00000000..e0763155 --- /dev/null +++ b/docs/dev/reference/reexports.html @@ -0,0 +1,118 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Objects exported from other packages — reexports • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Objects exported from other packages — reexports"><meta name="description" content="These objects are imported from other packages. Follow the links +below to see their documentation. + + lmtest +lrtest + + + nlme +intervals, nlme + + +"><meta property="og:description" content="These objects are imported from other packages. Follow the links +below to see their documentation. + + lmtest +lrtest + + + nlme +intervals, nlme + + +"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Objects exported from other packages</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/intervals.R" class="external-link"><code>R/intervals.R</code></a>, <a href="https://github.com/jranke/mkin/blob/HEAD/R/lrtest.mkinfit.R" class="external-link"><code>R/lrtest.mkinfit.R</code></a>, <a href="https://github.com/jranke/mkin/blob/HEAD/R/nlme.mmkin.R" class="external-link"><code>R/nlme.mmkin.R</code></a></small> + <div class="d-none name"><code>reexports.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>These objects are imported from other packages. Follow the links +below to see their documentation.</p> +<dl><dt>lmtest</dt> +<dd><p><code><a href="https://rdrr.io/pkg/lmtest/man/lrtest.html" class="external-link">lrtest</a></code></p></dd> + + + <dt>nlme</dt> +<dd><p><code><a href="https://rdrr.io/pkg/nlme/man/intervals.html" class="external-link">intervals</a></code>, <code><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></code></p></dd> + + +</dl></div> + + + + </main></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/residuals.mkinfit.html b/docs/dev/reference/residuals.mkinfit.html new file mode 100644 index 00000000..cd5c7aff --- /dev/null +++ b/docs/dev/reference/residuals.mkinfit.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Extract residuals from an mkinfit model — residuals.mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Extract residuals from an mkinfit model — residuals.mkinfit"><meta name="description" content="Extract residuals from an mkinfit model"><meta property="og:description" content="Extract residuals from an mkinfit model"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Extract residuals from an mkinfit model</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/residuals.mkinfit.R" class="external-link"><code>R/residuals.mkinfit.R</code></a></small> + <div class="d-none name"><code>residuals.mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Extract residuals from an mkinfit model</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/residuals.html" class="external-link">residuals</a></span><span class="op">(</span><span class="va">object</span>, standardized <span class="op">=</span> <span class="cn">FALSE</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>A <code><a href="mkinfit.html">mkinfit</a></code> object</p></dd> + + +<dt id="arg-standardized">standardized<a class="anchor" aria-label="anchor" href="#arg-standardized"></a></dt> +<dd><p>Should the residuals be standardized by dividing by the +standard deviation obtained from the fitted error model?</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Not used</p></dd> + +</dl></div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">f</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="va">FOCUS_2006_C</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/residuals.html" class="external-link">residuals</a></span><span class="op">(</span><span class="va">f</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.09726374 -0.13912142 -0.15351210 0.73388322 -0.08657004 -0.93204702</span> +<span class="r-out co"><span class="r-pr">#></span> [7] -0.03269080 1.45347823 -0.88423697</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/residuals.html" class="external-link">residuals</a></span><span class="op">(</span><span class="va">f</span>, standardized <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.13969917 -0.19981904 -0.22048826 1.05407091 -0.12433989 -1.33869208</span> +<span class="r-out co"><span class="r-pr">#></span> [7] -0.04695355 2.08761977 -1.27002287</span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/saem-1.png b/docs/dev/reference/saem-1.png Binary files differnew file mode 100644 index 00000000..1fa206c4 --- /dev/null +++ b/docs/dev/reference/saem-1.png diff --git a/docs/dev/reference/saem-2.png b/docs/dev/reference/saem-2.png Binary files differnew file mode 100644 index 00000000..e5c62c35 --- /dev/null +++ b/docs/dev/reference/saem-2.png diff --git a/docs/dev/reference/saem-3.png b/docs/dev/reference/saem-3.png Binary files differnew file mode 100644 index 00000000..09eb2d40 --- /dev/null +++ b/docs/dev/reference/saem-3.png diff --git a/docs/dev/reference/saem-4.png b/docs/dev/reference/saem-4.png Binary files differnew file mode 100644 index 00000000..87ebc56f --- /dev/null +++ b/docs/dev/reference/saem-4.png diff --git a/docs/dev/reference/saem.html b/docs/dev/reference/saem.html new file mode 100644 index 00000000..25eb03c7 --- /dev/null +++ b/docs/dev/reference/saem.html @@ -0,0 +1,731 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Fit nonlinear mixed models with SAEM — saem • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Fit nonlinear mixed models with SAEM — saem"><meta name="description" content="This function uses saemix::saemix() as a backend for fitting nonlinear mixed +effects models created from mmkin row objects using the Stochastic Approximation +Expectation Maximisation algorithm (SAEM)."><meta property="og:description" content="This function uses saemix::saemix() as a backend for fitting nonlinear mixed +effects models created from mmkin row objects using the Stochastic Approximation +Expectation Maximisation algorithm (SAEM)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Fit nonlinear mixed models with SAEM</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/saem.R" class="external-link"><code>R/saem.R</code></a></small> + <div class="d-none name"><code>saem.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function uses <code><a href="https://rdrr.io/pkg/saemix/man/saemix.html" class="external-link">saemix::saemix()</a></code> as a backend for fitting nonlinear mixed +effects models created from <a href="mmkin.html">mmkin</a> row objects using the Stochastic Approximation +Expectation Maximisation algorithm (SAEM).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">saem</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu">saem</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> transformations <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"mkin"</span>, <span class="st">"saemix"</span><span class="op">)</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> degparms_start <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/numeric.html" class="external-link">numeric</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> test_log_parms <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> conf.level <span class="op">=</span> <span class="fl">0.6</span>,</span> +<span> solution_type <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> covariance.model <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> omega.init <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> covariates <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> error.init <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fl">1</span><span class="op">)</span>,</span> +<span> nbiter.saemix <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">300</span>, <span class="fl">100</span><span class="op">)</span>,</span> +<span> control <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>displayProgress <span class="op">=</span> <span class="cn">FALSE</span>, print <span class="op">=</span> <span class="cn">FALSE</span>, nbiter.saemix <span class="op">=</span> <span class="va">nbiter.saemix</span>,</span> +<span> save <span class="op">=</span> <span class="cn">FALSE</span>, save.graphs <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span> +<span> verbose <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> quiet <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'saem.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, digits <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"digits"</span><span class="op">)</span> <span class="op">-</span> <span class="fl">3</span><span class="op">)</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">saemix_model</span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> solution_type <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> transformations <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"mkin"</span>, <span class="st">"saemix"</span><span class="op">)</span>,</span> +<span> error_model <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> degparms_start <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/numeric.html" class="external-link">numeric</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> covariance.model <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> no_random_effect <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> omega.init <span class="op">=</span> <span class="st">"auto"</span>,</span> +<span> covariates <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> covariate_models <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> error.init <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/numeric.html" class="external-link">numeric</a></span><span class="op">(</span><span class="op">)</span>,</span> +<span> test_log_parms <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> conf.level <span class="op">=</span> <span class="fl">0.6</span>,</span> +<span> verbose <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="fu">saemix_data</span><span class="op">(</span><span class="va">object</span>, covariates <span class="op">=</span> <span class="cn">NULL</span>, verbose <span class="op">=</span> <span class="cn">FALSE</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An <a href="mmkin.html">mmkin</a> row object containing several fits of the same +<a href="mkinmod.html">mkinmod</a> model to different datasets</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Further parameters passed to <a href="https://rdrr.io/pkg/saemix/man/saemixModel.html" class="external-link">saemix::saemixModel</a>.</p></dd> + + +<dt id="arg-transformations">transformations<a class="anchor" aria-label="anchor" href="#arg-transformations"></a></dt> +<dd><p>Per default, all parameter transformations are done +in mkin. If this argument is set to 'saemix', parameter transformations +are done in 'saemix' for the supported cases, i.e. (as of version 1.1.2) +SFO, FOMC, DFOP and HS without fixing <code>parent_0</code>, and SFO or DFOP with +one SFO metabolite.</p></dd> + + +<dt id="arg-error-model">error_model<a class="anchor" aria-label="anchor" href="#arg-error-model"></a></dt> +<dd><p>Possibility to override the error model used in the mmkin object</p></dd> + + +<dt id="arg-degparms-start">degparms_start<a class="anchor" aria-label="anchor" href="#arg-degparms-start"></a></dt> +<dd><p>Parameter values given as a named numeric vector will +be used to override the starting values obtained from the 'mmkin' object.</p></dd> + + +<dt id="arg-test-log-parms">test_log_parms<a class="anchor" aria-label="anchor" href="#arg-test-log-parms"></a></dt> +<dd><p>If TRUE, an attempt is made to use more robust starting +values for population parameters fitted as log parameters in mkin (like +rate constants) by only considering rate constants that pass the t-test +when calculating mean degradation parameters using <a href="mean_degparms.html">mean_degparms</a>.</p></dd> + + +<dt id="arg-conf-level">conf.level<a class="anchor" aria-label="anchor" href="#arg-conf-level"></a></dt> +<dd><p>Possibility to adjust the required confidence level +for parameter that are tested if requested by 'test_log_parms'.</p></dd> + + +<dt id="arg-solution-type">solution_type<a class="anchor" aria-label="anchor" href="#arg-solution-type"></a></dt> +<dd><p>Possibility to specify the solution type in case the +automatic choice is not desired</p></dd> + + +<dt id="arg-covariance-model">covariance.model<a class="anchor" aria-label="anchor" href="#arg-covariance-model"></a></dt> +<dd><p>Will be passed to <code><a href="https://rdrr.io/pkg/saemix/man/saemixModel.html" class="external-link">saemix::saemixModel()</a></code>. Per +default, uncorrelated random effects are specified for all degradation +parameters.</p></dd> + + +<dt id="arg-omega-init">omega.init<a class="anchor" aria-label="anchor" href="#arg-omega-init"></a></dt> +<dd><p>Will be passed to <code><a href="https://rdrr.io/pkg/saemix/man/saemixModel.html" class="external-link">saemix::saemixModel()</a></code>. If using +mkin transformations and the default covariance model with optionally +excluded random effects, the variances of the degradation parameters +are estimated using <a href="mean_degparms.html">mean_degparms</a>, with testing of untransformed +log parameters for significant difference from zero. If not using +mkin transformations or a custom covariance model, the default +initialisation of <a href="https://rdrr.io/pkg/saemix/man/saemixModel.html" class="external-link">saemix::saemixModel</a> is used for omega.init.</p></dd> + + +<dt id="arg-covariates">covariates<a class="anchor" aria-label="anchor" href="#arg-covariates"></a></dt> +<dd><p>A data frame with covariate data for use in +'covariate_models', with dataset names as row names.</p></dd> + + +<dt id="arg-covariate-models">covariate_models<a class="anchor" aria-label="anchor" href="#arg-covariate-models"></a></dt> +<dd><p>A list containing linear model formulas with one explanatory +variable, i.e. of the type 'parameter ~ covariate'. Covariates must be available +in the 'covariates' data frame.</p></dd> + + +<dt id="arg-no-random-effect">no_random_effect<a class="anchor" aria-label="anchor" href="#arg-no-random-effect"></a></dt> +<dd><p>Character vector of degradation parameters for +which there should be no variability over the groups. Only used +if the covariance model is not explicitly specified.</p></dd> + + +<dt id="arg-error-init">error.init<a class="anchor" aria-label="anchor" href="#arg-error-init"></a></dt> +<dd><p>Will be passed to <code><a href="https://rdrr.io/pkg/saemix/man/saemixModel.html" class="external-link">saemix::saemixModel()</a></code>.</p></dd> + + +<dt id="arg-nbiter-saemix">nbiter.saemix<a class="anchor" aria-label="anchor" href="#arg-nbiter-saemix"></a></dt> +<dd><p>Convenience option to increase the number of +iterations</p></dd> + + +<dt id="arg-control">control<a class="anchor" aria-label="anchor" href="#arg-control"></a></dt> +<dd><p>Passed to <a href="https://rdrr.io/pkg/saemix/man/saemix.html" class="external-link">saemix::saemix</a>.</p></dd> + + +<dt id="arg-verbose">verbose<a class="anchor" aria-label="anchor" href="#arg-verbose"></a></dt> +<dd><p>Should we print information about created objects of +type <a href="https://rdrr.io/pkg/saemix/man/SaemixModel-class.html" class="external-link">saemix::SaemixModel</a> and <a href="https://rdrr.io/pkg/saemix/man/SaemixData-class.html" class="external-link">saemix::SaemixData</a>?</p></dd> + + +<dt id="arg-quiet">quiet<a class="anchor" aria-label="anchor" href="#arg-quiet"></a></dt> +<dd><p>Should we suppress the messages saemix prints at the beginning +and the end of the optimisation process?</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>An saem.mmkin object to print</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>Number of digits to use for printing</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>An S3 object of class 'saem.mmkin', containing the fitted +<a href="https://rdrr.io/pkg/saemix/man/SaemixObject-class.html" class="external-link">saemix::SaemixObject</a> as a list component named 'so'. The +object also inherits from 'mixed.mmkin'.</p> +<p>An <a href="https://rdrr.io/pkg/saemix/man/SaemixModel-class.html" class="external-link">saemix::SaemixModel</a> object.</p> +<p>An <a href="https://rdrr.io/pkg/saemix/man/SaemixData-class.html" class="external-link">saemix::SaemixData</a> object.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>An mmkin row object is essentially a list of mkinfit objects that have been +obtained by fitting the same model to a list of datasets using <a href="mkinfit.html">mkinfit</a>.</p> +<p>Starting values for the fixed effects (population mean parameters, argument +psi0 of <code><a href="https://rdrr.io/pkg/saemix/man/saemixModel.html" class="external-link">saemix::saemixModel()</a></code> are the mean values of the parameters found +using <a href="mmkin.html">mmkin</a>.</p> + </div> + <div class="section level2"> + <h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2> + <div class="dont-index"><p><a href="summary.saem.mmkin.html">summary.saem.mmkin</a> <a href="plot.mixed.mmkin.html">plot.mixed.mmkin</a></p></div> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">ds</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">experimental_data_for_UBA_2019</span><span class="op">[</span><span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">]</span>,</span></span> +<span class="r-in"><span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">x</span><span class="op">$</span><span class="va">data</span><span class="op">[</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"name"</span>, <span class="st">"time"</span>, <span class="st">"value"</span><span class="op">)</span><span class="op">]</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"Dataset"</span>, <span class="fl">6</span><span class="op">:</span><span class="fl">10</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_mmkin_parent_p0_fixed</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="va">ds</span>,</span></span> +<span class="r-in"><span> state.ini <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>, fixed_initials <span class="op">=</span> <span class="st">"parent"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_p0_fixed</span> <span class="op"><-</span> <span class="fu">saem</span><span class="op">(</span><span class="va">f_mmkin_parent_p0_fixed</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f_mmkin_parent</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span>, <span class="st">"DFOP"</span><span class="op">)</span>, <span class="va">ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_sfo</span> <span class="op"><-</span> <span class="fu">saem</span><span class="op">(</span><span class="va">f_mmkin_parent</span><span class="op">[</span><span class="st">"SFO"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_fomc</span> <span class="op"><-</span> <span class="fu">saem</span><span class="op">(</span><span class="va">f_mmkin_parent</span><span class="op">[</span><span class="st">"FOMC"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_dfop</span> <span class="op"><-</span> <span class="fu">saem</span><span class="op">(</span><span class="va">f_mmkin_parent</span><span class="op">[</span><span class="st">"DFOP"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_sfo</span>, <span class="va">f_saem_fomc</span>, <span class="va">f_saem_dfop</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 90 observations of 1 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_sfo 5 624.33 622.38 -307.17</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_fomc 7 467.85 465.11 -226.92</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_dfop 9 493.76 490.24 -237.88</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_sfo</span>, <span class="va">f_saem_dfop</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 90 observations of 1 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik Chisq Df Pr(>Chisq) </span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_sfo 5 624.33 622.38 -307.17 </span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_dfop 9 493.76 490.24 -237.88 138.57 4 < 2.2e-16 ***</span> +<span class="r-out co"><span class="r-pr">#></span> ---</span> +<span class="r-out co"><span class="r-pr">#></span> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</span> +<span class="r-in"><span><span class="fu"><a href="illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_dfop</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] "sd(g_qlogis)"</span> +<span class="r-in"><span><span class="va">f_saem_dfop_red</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_dfop</span>, no_random_effect <span class="op">=</span> <span class="st">"g_qlogis"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_dfop</span>, <span class="va">f_saem_dfop_red</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 90 observations of 1 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik Chisq Df Pr(>Chisq)</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_dfop_red 8 488.68 485.55 -236.34 </span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_dfop 9 493.76 490.24 -237.88 0 1 1</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_sfo</span>, <span class="va">f_saem_fomc</span>, <span class="va">f_saem_dfop</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 90 observations of 1 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_sfo 5 624.33 622.38 -307.17</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_fomc 7 467.85 465.11 -226.92</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_dfop 9 493.76 490.24 -237.88</span> +<span class="r-in"><span><span class="co"># The returned saem.mmkin object contains an SaemixObject, therefore we can use</span></span></span> +<span class="r-in"><span><span class="co"># functions from saemix</span></span></span> +<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va">saemix</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Loading required package: npde</span> +<span class="r-msg co"><span class="r-pr">#></span> Package saemix, version 3.3, March 2024</span> +<span class="r-msg co"><span class="r-pr">#></span> please direct bugs, questions and feedback to emmanuelle.comets@inserm.fr</span> +<span class="r-msg co"><span class="r-pr">#></span> </span> +<span class="r-msg co"><span class="r-pr">#></span> Attaching package: ‘saemix’</span> +<span class="r-msg co"><span class="r-pr">#></span> The following objects are masked from ‘package:npde’:</span> +<span class="r-msg co"><span class="r-pr">#></span> </span> +<span class="r-msg co"><span class="r-pr">#></span> kurtosis, skewness</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/compare.saemix.html" class="external-link">compare.saemix</a></span><span class="op">(</span><span class="va">f_saem_sfo</span><span class="op">$</span><span class="va">so</span>, <span class="va">f_saem_fomc</span><span class="op">$</span><span class="va">so</span>, <span class="va">f_saem_dfop</span><span class="op">$</span><span class="va">so</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Likelihoods calculated by importance sampling</span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC</span> +<span class="r-out co"><span class="r-pr">#></span> 1 624.3316 622.3788</span> +<span class="r-out co"><span class="r-pr">#></span> 2 467.8472 465.1132</span> +<span class="r-out co"><span class="r-pr">#></span> 3 493.7592 490.2441</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_fomc</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"convergence"</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="saem-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_fomc</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"individual.fit"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Simulating data using nsim = 1000 simulated datasets</span> +<span class="r-out co"><span class="r-pr">#></span> Computing WRES and npde .</span> +<span class="r-plt img"><img src="saem-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_fomc</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"npde"</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Simulating data using nsim = 1000 simulated datasets</span> +<span class="r-out co"><span class="r-pr">#></span> Computing WRES and npde .</span> +<span class="r-msg co"><span class="r-pr">#></span> Please use npdeSaemix to obtain VPC and npde</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_fomc</span><span class="op">$</span><span class="va">so</span>, plot.type <span class="op">=</span> <span class="st">"vpc"</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="saem-3.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">f_mmkin_parent_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_mmkin_parent</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_fomc_tc</span> <span class="op"><-</span> <span class="fu">saem</span><span class="op">(</span><span class="va">f_mmkin_parent_tc</span><span class="op">[</span><span class="st">"FOMC"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_fomc</span>, <span class="va">f_saem_fomc_tc</span>, test <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 90 observations of 1 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik Chisq Df Pr(>Chisq)</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_fomc 7 467.85 465.11 -226.92 </span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_fomc_tc 8 469.90 466.77 -226.95 0 1 1</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">sfo_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">fomc_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"FOMC"</span>, <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="va">dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="st">"A1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span><span class="co"># The following fit uses analytical solutions for SFO-SFO and DFOP-SFO,</span></span></span> +<span class="r-in"><span><span class="co"># and compiled ODEs for FOMC that are much slower</span></span></span> +<span class="r-in"><span><span class="va">f_mmkin</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> <span class="st">"SFO-SFO"</span> <span class="op">=</span> <span class="va">sfo_sfo</span>, <span class="st">"FOMC-SFO"</span> <span class="op">=</span> <span class="va">fomc_sfo</span>, <span class="st">"DFOP-SFO"</span> <span class="op">=</span> <span class="va">dfop_sfo</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">ds</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># saem fits of SFO-SFO and DFOP-SFO to these data take about five seconds</span></span></span> +<span class="r-in"><span><span class="co"># each on this system, as we use analytical solutions written for saemix.</span></span></span> +<span class="r-in"><span><span class="co"># When using the analytical solutions written for mkin this took around</span></span></span> +<span class="r-in"><span><span class="co"># four minutes</span></span></span> +<span class="r-in"><span><span class="va">f_saem_sfo_sfo</span> <span class="op"><-</span> <span class="fu">saem</span><span class="op">(</span><span class="va">f_mmkin</span><span class="op">[</span><span class="st">"SFO-SFO"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_dfop_sfo</span> <span class="op"><-</span> <span class="fu">saem</span><span class="op">(</span><span class="va">f_mmkin</span><span class="op">[</span><span class="st">"DFOP-SFO"</span>, <span class="op">]</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># We can use print, plot and summary methods to check the results</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Kinetic nonlinear mixed-effects model fit by SAEM</span> +<span class="r-out co"><span class="r-pr">#></span> Structural model:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span> +<span class="r-out co"><span class="r-pr">#></span> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span> +<span class="r-out co"><span class="r-pr">#></span> * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_A1/dt = + f_parent_to_A1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g)</span> +<span class="r-out co"><span class="r-pr">#></span> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) *</span> +<span class="r-out co"><span class="r-pr">#></span> exp(-k2 * time))) * parent - k_A1 * A1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 170 observations of 2 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood computed by importance sampling</span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 839.2 834.1 -406.6</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> estimate lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 93.70402 91.04104 96.3670</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_A1 -5.83760 -7.66452 -4.0107</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -0.95718 -1.35955 -0.5548</span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 -2.35514 -3.39402 -1.3163</span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 -3.79634 -5.64009 -1.9526</span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis -0.02108 -0.66463 0.6225</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 1.88191 1.66491 2.0989</span> +<span class="r-out co"><span class="r-pr">#></span> SD.parent_0 2.81628 0.78922 4.8433</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_A1 1.78751 0.42105 3.1540</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_parent_qlogis 0.45016 0.16116 0.7391</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k1 1.06923 0.31676 1.8217</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k2 2.03768 0.70938 3.3660</span> +<span class="r-out co"><span class="r-pr">#></span> SD.g_qlogis 0.44024 -0.09262 0.9731</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="saem-4.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo</span>, data <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> saemix version used for fitting: 3.3 </span> +<span class="r-out co"><span class="r-pr">#></span> mkin version used for pre-fitting: 1.2.10 </span> +<span class="r-out co"><span class="r-pr">#></span> R version used for fitting: 4.4.2 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of fit: Fri Feb 14 07:32:13 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of summary: Fri Feb 14 07:32:13 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span> +<span class="r-out co"><span class="r-pr">#></span> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span> +<span class="r-out co"><span class="r-pr">#></span> * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_A1/dt = + f_parent_to_A1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g)</span> +<span class="r-out co"><span class="r-pr">#></span> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) *</span> +<span class="r-out co"><span class="r-pr">#></span> exp(-k2 * time))) * parent - k_A1 * A1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 170 observations of 2 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model predictions using solution type analytical </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted in 3.605 s</span> +<span class="r-out co"><span class="r-pr">#></span> Using 300, 100 iterations and 10 chains</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance model: Constant variance </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for degradation parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 </span> +<span class="r-out co"><span class="r-pr">#></span> 93.8102 -5.3734 -0.9711 -1.8799 -4.2708 </span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis </span> +<span class="r-out co"><span class="r-pr">#></span> 0.1356 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed degradation parameter values:</span> +<span class="r-out co"><span class="r-pr">#></span> None</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for random effects (square root of initial entries in omega):</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 4.941 0.000 0.0000 0.000 0.000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_A1 0.000 2.551 0.0000 0.000 0.000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis 0.000 0.000 0.7251 0.000 0.000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 0.000 0.000 0.0000 1.449 0.000 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 0.000 0.000 0.0000 0.000 2.228 0.0000</span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis 0.000 0.000 0.0000 0.000 0.000 0.7814</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for error model parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 </span> +<span class="r-out co"><span class="r-pr">#></span> 1 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Results:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood computed by importance sampling</span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 839.2 834.1 -406.6</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Optimised parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 93.70402 91.04104 96.3670</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_A1 -5.83760 -7.66452 -4.0107</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -0.95718 -1.35955 -0.5548</span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 -2.35514 -3.39402 -1.3163</span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 -3.79634 -5.64009 -1.9526</span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis -0.02108 -0.66463 0.6225</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 1.88191 1.66491 2.0989</span> +<span class="r-out co"><span class="r-pr">#></span> SD.parent_0 2.81628 0.78922 4.8433</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_A1 1.78751 0.42105 3.1540</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_parent_qlogis 0.45016 0.16116 0.7391</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k1 1.06923 0.31676 1.8217</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k2 2.03768 0.70938 3.3660</span> +<span class="r-out co"><span class="r-pr">#></span> SD.g_qlogis 0.44024 -0.09262 0.9731</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Correlation: </span> +<span class="r-out co"><span class="r-pr">#></span> parnt_0 lg_k_A1 f_prnt_ log_k1 log_k2 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k_A1 -0.0147 </span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -0.0269 0.0573 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 0.0263 -0.0011 -0.0040 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 0.0020 0.0065 -0.0002 -0.0776 </span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis -0.0248 -0.0180 -0.0004 -0.0903 -0.0603</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> SD.parent_0 2.8163 0.78922 4.8433</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_A1 1.7875 0.42105 3.1540</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_parent_qlogis 0.4502 0.16116 0.7391</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k1 1.0692 0.31676 1.8217</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k2 2.0377 0.70938 3.3660</span> +<span class="r-out co"><span class="r-pr">#></span> SD.g_qlogis 0.4402 -0.09262 0.9731</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance model:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 1.882 1.665 2.099</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Backtransformed parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 93.704015 9.104e+01 96.36699</span> +<span class="r-out co"><span class="r-pr">#></span> k_A1 0.002916 4.692e-04 0.01812</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_A1 0.277443 2.043e-01 0.36475</span> +<span class="r-out co"><span class="r-pr">#></span> k1 0.094880 3.357e-02 0.26813</span> +<span class="r-out co"><span class="r-pr">#></span> k2 0.022453 3.553e-03 0.14191</span> +<span class="r-out co"><span class="r-pr">#></span> g 0.494731 3.397e-01 0.65078</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Resulting formation fractions:</span> +<span class="r-out co"><span class="r-pr">#></span> ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_A1 0.2774</span> +<span class="r-out co"><span class="r-pr">#></span> parent_sink 0.7226</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Estimated disappearance times:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back DT50_k1 DT50_k2</span> +<span class="r-out co"><span class="r-pr">#></span> parent 14.0 72.38 21.79 7.306 30.87</span> +<span class="r-out co"><span class="r-pr">#></span> A1 237.7 789.68 NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> ds name time observed predicted residual std standardized</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 0 97.2 95.70025 1.49975 1.882 0.79693</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 0 96.4 95.70025 0.69975 1.882 0.37183</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 3 71.1 71.44670 -0.34670 1.882 -0.18423</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 3 69.2 71.44670 -2.24670 1.882 -1.19384</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 6 58.1 56.59283 1.50717 1.882 0.80087</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 6 56.6 56.59283 0.00717 1.882 0.00381</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 10 44.4 44.56648 -0.16648 1.882 -0.08847</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 10 43.4 44.56648 -1.16648 1.882 -0.61984</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 20 33.3 29.76020 3.53980 1.882 1.88096</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 20 29.2 29.76020 -0.56020 1.882 -0.29767</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 34 17.6 19.39208 -1.79208 1.882 -0.95226</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 34 18.0 19.39208 -1.39208 1.882 -0.73971</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 55 10.5 10.55761 -0.05761 1.882 -0.03061</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 55 9.3 10.55761 -1.25761 1.882 -0.66826</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 90 4.5 3.84742 0.65258 1.882 0.34676</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 90 4.7 3.84742 0.85258 1.882 0.45304</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 112 3.0 2.03997 0.96003 1.882 0.51013</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 112 3.4 2.03997 1.36003 1.882 0.72268</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 132 2.3 1.14585 1.15415 1.882 0.61328</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 parent 132 2.7 1.14585 1.55415 1.882 0.82583</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 3 4.3 4.86054 -0.56054 1.882 -0.29786</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 3 4.6 4.86054 -0.26054 1.882 -0.13844</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 6 7.0 7.74179 -0.74179 1.882 -0.39417</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 6 7.2 7.74179 -0.54179 1.882 -0.28789</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 10 8.2 9.94048 -1.74048 1.882 -0.92485</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 10 8.0 9.94048 -1.94048 1.882 -1.03112</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 20 11.0 12.19109 -1.19109 1.882 -0.63291</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 20 13.7 12.19109 1.50891 1.882 0.80180</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 34 11.5 13.10706 -1.60706 1.882 -0.85395</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 34 12.7 13.10706 -0.40706 1.882 -0.21630</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 55 14.9 13.06131 1.83869 1.882 0.97703</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 55 14.5 13.06131 1.43869 1.882 0.76448</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 90 12.1 11.54495 0.55505 1.882 0.29494</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 90 12.3 11.54495 0.75505 1.882 0.40122</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 112 9.9 10.31533 -0.41533 1.882 -0.22070</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 112 10.2 10.31533 -0.11533 1.882 -0.06128</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 132 8.8 9.20222 -0.40222 1.882 -0.21373</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 6 A1 132 7.8 9.20222 -1.40222 1.882 -0.74510</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 0 93.6 90.82357 2.77643 1.882 1.47532</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 0 92.3 90.82357 1.47643 1.882 0.78453</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 3 87.0 84.73448 2.26552 1.882 1.20384</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 3 82.2 84.73448 -2.53448 1.882 -1.34675</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 7 74.0 77.65013 -3.65013 1.882 -1.93958</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 7 73.9 77.65013 -3.75013 1.882 -1.99272</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 14 64.2 67.60639 -3.40639 1.882 -1.81007</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 14 69.5 67.60639 1.89361 1.882 1.00621</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 30 54.0 52.53663 1.46337 1.882 0.77760</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 30 54.6 52.53663 2.06337 1.882 1.09642</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 60 41.1 39.42728 1.67272 1.882 0.88884</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 60 38.4 39.42728 -1.02728 1.882 -0.54587</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 90 32.5 33.76360 -1.26360 1.882 -0.67144</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 90 35.5 33.76360 1.73640 1.882 0.92268</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 120 28.1 30.39975 -2.29975 1.882 -1.22203</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 120 29.0 30.39975 -1.39975 1.882 -0.74379</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 180 26.5 25.62379 0.87621 1.882 0.46559</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 parent 180 27.6 25.62379 1.97621 1.882 1.05010</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 3 3.9 2.70005 1.19995 1.882 0.63762</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 3 3.1 2.70005 0.39995 1.882 0.21252</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 7 6.9 5.83475 1.06525 1.882 0.56605</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 7 6.6 5.83475 0.76525 1.882 0.40663</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 14 10.4 10.26142 0.13858 1.882 0.07364</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 14 8.3 10.26142 -1.96142 1.882 -1.04225</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 30 14.4 16.82999 -2.42999 1.882 -1.29123</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 30 13.7 16.82999 -3.12999 1.882 -1.66319</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 60 22.1 22.32486 -0.22486 1.882 -0.11949</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 60 22.3 22.32486 -0.02486 1.882 -0.01321</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 90 27.5 24.45927 3.04073 1.882 1.61576</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 90 25.4 24.45927 0.94073 1.882 0.49988</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 120 28.0 25.54862 2.45138 1.882 1.30260</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 120 26.6 25.54862 1.05138 1.882 0.55868</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 180 25.8 26.82277 -1.02277 1.882 -0.54347</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 7 A1 180 25.3 26.82277 -1.52277 1.882 -0.80916</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 0 91.9 91.16791 0.73209 1.882 0.38901</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 0 90.8 91.16791 -0.36791 1.882 -0.19550</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 1 64.9 67.58358 -2.68358 1.882 -1.42598</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 1 66.2 67.58358 -1.38358 1.882 -0.73520</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 3 43.5 41.62086 1.87914 1.882 0.99853</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 3 44.1 41.62086 2.47914 1.882 1.31735</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 8 18.3 19.60116 -1.30116 1.882 -0.69140</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 8 18.1 19.60116 -1.50116 1.882 -0.79768</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 14 10.2 10.63101 -0.43101 1.882 -0.22903</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 14 10.8 10.63101 0.16899 1.882 0.08980</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 27 4.9 3.12435 1.77565 1.882 0.94354</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 27 3.3 3.12435 0.17565 1.882 0.09334</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 48 1.6 0.43578 1.16422 1.882 0.61864</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 48 1.5 0.43578 1.06422 1.882 0.56550</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 70 1.1 0.05534 1.04466 1.882 0.55510</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 parent 70 0.9 0.05534 0.84466 1.882 0.44883</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 1 9.6 7.63450 1.96550 1.882 1.04442</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 1 7.7 7.63450 0.06550 1.882 0.03481</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 3 15.0 15.52593 -0.52593 1.882 -0.27947</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 3 15.1 15.52593 -0.42593 1.882 -0.22633</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 8 21.2 20.32192 0.87808 1.882 0.46659</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 8 21.1 20.32192 0.77808 1.882 0.41345</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 14 19.7 20.09721 -0.39721 1.882 -0.21107</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 14 18.9 20.09721 -1.19721 1.882 -0.63617</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 27 17.5 16.37477 1.12523 1.882 0.59792</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 27 15.9 16.37477 -0.47477 1.882 -0.25228</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 48 9.5 10.13141 -0.63141 1.882 -0.33551</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 48 9.8 10.13141 -0.33141 1.882 -0.17610</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 70 6.2 5.81827 0.38173 1.882 0.20284</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 8 A1 70 6.1 5.81827 0.28173 1.882 0.14970</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 0 99.8 97.48728 2.31272 1.882 1.22892</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 0 98.3 97.48728 0.81272 1.882 0.43186</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 1 77.1 79.29476 -2.19476 1.882 -1.16624</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 1 77.2 79.29476 -2.09476 1.882 -1.11310</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 3 59.0 55.67060 3.32940 1.882 1.76915</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 3 58.1 55.67060 2.42940 1.882 1.29092</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 8 27.4 31.57871 -4.17871 1.882 -2.22046</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 8 29.2 31.57871 -2.37871 1.882 -1.26398</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 14 19.1 22.51546 -3.41546 1.882 -1.81489</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 14 29.6 22.51546 7.08454 1.882 3.76454</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 27 10.1 14.09074 -3.99074 1.882 -2.12057</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 27 18.2 14.09074 4.10926 1.882 2.18355</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 48 4.5 6.95747 -2.45747 1.882 -1.30584</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 48 9.1 6.95747 2.14253 1.882 1.13848</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 70 2.3 3.32472 -1.02472 1.882 -0.54451</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 70 2.9 3.32472 -0.42472 1.882 -0.22569</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 91 2.0 1.64300 0.35700 1.882 0.18970</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 91 1.8 1.64300 0.15700 1.882 0.08343</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 120 2.0 0.62073 1.37927 1.882 0.73291</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 parent 120 2.2 0.62073 1.57927 1.882 0.83918</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 1 4.2 3.64568 0.55432 1.882 0.29455</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 1 3.9 3.64568 0.25432 1.882 0.13514</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 3 7.4 8.30173 -0.90173 1.882 -0.47916</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 3 7.9 8.30173 -0.40173 1.882 -0.21347</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 8 14.5 12.71589 1.78411 1.882 0.94803</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 8 13.7 12.71589 0.98411 1.882 0.52293</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 14 14.2 13.90452 0.29548 1.882 0.15701</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 14 12.2 13.90452 -1.70452 1.882 -0.90574</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 27 13.7 14.15523 -0.45523 1.882 -0.24190</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 27 13.2 14.15523 -0.95523 1.882 -0.50759</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 48 13.6 13.31038 0.28962 1.882 0.15389</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 48 15.4 13.31038 2.08962 1.882 1.11037</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 70 10.4 11.85965 -1.45965 1.882 -0.77562</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 70 11.6 11.85965 -0.25965 1.882 -0.13797</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 91 10.0 10.36294 -0.36294 1.882 -0.19286</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 91 9.5 10.36294 -0.86294 1.882 -0.45855</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 120 9.1 8.43003 0.66997 1.882 0.35601</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 9 A1 120 9.0 8.43003 0.56997 1.882 0.30287</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 0 96.1 93.95603 2.14397 1.882 1.13925</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 0 94.3 93.95603 0.34397 1.882 0.18278</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 8 73.9 77.70592 -3.80592 1.882 -2.02237</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 8 73.9 77.70592 -3.80592 1.882 -2.02237</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 14 69.4 70.04570 -0.64570 1.882 -0.34311</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 14 73.1 70.04570 3.05430 1.882 1.62298</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 21 65.6 64.01710 1.58290 1.882 0.84111</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 21 65.3 64.01710 1.28290 1.882 0.68170</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 41 55.9 54.98434 0.91566 1.882 0.48656</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 41 54.4 54.98434 -0.58434 1.882 -0.31050</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 63 47.0 49.87137 -2.87137 1.882 -1.52577</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 63 49.3 49.87137 -0.57137 1.882 -0.30361</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 91 44.7 45.06727 -0.36727 1.882 -0.19516</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 91 46.7 45.06727 1.63273 1.882 0.86759</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 120 42.1 40.76402 1.33598 1.882 0.70991</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 parent 120 41.3 40.76402 0.53598 1.882 0.28481</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 8 3.3 4.14599 -0.84599 1.882 -0.44954</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 8 3.4 4.14599 -0.74599 1.882 -0.39640</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 14 3.9 6.08478 -2.18478 1.882 -1.16093</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 14 2.9 6.08478 -3.18478 1.882 -1.69231</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 21 6.4 7.59411 -1.19411 1.882 -0.63452</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 21 7.2 7.59411 -0.39411 1.882 -0.20942</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 41 9.1 9.78292 -0.68292 1.882 -0.36289</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 41 8.5 9.78292 -1.28292 1.882 -0.68171</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 63 11.7 10.93274 0.76726 1.882 0.40770</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 63 12.0 10.93274 1.06726 1.882 0.56711</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 91 13.3 11.93986 1.36014 1.882 0.72274</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 91 13.2 11.93986 1.26014 1.882 0.66961</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 120 14.3 12.79238 1.50762 1.882 0.80111</span> +<span class="r-out co"><span class="r-pr">#></span> Dataset 10 A1 120 12.1 12.79238 -0.69238 1.882 -0.36791</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The following takes about 6 minutes</span></span></span> +<span class="r-in"><span><span class="va">f_saem_dfop_sfo_deSolve</span> <span class="op"><-</span> <span class="fu">saem</span><span class="op">(</span><span class="va">f_mmkin</span><span class="op">[</span><span class="st">"DFOP-SFO"</span>, <span class="op">]</span>, solution_type <span class="op">=</span> <span class="st">"deSolve"</span>,</span></span> +<span class="r-in"><span> nbiter.saemix <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">200</span>, <span class="fl">80</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> DINTDY- T (=R1) illegal </span> +<span class="r-out co"><span class="r-pr">#></span> In above message, R1 = 70</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> T not in interval TCUR - HU (= R1) to TCUR (=R2) </span> +<span class="r-out co"><span class="r-pr">#></span> In above message, R1 = 53.1042, R2 = 56.6326</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> DINTDY- T (=R1) illegal </span> +<span class="r-out co"><span class="r-pr">#></span> In above message, R1 = 91</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> T not in interval TCUR - HU (= R1) to TCUR (=R2) </span> +<span class="r-out co"><span class="r-pr">#></span> In above message, R1 = 53.1042, R2 = 56.6326</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> DLSODA- Trouble in DINTDY. ITASK = I1, TOUT = R1</span> +<span class="r-out co"><span class="r-pr">#></span> In above message, I1 = 1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> In above message, R1 = 91</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error in deSolve::lsoda(y = odeini, times = outtimes, func = lsoda_func, : </span> +<span class="r-out co"><span class="r-pr">#></span> illegal input detected before taking any integration steps - see written message</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co">#anova(</span></span></span> +<span class="r-in"><span><span class="co"># f_saem_dfop_sfo,</span></span></span> +<span class="r-in"><span><span class="co"># f_saem_dfop_sfo_deSolve))</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># If the model supports it, we can also use eigenvalue based solutions, which</span></span></span> +<span class="r-in"><span><span class="co"># take a similar amount of time</span></span></span> +<span class="r-in"><span><span class="co">#f_saem_sfo_sfo_eigen <- saem(f_mmkin["SFO-SFO", ], solution_type = "eigen",</span></span></span> +<span class="r-in"><span><span class="co"># control = list(nbiter.saemix = c(200, 80), nbdisplay = 10))</span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/saem.mmkin.html b/docs/dev/reference/saem.mmkin.html new file mode 100644 index 00000000..fb5a153f --- /dev/null +++ b/docs/dev/reference/saem.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/saem.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/saem.html"> + </head> +</html> + diff --git a/docs/dev/reference/saemix_data.html b/docs/dev/reference/saemix_data.html new file mode 100644 index 00000000..fb5a153f --- /dev/null +++ b/docs/dev/reference/saemix_data.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/saem.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/saem.html"> + </head> +</html> + diff --git a/docs/dev/reference/saemix_model.html b/docs/dev/reference/saemix_model.html new file mode 100644 index 00000000..fb5a153f --- /dev/null +++ b/docs/dev/reference/saemix_model.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/saem.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/saem.html"> + </head> +</html> + diff --git a/docs/dev/reference/schaefer07_complex_case-1.png b/docs/dev/reference/schaefer07_complex_case-1.png Binary files differnew file mode 100644 index 00000000..4a44d324 --- /dev/null +++ b/docs/dev/reference/schaefer07_complex_case-1.png diff --git a/docs/dev/reference/schaefer07_complex_case.html b/docs/dev/reference/schaefer07_complex_case.html new file mode 100644 index 00000000..7b54053f --- /dev/null +++ b/docs/dev/reference/schaefer07_complex_case.html @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Metabolism data set used for checking the software quality of KinGUI — schaefer07_complex_case • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Metabolism data set used for checking the software quality of KinGUI — schaefer07_complex_case"><meta name="description" content="This dataset was used for a comparison of KinGUI and ModelMaker to check the + software quality of KinGUI in the original publication (Schäfer et al., 2007). + The results from the fitting are also included."><meta property="og:description" content="This dataset was used for a comparison of KinGUI and ModelMaker to check the + software quality of KinGUI in the original publication (Schäfer et al., 2007). + The results from the fitting are also included."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Metabolism data set used for checking the software quality of KinGUI</h1> + + <div class="d-none name"><code>schaefer07_complex_case.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This dataset was used for a comparison of KinGUI and ModelMaker to check the + software quality of KinGUI in the original publication (Schäfer et al., 2007). + The results from the fitting are also included.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">schaefer07_complex_case</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>The data set is a data frame with 8 observations on the following 6 variables.</p><dl><dt><code>time</code></dt> +<dd><p>a numeric vector</p></dd> + + <dt><code>parent</code></dt> +<dd><p>a numeric vector</p></dd> + + <dt><code>A1</code></dt> +<dd><p>a numeric vector</p></dd> + + <dt><code>B1</code></dt> +<dd><p>a numeric vector</p></dd> + + <dt><code>C1</code></dt> +<dd><p>a numeric vector</p></dd> + + <dt><code>A2</code></dt> +<dd><p>a numeric vector</p></dd> + + +</dl><p>The results are a data frame with 14 results for different parameter values</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Schäfer D, Mikolasch B, Rainbird P and Harvey B (2007). KinGUI: a new kinetic + software tool for evaluations according to FOCUS degradation kinetics. In: Del + Re AAM, Capri E, Fragoulis G and Trevisan M (Eds.). Proceedings of the XIII + Symposium Pesticide Chemistry, Piacenza, 2007, p. 916-923.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">data</span> <span class="op"><-</span> <span class="fu"><a href="mkin_wide_to_long.html">mkin_wide_to_long</a></span><span class="op">(</span><span class="va">schaefer07_complex_case</span>, time <span class="op">=</span> <span class="st">"time"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">model</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"A1"</span>, <span class="st">"B1"</span>, <span class="st">"C1"</span><span class="op">)</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"A2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> B1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> C1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> A2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span> <span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">model</span>, <span class="va">data</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/plot.html" class="external-link">plot</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="schaefer07_complex_case-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="fu"><a href="endpoints.html">endpoints</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> $ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_A1 parent_B1 parent_C1 parent_sink A1_A2 A1_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 0.3809618 0.1954668 0.4235714 0.0000000 0.4479540 0.5520460 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> $distimes</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> parent 13.95078 46.34349</span> +<span class="r-out co"><span class="r-pr">#></span> A1 49.75347 165.27745</span> +<span class="r-out co"><span class="r-pr">#></span> B1 37.26905 123.80511</span> +<span class="r-out co"><span class="r-pr">#></span> C1 11.23129 37.30955</span> +<span class="r-out co"><span class="r-pr">#></span> A2 28.50690 94.69789</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-in"><span> <span class="co"># }</span></span></span> +<span class="r-in"><span> <span class="co"># Compare with the results obtained in the original publication</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">schaefer07_complex_results</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> compound parameter KinGUI ModelMaker deviation</span> +<span class="r-out co"><span class="r-pr">#></span> 1 parent degradation rate 0.0496 0.0506 2.0</span> +<span class="r-out co"><span class="r-pr">#></span> 2 parent DT50 13.9900 13.6900 2.2</span> +<span class="r-out co"><span class="r-pr">#></span> 3 metabolite A1 formation fraction 0.3803 0.3696 2.9</span> +<span class="r-out co"><span class="r-pr">#></span> 4 metabolite A1 degradation rate 0.0139 0.0136 2.2</span> +<span class="r-out co"><span class="r-pr">#></span> 5 metabolite A1 DT50 49.9600 50.8900 1.8</span> +<span class="r-out co"><span class="r-pr">#></span> 6 metabolite B1 formation fraction 0.1866 0.1818 2.6</span> +<span class="r-out co"><span class="r-pr">#></span> 7 metabolite B1 degradation rate 0.0175 0.0172 1.7</span> +<span class="r-out co"><span class="r-pr">#></span> 8 metabolite B1 DT50 39.6100 40.2400 1.6</span> +<span class="r-out co"><span class="r-pr">#></span> 9 metabolite C1 formation fraction 0.4331 0.4486 3.5</span> +<span class="r-out co"><span class="r-pr">#></span> 10 metabolite C1 degradation rate 0.0638 0.0700 8.9</span> +<span class="r-out co"><span class="r-pr">#></span> 11 metabolite C1 DT50 10.8700 9.9000 9.8</span> +<span class="r-out co"><span class="r-pr">#></span> 12 metabolite A2 formation fraction 0.4529 0.4559 0.7</span> +<span class="r-out co"><span class="r-pr">#></span> 13 metabolite A2 degradation rate 0.0245 0.0244 0.4</span> +<span class="r-out co"><span class="r-pr">#></span> 14 metabolite A2 DT50 28.2400 28.4500 0.7</span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/schaefer07_complex_results.html b/docs/dev/reference/schaefer07_complex_results.html new file mode 100644 index 00000000..d2396bcf --- /dev/null +++ b/docs/dev/reference/schaefer07_complex_results.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/schaefer07_complex_case.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/schaefer07_complex_case.html"> + </head> +</html> + diff --git a/docs/dev/reference/set_nd_nq.html b/docs/dev/reference/set_nd_nq.html new file mode 100644 index 00000000..c282b58d --- /dev/null +++ b/docs/dev/reference/set_nd_nq.html @@ -0,0 +1,234 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Set non-detects and unquantified values in residue series without replicates — set_nd_nq • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Set non-detects and unquantified values in residue series without replicates — set_nd_nq"><meta name="description" content="This function automates replacing unquantified values in residue time and +depth series. For time series, the function performs part of the residue +processing proposed in the FOCUS kinetics guidance for parent compounds +and metabolites. For two-dimensional residue series over time and depth, +it automates the proposal of Boesten et al (2015)."><meta property="og:description" content="This function automates replacing unquantified values in residue time and +depth series. For time series, the function performs part of the residue +processing proposed in the FOCUS kinetics guidance for parent compounds +and metabolites. For two-dimensional residue series over time and depth, +it automates the proposal of Boesten et al (2015)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Set non-detects and unquantified values in residue series without replicates</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/set_nd_nq.R" class="external-link"><code>R/set_nd_nq.R</code></a></small> + <div class="d-none name"><code>set_nd_nq.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function automates replacing unquantified values in residue time and +depth series. For time series, the function performs part of the residue +processing proposed in the FOCUS kinetics guidance for parent compounds +and metabolites. For two-dimensional residue series over time and depth, +it automates the proposal of Boesten et al (2015).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">set_nd_nq</span><span class="op">(</span><span class="va">res_raw</span>, <span class="va">lod</span>, loq <span class="op">=</span> <span class="cn">NA</span>, time_zero_presence <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">set_nd_nq_focus</span><span class="op">(</span></span> +<span> <span class="va">res_raw</span>,</span> +<span> <span class="va">lod</span>,</span> +<span> loq <span class="op">=</span> <span class="cn">NA</span>,</span> +<span> set_first_sample_nd <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> first_sample_nd_value <span class="op">=</span> <span class="fl">0</span>,</span> +<span> ignore_below_loq_after_first_nd <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-res-raw">res_raw<a class="anchor" aria-label="anchor" href="#arg-res-raw"></a></dt> +<dd><p>Character vector of a residue time series, or matrix of +residue values with rows representing depth profiles for a specific sampling +time, and columns representing time series of residues at the same depth. +Values below the limit of detection (lod) have to be coded as "nd", values +between the limit of detection and the limit of quantification, if any, have +to be coded as "nq". Samples not analysed have to be coded as "na". All +values that are not "na", "nd" or "nq" have to be coercible to numeric</p></dd> + + +<dt id="arg-lod">lod<a class="anchor" aria-label="anchor" href="#arg-lod"></a></dt> +<dd><p>Limit of detection (numeric)</p></dd> + + +<dt id="arg-loq">loq<a class="anchor" aria-label="anchor" href="#arg-loq"></a></dt> +<dd><p>Limit of quantification(numeric). Must be specified if the FOCUS rule to +stop after the first non-detection is to be applied</p></dd> + + +<dt id="arg-time-zero-presence">time_zero_presence<a class="anchor" aria-label="anchor" href="#arg-time-zero-presence"></a></dt> +<dd><p>Do we assume that residues occur at time zero? +This only affects samples from the first sampling time that have been +reported as "nd" (not detected).</p></dd> + + +<dt id="arg-set-first-sample-nd">set_first_sample_nd<a class="anchor" aria-label="anchor" href="#arg-set-first-sample-nd"></a></dt> +<dd><p>Should the first sample be set to "first_sample_nd_value" +in case it is a non-detection?</p></dd> + + +<dt id="arg-first-sample-nd-value">first_sample_nd_value<a class="anchor" aria-label="anchor" href="#arg-first-sample-nd-value"></a></dt> +<dd><p>Value to be used for the first sample if it is a non-detection</p></dd> + + +<dt id="arg-ignore-below-loq-after-first-nd">ignore_below_loq_after_first_nd<a class="anchor" aria-label="anchor" href="#arg-ignore-below-loq-after-first-nd"></a></dt> +<dd><p>Should we ignore values below the LOQ after the first +non-detection that occurs after the quantified values?</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A numeric vector, if a vector was supplied, or a numeric matrix otherwise</p> + </div> + <div class="section level2"> + <h2 id="functions">Functions<a class="anchor" aria-label="anchor" href="#functions"></a></h2> + +<ul><li><p><code>set_nd_nq_focus()</code>: Set non-detects in residue time series according to FOCUS rules</p></li> +</ul></div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Boesten, J. J. T. I., van der Linden, A. M. A., Beltman, W. H. +J. and Pol, J. W. (2015). Leaching of plant protection products and their +transformation products; Proposals for improving the assessment of leaching +to groundwater in the Netherlands — Version 2. Alterra report 2630, Alterra +Wageningen UR (University & Research centre)</p> +<p>FOCUS (2014) Generic Guidance for Estimating Persistence and Degradation +Kinetics from Environmental Fate Studies on Pesticides in EU Registration, Version 1.1, +18 December 2014, p. 251</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># FOCUS (2014) p. 75/76 and 131/132</span></span></span> +<span class="r-in"><span><span class="va">parent_1</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">.12</span>, <span class="fl">.09</span>, <span class="fl">.05</span>, <span class="fl">.03</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">set_nd_nq</span><span class="op">(</span><span class="va">parent_1</span>, <span class="fl">0.02</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.12 0.09 0.05 0.03 0.01 NA NA NA NA NA</span> +<span class="r-in"><span><span class="va">parent_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">.12</span>, <span class="fl">.09</span>, <span class="fl">.05</span>, <span class="fl">.03</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="fl">.03</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">set_nd_nq</span><span class="op">(</span><span class="va">parent_2</span>, <span class="fl">0.02</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.03 0.01 NA NA</span> +<span class="r-in"><span><span class="fu">set_nd_nq_focus</span><span class="op">(</span><span class="va">parent_2</span>, <span class="fl">0.02</span>, loq <span class="op">=</span> <span class="fl">0.05</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.12 0.09 0.05 0.03 0.01 NA NA NA NA NA</span> +<span class="r-in"><span><span class="va">parent_3</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">.12</span>, <span class="fl">.09</span>, <span class="fl">.05</span>, <span class="fl">.03</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="fl">.06</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">set_nd_nq</span><span class="op">(</span><span class="va">parent_3</span>, <span class="fl">0.02</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.06 0.01 NA NA</span> +<span class="r-in"><span><span class="fu">set_nd_nq_focus</span><span class="op">(</span><span class="va">parent_3</span>, <span class="fl">0.02</span>, loq <span class="op">=</span> <span class="fl">0.05</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.06 0.01 NA NA</span> +<span class="r-in"><span><span class="va">metabolite</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>, <span class="fl">0.03</span>, <span class="fl">0.06</span>, <span class="fl">0.10</span>, <span class="fl">0.11</span>, <span class="fl">0.10</span>, <span class="fl">0.09</span>, <span class="fl">0.05</span>, <span class="fl">0.03</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">set_nd_nq</span><span class="op">(</span><span class="va">metabolite</span>, <span class="fl">0.02</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] NA NA 0.01 0.03 0.06 0.10 0.11 0.10 0.09 0.05 0.03 0.01 NA</span> +<span class="r-in"><span><span class="fu">set_nd_nq_focus</span><span class="op">(</span><span class="va">metabolite</span>, <span class="fl">0.02</span>, <span class="fl">0.05</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] 0.00 NA 0.01 0.03 0.06 0.10 0.11 0.10 0.09 0.05 0.03 0.01 NA</span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="co"># Boesten et al. (2015), p. 57/58</span></span></span> +<span class="r-in"><span><span class="va">table_8</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/matrix.html" class="external-link">matrix</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">10</span>, <span class="fl">10</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">4</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fl">10</span>, <span class="fl">10</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nq"</span>, <span class="fl">2</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">2</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fl">10</span>, <span class="fl">10</span>, <span class="fl">10</span>, <span class="st">"nq"</span>, <span class="st">"nd"</span>, <span class="st">"nd"</span>,</span></span> +<span class="r-in"><span> <span class="st">"nq"</span>, <span class="fl">10</span>, <span class="st">"nq"</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">3</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="st">"nd"</span>, <span class="st">"nq"</span>, <span class="st">"nq"</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">3</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">6</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">6</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> ncol <span class="op">=</span> <span class="fl">6</span>, byrow <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">set_nd_nq</span><span class="op">(</span><span class="va">table_8</span>, <span class="fl">0.5</span>, <span class="fl">1.5</span>, time_zero_presence <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [,1] [,2] [,3] [,4] [,5] [,6]</span> +<span class="r-out co"><span class="r-pr">#></span> [1,] 10.00 10.00 0.25 0.25 NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [2,] 10.00 10.00 1.00 1.00 0.25 NA</span> +<span class="r-out co"><span class="r-pr">#></span> [3,] 10.00 10.00 10.00 1.00 0.25 NA</span> +<span class="r-out co"><span class="r-pr">#></span> [4,] 1.00 10.00 1.00 0.25 NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [5,] 0.25 1.00 1.00 0.25 NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [6,] NA 0.25 0.25 NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [7,] NA NA NA NA NA NA</span> +<span class="r-in"><span><span class="va">table_10</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/matrix.html" class="external-link">matrix</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">10</span>, <span class="fl">10</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">4</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fl">10</span>, <span class="fl">10</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">4</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fl">10</span>, <span class="fl">10</span>, <span class="fl">10</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">3</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="st">"nd"</span>, <span class="fl">10</span>, <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">4</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"nd"</span>, <span class="fl">18</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> ncol <span class="op">=</span> <span class="fl">6</span>, byrow <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">set_nd_nq</span><span class="op">(</span><span class="va">table_10</span>, <span class="fl">0.5</span>, time_zero_presence <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [,1] [,2] [,3] [,4] [,5] [,6]</span> +<span class="r-out co"><span class="r-pr">#></span> [1,] 10.00 10.00 0.25 NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [2,] 10.00 10.00 0.25 NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [3,] 10.00 10.00 10.00 0.25 NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [4,] 0.25 10.00 0.25 NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [5,] NA 0.25 NA NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [6,] NA NA NA NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> [7,] NA NA NA NA NA NA</span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/set_nd_nq_focus.html b/docs/dev/reference/set_nd_nq_focus.html new file mode 100644 index 00000000..7a1908a6 --- /dev/null +++ b/docs/dev/reference/set_nd_nq_focus.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html"> + </head> +</html> + diff --git a/docs/dev/reference/sigma_twocomp-1.png b/docs/dev/reference/sigma_twocomp-1.png Binary files differnew file mode 100644 index 00000000..89500ee7 --- /dev/null +++ b/docs/dev/reference/sigma_twocomp-1.png diff --git a/docs/dev/reference/sigma_twocomp.html b/docs/dev/reference/sigma_twocomp.html new file mode 100644 index 00000000..12af9e8a --- /dev/null +++ b/docs/dev/reference/sigma_twocomp.html @@ -0,0 +1,169 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Two-component error model — sigma_twocomp • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Two-component error model — sigma_twocomp"><meta name="description" content="Function describing the standard deviation of the measurement error in +dependence of the measured value \(y\):"><meta property="og:description" content="Function describing the standard deviation of the measurement error in +dependence of the measured value \(y\):"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Two-component error model</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/sigma_twocomp.R" class="external-link"><code>R/sigma_twocomp.R</code></a></small> + <div class="d-none name"><code>sigma_twocomp.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Function describing the standard deviation of the measurement error in +dependence of the measured value \(y\):</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">sigma_twocomp</span><span class="op">(</span><span class="va">y</span>, <span class="va">sigma_low</span>, <span class="va">rsd_high</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-y">y<a class="anchor" aria-label="anchor" href="#arg-y"></a></dt> +<dd><p>The magnitude of the observed value</p></dd> + + +<dt id="arg-sigma-low">sigma_low<a class="anchor" aria-label="anchor" href="#arg-sigma-low"></a></dt> +<dd><p>The asymptotic minimum of the standard deviation for low +observed values</p></dd> + + +<dt id="arg-rsd-high">rsd_high<a class="anchor" aria-label="anchor" href="#arg-rsd-high"></a></dt> +<dd><p>The coefficient describing the increase of the standard +deviation with the magnitude of the observed value</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The standard deviation of the response variable.</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>$$\sigma = \sqrt{ \sigma_{low}^2 + y^2 * {rsd}_{high}^2}$$ sigma = +sqrt(sigma_low^2 + y^2 * rsd_high^2)</p> +<p>This is the error model used for example by Werner et al. (1978). The model +proposed by Rocke and Lorenzato (1995) can be written in this form as well, +but assumes approximate lognormal distribution of errors for high values of +y.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>Werner, Mario, Brooks, Samuel H., and Knott, Lancaster B. (1978) +Additive, Multiplicative, and Mixed Analytical Errors. Clinical Chemistry +24(11), 1895-1898.</p> +<p>Rocke, David M. and Lorenzato, Stefan (1995) A two-component model for +measurement error in analytical chemistry. Technometrics 37(2), 176-184.</p> +<p>Ranke J and Meinecke S (2019) Error Models for the Kinetic Evaluation of Chemical +Degradation Data. <em>Environments</em> 6(12) 124 +<a href="https://doi.org/10.3390/environments6120124" class="external-link">doi:10.3390/environments6120124</a> +.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">times</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d_pred</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>time <span class="op">=</span> <span class="va">times</span>, parent <span class="op">=</span> <span class="fl">100</span> <span class="op">*</span> <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">exp</a></span><span class="op">(</span><span class="op">-</span> <span class="fl">0.03</span> <span class="op">*</span> <span class="va">times</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">123456</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">d_syn</span> <span class="op"><-</span> <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_pred</span>, <span class="kw">function</span><span class="op">(</span><span class="va">y</span><span class="op">)</span> <span class="fu">sigma_twocomp</span><span class="op">(</span><span class="va">y</span>, <span class="fl">1</span>, <span class="fl">0.07</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> reps <span class="op">=</span> <span class="fl">2</span>, n <span class="op">=</span> <span class="fl">1</span><span class="op">)</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span></span></span> +<span class="r-in"><span><span class="va">f_nls</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/nls.html" class="external-link">nls</a></span><span class="op">(</span><span class="va">value</span> <span class="op">~</span> <span class="fu"><a href="https://rdrr.io/r/stats/SSasymp.html" class="external-link">SSasymp</a></span><span class="op">(</span><span class="va">time</span>, <span class="fl">0</span>, <span class="va">parent_0</span>, <span class="va">lrc</span><span class="op">)</span>, data <span class="op">=</span> <span class="va">d_syn</span>,</span></span> +<span class="r-in"><span> start <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>parent_0 <span class="op">=</span> <span class="fl">100</span>, lrc <span class="op">=</span> <span class="op">-</span><span class="fl">3</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://svn.r-project.org/R-packages/trunk/nlme/" class="external-link">nlme</a></span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_gnls</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/gnls.html" class="external-link">gnls</a></span><span class="op">(</span><span class="va">value</span> <span class="op">~</span> <span class="fu"><a href="https://rdrr.io/r/stats/SSasymp.html" class="external-link">SSasymp</a></span><span class="op">(</span><span class="va">time</span>, <span class="fl">0</span>, <span class="va">parent_0</span>, <span class="va">lrc</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> data <span class="op">=</span> <span class="va">d_syn</span>, na.action <span class="op">=</span> <span class="va">na.omit</span>,</span></span> +<span class="r-in"><span> start <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>parent_0 <span class="op">=</span> <span class="fl">100</span>, lrc <span class="op">=</span> <span class="op">-</span><span class="fl">3</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/length.html" class="external-link">length</a></span><span class="op">(</span><span class="fu">findFunction</span><span class="op">(</span><span class="st">"varConstProp"</span><span class="op">)</span><span class="op">)</span> <span class="op">></span> <span class="fl">0</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="va">f_gnls_tc</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_gnls</span>, weights <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/varConstProp.html" class="external-link">varConstProp</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="va">f_gnls_tc_sf</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_gnls_tc</span>, control <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>sigma <span class="op">=</span> <span class="fl">1</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">}</span></span></span> +<span class="r-in"><span><span class="va">f_mkin</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">d_syn</span>, error_model <span class="op">=</span> <span class="st">"const"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_mkin_tc</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">d_syn</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_res</a></span><span class="op">(</span><span class="va">f_mkin_tc</span>, standardized <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="sigma_twocomp-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/AIC.html" class="external-link">AIC</a></span><span class="op">(</span><span class="va">f_nls</span>, <span class="va">f_gnls</span>, <span class="va">f_gnls_tc</span>, <span class="va">f_gnls_tc_sf</span>, <span class="va">f_mkin</span>, <span class="va">f_mkin_tc</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> df AIC</span> +<span class="r-out co"><span class="r-pr">#></span> f_nls 3 114.4817</span> +<span class="r-out co"><span class="r-pr">#></span> f_gnls 3 114.4817</span> +<span class="r-out co"><span class="r-pr">#></span> f_gnls_tc 5 103.6447</span> +<span class="r-out co"><span class="r-pr">#></span> f_gnls_tc_sf 4 101.6447</span> +<span class="r-out co"><span class="r-pr">#></span> f_mkin 3 114.4817</span> +<span class="r-out co"><span class="r-pr">#></span> f_mkin_tc 4 101.6446</span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/status.html b/docs/dev/reference/status.html new file mode 100644 index 00000000..e6388137 --- /dev/null +++ b/docs/dev/reference/status.html @@ -0,0 +1,145 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Method to get status information for fit array objects — status • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Method to get status information for fit array objects — status"><meta name="description" content="Method to get status information for fit array objects"><meta property="og:description" content="Method to get status information for fit array objects"><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Method to get status information for fit array objects</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/status.R" class="external-link"><code>R/status.R</code></a></small> + <div class="d-none name"><code>status.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Method to get status information for fit array objects</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">status</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu">status</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'status.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'mhmkin'</span></span> +<span><span class="fu">status</span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'status.mhmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>The object to investigate</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>For potential future extensions</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>The object to be printed</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>An object with the same dimensions as the fit array +suitable printing method.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">fits</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"FOCUS A"</span> <span class="op">=</span> <span class="va">FOCUS_2006_A</span>,</span></span> +<span class="r-in"><span> <span class="st">"FOCUS B"</span> <span class="op">=</span> <span class="va">FOCUS_2006_C</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">status</span><span class="op">(</span><span class="va">fits</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model FOCUS A FOCUS B</span> +<span class="r-out co"><span class="r-pr">#></span> SFO OK OK </span> +<span class="r-out co"><span class="r-pr">#></span> FOMC C OK </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> C: Optimisation did not converge:</span> +<span class="r-out co"><span class="r-pr">#></span> false convergence (8)</span> +<span class="r-out co"><span class="r-pr">#></span> OK: No warnings</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/status.mhmkin.html b/docs/dev/reference/status.mhmkin.html new file mode 100644 index 00000000..9451cf16 --- /dev/null +++ b/docs/dev/reference/status.mhmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/status.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/status.html"> + </head> +</html> + diff --git a/docs/dev/reference/status.mmkin.html b/docs/dev/reference/status.mmkin.html new file mode 100644 index 00000000..9451cf16 --- /dev/null +++ b/docs/dev/reference/status.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/status.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/status.html"> + </head> +</html> + diff --git a/docs/dev/reference/summary.mkinfit.html b/docs/dev/reference/summary.mkinfit.html new file mode 100644 index 00000000..63a08d05 --- /dev/null +++ b/docs/dev/reference/summary.mkinfit.html @@ -0,0 +1,290 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Summary method for class "mkinfit" — summary.mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Summary method for class " mkinfit summary.mkinfit><meta name="description" content="Lists model equations, initial parameter values, optimised parameters with +some uncertainty statistics, the chi2 error levels calculated according to +FOCUS guidance (2006) as defined therein, formation fractions, DT50 values +and optionally the data, consisting of observed, predicted and residual +values."><meta property="og:description" content="Lists model equations, initial parameter values, optimised parameters with +some uncertainty statistics, the chi2 error levels calculated according to +FOCUS guidance (2006) as defined therein, formation fractions, DT50 values +and optionally the data, consisting of observed, predicted and residual +values."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Summary method for class "mkinfit"</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/summary.mkinfit.R" class="external-link"><code>R/summary.mkinfit.R</code></a></small> + <div class="d-none name"><code>summary.mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Lists model equations, initial parameter values, optimised parameters with +some uncertainty statistics, the chi2 error levels calculated according to +FOCUS guidance (2006) as defined therein, formation fractions, DT50 values +and optionally the data, consisting of observed, predicted and residual +values.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">object</span>, data <span class="op">=</span> <span class="cn">TRUE</span>, distimes <span class="op">=</span> <span class="cn">TRUE</span>, alpha <span class="op">=</span> <span class="fl">0.05</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'summary.mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, digits <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"digits"</span><span class="op">)</span> <span class="op">-</span> <span class="fl">3</span><span class="op">)</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>an object of class <a href="mkinfit.html">mkinfit</a>.</p></dd> + + +<dt id="arg-data">data<a class="anchor" aria-label="anchor" href="#arg-data"></a></dt> +<dd><p>logical, indicating whether the data should be included in the +summary.</p></dd> + + +<dt id="arg-distimes">distimes<a class="anchor" aria-label="anchor" href="#arg-distimes"></a></dt> +<dd><p>logical, indicating whether DT50 and DT90 values should be +included.</p></dd> + + +<dt id="arg-alpha">alpha<a class="anchor" aria-label="anchor" href="#arg-alpha"></a></dt> +<dd><p>error level for confidence interval estimation from t +distribution</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>optional arguments passed to methods like <code>print</code>.</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>an object of class <code>summary.mkinfit</code>.</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>Number of digits to use for printing</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The summary function returns a list with components, among others</p> +<dl><dt>version, Rversion</dt> +<dd><p>The mkin and R versions used</p></dd> + +<dt>date.fit, date.summary</dt> +<dd><p>The dates where the fit and the summary were +produced</p></dd> + +<dt>diffs</dt> +<dd><p>The differential equations used in the model</p></dd> + +<dt>use_of_ff</dt> +<dd><p>Was maximum or minimum use made of formation fractions</p></dd> + +<dt>bpar</dt> +<dd><p>Optimised and backtransformed +parameters</p></dd> + +<dt>data</dt> +<dd><p>The data (see Description above).</p></dd> + +<dt>start</dt> +<dd><p>The starting values and bounds, if applicable, for optimised +parameters.</p></dd> + +<dt>fixed</dt> +<dd><p>The values of fixed parameters.</p></dd> + +<dt>errmin </dt> +<dd><p>The chi2 error levels for +each observed variable.</p></dd> + +<dt>bparms.ode</dt> +<dd><p>All backtransformed ODE +parameters, for use as starting parameters for related models.</p></dd> + +<dt>errparms</dt> +<dd><p>Error model parameters.</p></dd> + +<dt>ff</dt> +<dd><p>The estimated formation fractions derived from the fitted +model.</p></dd> + +<dt>distimes</dt> +<dd><p>The DT50 and DT90 values for each observed variable.</p></dd> + +<dt>SFORB</dt> +<dd><p>If applicable, eigenvalues and fractional eigenvector component +g of SFORB systems in the model.</p></dd> + +</dl><p>The print method is called for its side effect, i.e. printing the summary.</p> + </div> + <div class="section level2"> + <h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a></h2> + <p>FOCUS (2006) “Guidance Document on Estimating Persistence +and Degradation Kinetics from Environmental Fate Studies on Pesticides in +EU Registration” Report of the FOCUS Work Group on Degradation Kinetics, +EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, +<a href="http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics" class="external-link">http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics</a></p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">FOCUS_2006_A</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> mkin version used for fitting: 1.2.10 </span> +<span class="r-out co"><span class="r-pr">#></span> R version used for fitting: 4.4.2 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of fit: Fri Feb 14 07:34:16 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of summary: Fri Feb 14 07:34:16 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - k_parent * parent</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model predictions using solution type analytical </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted using 131 model solutions performed in 0.009 s</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error model: Constant variance </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error model algorithm: OLS </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for parameters to be optimised:</span> +<span class="r-out co"><span class="r-pr">#></span> value type</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 101.24 state</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.10 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for the transformed parameters actually optimised:</span> +<span class="r-out co"><span class="r-pr">#></span> value lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 101.240000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent -2.302585 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed parameter values:</span> +<span class="r-out co"><span class="r-pr">#></span> None</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Results:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 55.28197 55.5203 -24.64099</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Optimised, transformed parameters with symmetric confidence intervals:</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 109.200 3.70400 99.630 118.700</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent -3.291 0.09176 -3.527 -3.055</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.266 1.31600 1.882 8.649</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Parameter correlation:</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent sigma</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 1.000e+00 5.428e-01 1.642e-07</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent 5.428e-01 1.000e+00 2.507e-07</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.642e-07 2.507e-07 1.000e+00</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Backtransformed parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> Confidence intervals for internally transformed parameters are asymmetric.</span> +<span class="r-out co"><span class="r-pr">#></span> t-test (unrealistically) based on the assumption of normal distribution</span> +<span class="r-out co"><span class="r-pr">#></span> for estimators of untransformed parameters.</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate t value Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 109.20000 29.47 4.218e-07 99.6300 118.70000</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.03722 10.90 5.650e-05 0.0294 0.04712</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 5.26600 4.00 5.162e-03 1.8820 8.64900</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> FOCUS Chi2 error levels in percent:</span> +<span class="r-out co"><span class="r-pr">#></span> err.min n.optim df</span> +<span class="r-out co"><span class="r-pr">#></span> All data 8.385 2 6</span> +<span class="r-out co"><span class="r-pr">#></span> parent 8.385 2 6</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Estimated disappearance times:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> parent 18.62 61.87</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> time variable observed predicted residual</span> +<span class="r-out co"><span class="r-pr">#></span> 0 parent 101.24 109.153 -7.9132</span> +<span class="r-out co"><span class="r-pr">#></span> 3 parent 99.27 97.622 1.6484</span> +<span class="r-out co"><span class="r-pr">#></span> 7 parent 90.11 84.119 5.9913</span> +<span class="r-out co"><span class="r-pr">#></span> 14 parent 72.19 64.826 7.3641</span> +<span class="r-out co"><span class="r-pr">#></span> 30 parent 29.71 35.738 -6.0283</span> +<span class="r-out co"><span class="r-pr">#></span> 62 parent 5.98 10.862 -4.8818</span> +<span class="r-out co"><span class="r-pr">#></span> 90 parent 1.54 3.831 -2.2911</span> +<span class="r-out co"><span class="r-pr">#></span> 118 parent 0.39 1.351 -0.9613</span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/summary.mmkin.html b/docs/dev/reference/summary.mmkin.html new file mode 100644 index 00000000..dad19e59 --- /dev/null +++ b/docs/dev/reference/summary.mmkin.html @@ -0,0 +1,155 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Summary method for class "mmkin" — summary.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Summary method for class " mmkin summary.mmkin><meta name="description" content="Shows status information on the mkinfit objects contained in the object +and gives an overview of ill-defined parameters calculated by illparms."><meta property="og:description" content="Shows status information on the mkinfit objects contained in the object +and gives an overview of ill-defined parameters calculated by illparms."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Summary method for class "mmkin"</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/summary.mmkin.R" class="external-link"><code>R/summary.mmkin.R</code></a></small> + <div class="d-none name"><code>summary.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Shows status information on the <a href="mkinfit.html">mkinfit</a> objects contained in the object +and gives an overview of ill-defined parameters calculated by <a href="illparms.html">illparms</a>.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">object</span>, conf.level <span class="op">=</span> <span class="fl">0.95</span>, <span class="va">...</span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'summary.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, digits <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"digits"</span><span class="op">)</span> <span class="op">-</span> <span class="fl">3</span><span class="op">)</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>an object of class <a href="mmkin.html">mmkin</a></p></dd> + + +<dt id="arg-conf-level">conf.level<a class="anchor" aria-label="anchor" href="#arg-conf-level"></a></dt> +<dd><p>confidence level for testing parameters</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>optional arguments passed to methods like <code>print</code>.</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>an object of class <code>summary.mmkin</code>.</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>number of digits to use for printing</p></dd> + +</dl></div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">fits</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"FOMC"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="st">"FOCUS A"</span> <span class="op">=</span> <span class="va">FOCUS_2006_A</span>,</span></span> +<span class="r-in"><span> <span class="st">"FOCUS C"</span> <span class="op">=</span> <span class="va">FOCUS_2006_C</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span>, cores <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Optimisation did not converge:</span> +<span class="r-wrn co"><span class="r-pr">#></span> false convergence (8)</span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fits</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Error model: Constant variance </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted in 0.512 s</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Status:</span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model FOCUS A FOCUS C</span> +<span class="r-out co"><span class="r-pr">#></span> SFO OK OK </span> +<span class="r-out co"><span class="r-pr">#></span> FOMC C OK </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> C: Optimisation did not converge:</span> +<span class="r-out co"><span class="r-pr">#></span> false convergence (8)</span> +<span class="r-out co"><span class="r-pr">#></span> OK: No warnings</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Ill-defined parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> dataset</span> +<span class="r-out co"><span class="r-pr">#></span> model FOCUS A FOCUS C</span> +<span class="r-out co"><span class="r-pr">#></span> SFO </span> +<span class="r-out co"><span class="r-pr">#></span> FOMC parent_0, alpha, beta, sigma </span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/summary.nlme.mmkin.html b/docs/dev/reference/summary.nlme.mmkin.html new file mode 100644 index 00000000..dd4c4771 --- /dev/null +++ b/docs/dev/reference/summary.nlme.mmkin.html @@ -0,0 +1,391 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Summary method for class "nlme.mmkin" — summary.nlme.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Summary method for class " nlme.mmkin summary.nlme.mmkin><meta name="description" content="Lists model equations, initial parameter values, optimised parameters +for fixed effects (population), random effects (deviations from the +population mean) and residual error model, as well as the resulting +endpoints such as formation fractions and DT50 values. Optionally +(default is FALSE), the data are listed in full."><meta property="og:description" content="Lists model equations, initial parameter values, optimised parameters +for fixed effects (population), random effects (deviations from the +population mean) and residual error model, as well as the resulting +endpoints such as formation fractions and DT50 values. Optionally +(default is FALSE), the data are listed in full."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Summary method for class "nlme.mmkin"</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/summary.nlme.mmkin.R" class="external-link"><code>R/summary.nlme.mmkin.R</code></a></small> + <div class="d-none name"><code>summary.nlme.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Lists model equations, initial parameter values, optimised parameters +for fixed effects (population), random effects (deviations from the +population mean) and residual error model, as well as the resulting +endpoints such as formation fractions and DT50 values. Optionally +(default is FALSE), the data are listed in full.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'nlme.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> data <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> verbose <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> distimes <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> alpha <span class="op">=</span> <span class="fl">0.05</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'summary.nlme.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, digits <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"digits"</span><span class="op">)</span> <span class="op">-</span> <span class="fl">3</span><span class="op">)</span>, verbose <span class="op">=</span> <span class="va">x</span><span class="op">$</span><span class="va">verbose</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>an object of class <a href="nlme.mmkin.html">nlme.mmkin</a></p></dd> + + +<dt id="arg-data">data<a class="anchor" aria-label="anchor" href="#arg-data"></a></dt> +<dd><p>logical, indicating whether the full data should be included in +the summary.</p></dd> + + +<dt id="arg-verbose">verbose<a class="anchor" aria-label="anchor" href="#arg-verbose"></a></dt> +<dd><p>Should the summary be verbose?</p></dd> + + +<dt id="arg-distimes">distimes<a class="anchor" aria-label="anchor" href="#arg-distimes"></a></dt> +<dd><p>logical, indicating whether DT50 and DT90 values should be +included.</p></dd> + + +<dt id="arg-alpha">alpha<a class="anchor" aria-label="anchor" href="#arg-alpha"></a></dt> +<dd><p>error level for confidence interval estimation from the t +distribution</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>optional arguments passed to methods like <code>print</code>.</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>an object of class summary.nlme.mmkin</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>Number of digits to use for printing</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The summary function returns a list based on the <a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a> object +obtained in the fit, with at least the following additional components</p> +<dl><dt>nlmeversion, mkinversion, Rversion</dt> +<dd><p>The nlme, mkin and R versions used</p></dd> + +<dt>date.fit, date.summary</dt> +<dd><p>The dates where the fit and the summary were +produced</p></dd> + +<dt>diffs</dt> +<dd><p>The differential equations used in the degradation model</p></dd> + +<dt>use_of_ff</dt> +<dd><p>Was maximum or minimum use made of formation fractions</p></dd> + +<dt>data</dt> +<dd><p>The data</p></dd> + +<dt>confint_trans</dt> +<dd><p>Transformed parameters as used in the optimisation, with confidence intervals</p></dd> + +<dt>confint_back</dt> +<dd><p>Backtransformed parameters, with confidence intervals if available</p></dd> + +<dt>ff</dt> +<dd><p>The estimated formation fractions derived from the fitted +model.</p></dd> + +<dt>distimes</dt> +<dd><p>The DT50 and DT90 values for each observed variable.</p></dd> + +<dt>SFORB</dt> +<dd><p>If applicable, eigenvalues of SFORB components of the model.</p></dd> + +</dl><p>The print method is called for its side effect, i.e. printing the summary.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke for the mkin specific parts +José Pinheiro and Douglas Bates for the components inherited from nlme</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Generate five datasets following SFO kinetics</span></span></span> +<span class="r-in"><span><span class="va">sampling_times</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dt50_sfo_in_pop</span> <span class="op"><-</span> <span class="fl">50</span></span></span> +<span class="r-in"><span><span class="va">k_in_pop</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">2</span><span class="op">)</span> <span class="op">/</span> <span class="va">dt50_sfo_in_pop</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">1234</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">k_in</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/Lognormal.html" class="external-link">rlnorm</a></span><span class="op">(</span><span class="fl">5</span>, <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="va">k_in_pop</span><span class="op">)</span>, <span class="fl">0.5</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">pred_sfo</span> <span class="op"><-</span> <span class="kw">function</span><span class="op">(</span><span class="va">k</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">SFO</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="va">k</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">}</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">ds_sfo_mean</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">k_in</span>, <span class="va">pred_sfo</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">ds_sfo_mean</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"ds"</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">5</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">12345</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">ds_sfo_syn</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">ds_sfo_mean</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">ds</span>,</span></span> +<span class="r-in"><span> sdfunc <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/MathFun.html" class="external-link">sqrt</a></span><span class="op">(</span><span class="fl">1</span><span class="op">^</span><span class="fl">2</span> <span class="op">+</span> <span class="va">value</span><span class="op">^</span><span class="fl">2</span> <span class="op">*</span> <span class="fl">0.07</span><span class="op">^</span><span class="fl">2</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> n <span class="op">=</span> <span class="fl">1</span><span class="op">)</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span></span></span> +<span class="r-in"><span><span class="op">}</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="co"># Evaluate using mmkin and nlme</span></span></span> +<span class="r-in"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://svn.r-project.org/R-packages/trunk/nlme/" class="external-link">nlme</a></span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_mmkin</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="va">ds_sfo_syn</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, cores <span class="op">=</span> <span class="fl">1</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Optimisation did not converge:</span> +<span class="r-wrn co"><span class="r-pr">#></span> iteration limit reached without convergence (10)</span> +<span class="r-in"><span><span class="va">f_nlme</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/nlme/man/nlme.html" class="external-link">nlme</a></span><span class="op">(</span><span class="va">f_mmkin</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">f_nlme</span>, data <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> nlme version used for fitting: 3.1.166 </span> +<span class="r-out co"><span class="r-pr">#></span> mkin version used for pre-fitting: 1.2.10 </span> +<span class="r-out co"><span class="r-pr">#></span> R version used for fitting: 4.4.2 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of fit: Fri Feb 14 07:34:18 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of summary: Fri Feb 14 07:34:18 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - k_parent * parent</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 90 observations of 1 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model predictions using solution type analytical </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted in 0.187 s using 4 iterations</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance model: Two-component variance function </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Mean of starting values for individual parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent </span> +<span class="r-out co"><span class="r-pr">#></span> 101.569 -4.454 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed degradation parameter values:</span> +<span class="r-out co"><span class="r-pr">#></span> None</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Results:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 584.5 599.5 -286.2</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Optimised, transformed parameters with symmetric confidence intervals:</span> +<span class="r-out co"><span class="r-pr">#></span> lower est. upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 99.371 101.592 103.814</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent -4.973 -4.449 -3.926</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Correlation: </span> +<span class="r-out co"><span class="r-pr">#></span> parnt_0</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent 0.0507 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> Formula: list(parent_0 ~ 1, log_k_parent ~ 1)</span> +<span class="r-out co"><span class="r-pr">#></span> Level: ds</span> +<span class="r-out co"><span class="r-pr">#></span> Structure: Diagonal</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent Residual</span> +<span class="r-out co"><span class="r-pr">#></span> StdDev: 6.921e-05 0.5863 1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance function:</span> +<span class="r-out co"><span class="r-pr">#></span> Structure: Constant plus proportion of variance covariate</span> +<span class="r-out co"><span class="r-pr">#></span> Formula: ~fitted(.) </span> +<span class="r-out co"><span class="r-pr">#></span> Parameter estimates:</span> +<span class="r-out co"><span class="r-pr">#></span> const prop </span> +<span class="r-out co"><span class="r-pr">#></span> 0.0001208313 0.0789967985 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Backtransformed parameters with asymmetric confidence intervals:</span> +<span class="r-out co"><span class="r-pr">#></span> lower est. upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 99.370882 101.59243 103.81398</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.006923 0.01168 0.01972</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Estimated disappearance times:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> parent 59.32 197.1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> ds name time observed predicted residual std standardized</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 0 104.1 101.592 2.50757 8.0255 0.312451</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 0 105.0 101.592 3.40757 8.0255 0.424594</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 1 98.5 100.796 -2.29571 7.9625 -0.288313</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 1 96.1 100.796 -4.69571 7.9625 -0.589725</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 3 101.9 99.221 2.67904 7.8381 0.341796</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 3 85.2 99.221 -14.02096 7.8381 -1.788812</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 7 99.1 96.145 2.95512 7.5951 0.389081</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 7 93.0 96.145 -3.14488 7.5951 -0.414065</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 14 88.1 90.989 -2.88944 7.1879 -0.401987</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 14 84.1 90.989 -6.88944 7.1879 -0.958480</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 28 80.2 81.493 -1.29305 6.4377 -0.200857</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 28 91.3 81.493 9.80695 6.4377 1.523364</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 60 65.1 63.344 1.75642 5.0039 0.351008</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 60 65.8 63.344 2.45642 5.0039 0.490898</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 90 47.8 50.018 -2.21764 3.9512 -0.561252</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 90 53.5 50.018 3.48236 3.9512 0.881335</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 120 37.6 39.495 -1.89515 3.1200 -0.607423</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 120 39.3 39.495 -0.19515 3.1200 -0.062549</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 0 107.9 101.592 6.30757 8.0255 0.785943</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 0 102.1 101.592 0.50757 8.0255 0.063245</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 1 103.8 100.058 3.74159 7.9043 0.473361</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 1 108.6 100.058 8.54159 7.9043 1.080626</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 3 91.0 97.060 -6.05952 7.6674 -0.790297</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 3 84.9 97.060 -12.15952 7.6674 -1.585874</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 7 79.3 91.329 -12.02867 7.2147 -1.667251</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 7 100.9 91.329 9.57133 7.2147 1.326647</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 14 77.3 82.102 -4.80185 6.4858 -0.740366</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 14 83.5 82.102 1.39815 6.4858 0.215571</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 28 66.8 66.351 0.44945 5.2415 0.085748</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 28 63.3 66.351 -3.05055 5.2415 -0.582002</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 60 40.8 40.775 0.02474 3.2211 0.007679</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 60 44.8 40.775 4.02474 3.2211 1.249485</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 90 27.8 25.832 1.96762 2.0407 0.964198</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 90 27.0 25.832 1.16762 2.0407 0.572171</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 120 15.2 16.366 -1.16561 1.2928 -0.901595</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 120 15.5 16.366 -0.86561 1.2928 -0.669547</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 0 97.7 101.592 -3.89243 8.0255 -0.485009</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 0 88.2 101.592 -13.39243 8.0255 -1.668740</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 1 109.9 99.218 10.68196 7.8379 1.362858</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 1 97.8 99.218 -1.41804 7.8379 -0.180921</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 3 100.5 94.634 5.86555 7.4758 0.784603</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 3 77.4 94.634 -17.23445 7.4758 -2.305360</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 7 78.3 86.093 -7.79273 6.8011 -1.145813</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 7 90.3 86.093 4.20727 6.8011 0.618620</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 14 76.0 72.958 3.04222 5.7634 0.527848</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 14 79.1 72.958 6.14222 5.7634 1.065722</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 28 46.0 52.394 -6.39404 4.1390 -1.544842</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 28 53.4 52.394 1.00596 4.1390 0.243046</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 60 25.1 24.582 0.51786 1.9419 0.266676</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 60 21.4 24.582 -3.18214 1.9419 -1.638664</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 90 11.0 12.092 -1.09202 0.9552 -1.143199</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 90 14.2 12.092 2.10798 0.9552 2.206777</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 120 5.8 5.948 -0.14810 0.4699 -0.315178</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 120 6.1 5.948 0.15190 0.4699 0.323282</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 0 95.3 101.592 -6.29243 8.0255 -0.784057</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 0 102.0 101.592 0.40757 8.0255 0.050784</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 1 104.4 101.125 3.27549 7.9885 0.410025</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 1 105.4 101.125 4.27549 7.9885 0.535205</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 3 113.7 100.195 13.50487 7.9151 1.706218</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 3 82.3 100.195 -17.89513 7.9151 -2.260886</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 7 98.1 98.362 -0.26190 7.7703 -0.033706</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 7 87.8 98.362 -10.56190 7.7703 -1.359270</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 14 97.9 95.234 2.66590 7.5232 0.354357</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 14 104.8 95.234 9.56590 7.5232 1.271521</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 28 85.0 89.274 -4.27372 7.0523 -0.606001</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 28 77.2 89.274 -12.07372 7.0523 -1.712017</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 60 82.2 77.013 5.18661 6.0838 0.852526</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 60 86.1 77.013 9.08661 6.0838 1.493571</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 90 70.5 67.053 3.44692 5.2970 0.650733</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 90 61.7 67.053 -5.35308 5.2970 -1.010591</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 120 60.0 58.381 1.61905 4.6119 0.351058</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 120 56.4 58.381 -1.98095 4.6119 -0.429530</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 0 92.6 101.592 -8.99243 8.0255 -1.120485</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 0 116.5 101.592 14.90757 8.0255 1.857531</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 1 108.0 99.914 8.08560 7.8929 1.024413</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 1 104.9 99.914 4.98560 7.8929 0.631655</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 3 100.5 96.641 3.85898 7.6343 0.505477</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 3 89.5 96.641 -7.14102 7.6343 -0.935383</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 7 91.7 90.412 1.28752 7.1423 0.180267</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 7 95.1 90.412 4.68752 7.1423 0.656304</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 14 82.2 80.463 1.73715 6.3563 0.273295</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 14 84.5 80.463 4.03715 6.3563 0.635141</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 28 60.5 63.728 -3.22788 5.0343 -0.641178</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 28 72.8 63.728 9.07212 5.0343 1.802062</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 60 38.3 37.399 0.90061 2.9544 0.304835</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 60 40.7 37.399 3.30061 2.9544 1.117174</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 90 22.5 22.692 -0.19165 1.7926 -0.106913</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 90 20.8 22.692 -1.89165 1.7926 -1.055273</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 120 13.4 13.768 -0.36790 1.0876 -0.338259</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 120 13.8 13.768 0.03210 1.0876 0.029517</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/summary.saem.mmkin.html b/docs/dev/reference/summary.saem.mmkin.html new file mode 100644 index 00000000..e6138f37 --- /dev/null +++ b/docs/dev/reference/summary.saem.mmkin.html @@ -0,0 +1,631 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Summary method for class "saem.mmkin" — summary.saem.mmkin • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Summary method for class " saem.mmkin summary.saem.mmkin><meta name="description" content="Lists model equations, initial parameter values, optimised parameters +for fixed effects (population), random effects (deviations from the +population mean) and residual error model, as well as the resulting +endpoints such as formation fractions and DT50 values. Optionally +(default is FALSE), the data are listed in full."><meta property="og:description" content="Lists model equations, initial parameter values, optimised parameters +for fixed effects (population), random effects (deviations from the +population mean) and residual error model, as well as the resulting +endpoints such as formation fractions and DT50 values. Optionally +(default is FALSE), the data are listed in full."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Summary method for class "saem.mmkin"</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/summary.saem.mmkin.R" class="external-link"><code>R/summary.saem.mmkin.R</code></a></small> + <div class="d-none name"><code>summary.saem.mmkin.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>Lists model equations, initial parameter values, optimised parameters +for fixed effects (population), random effects (deviations from the +population mean) and residual error model, as well as the resulting +endpoints such as formation fractions and DT50 values. Optionally +(default is FALSE), the data are listed in full.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'saem.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span></span> +<span> <span class="va">object</span>,</span> +<span> data <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> verbose <span class="op">=</span> <span class="cn">FALSE</span>,</span> +<span> covariates <span class="op">=</span> <span class="cn">NULL</span>,</span> +<span> covariate_quantile <span class="op">=</span> <span class="fl">0.5</span>,</span> +<span> distimes <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> <span class="va">...</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="co"># S3 method for class 'summary.saem.mmkin'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">x</span>, digits <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/Extremes.html" class="external-link">max</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fu"><a href="https://rdrr.io/r/base/options.html" class="external-link">getOption</a></span><span class="op">(</span><span class="st">"digits"</span><span class="op">)</span> <span class="op">-</span> <span class="fl">3</span><span class="op">)</span>, verbose <span class="op">=</span> <span class="va">x</span><span class="op">$</span><span class="va">verbose</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>an object of class <a href="saem.html">saem.mmkin</a></p></dd> + + +<dt id="arg-data">data<a class="anchor" aria-label="anchor" href="#arg-data"></a></dt> +<dd><p>logical, indicating whether the full data should be included in +the summary.</p></dd> + + +<dt id="arg-verbose">verbose<a class="anchor" aria-label="anchor" href="#arg-verbose"></a></dt> +<dd><p>Should the summary be verbose?</p></dd> + + +<dt id="arg-covariates">covariates<a class="anchor" aria-label="anchor" href="#arg-covariates"></a></dt> +<dd><p>Numeric vector with covariate values for all variables in +any covariate models in the object. If given, it overrides 'covariate_quantile'.</p></dd> + + +<dt id="arg-covariate-quantile">covariate_quantile<a class="anchor" aria-label="anchor" href="#arg-covariate-quantile"></a></dt> +<dd><p>This argument only has an effect if the fitted +object has covariate models. If so, the default is to show endpoints +for the median of the covariate values (50th percentile).</p></dd> + + +<dt id="arg-distimes">distimes<a class="anchor" aria-label="anchor" href="#arg-distimes"></a></dt> +<dd><p>logical, indicating whether DT50 and DT90 values should be +included.</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>optional arguments passed to methods like <code>print</code>.</p></dd> + + +<dt id="arg-x">x<a class="anchor" aria-label="anchor" href="#arg-x"></a></dt> +<dd><p>an object of class summary.saem.mmkin</p></dd> + + +<dt id="arg-digits">digits<a class="anchor" aria-label="anchor" href="#arg-digits"></a></dt> +<dd><p>Number of digits to use for printing</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>The summary function returns a list based on the <a href="https://rdrr.io/pkg/saemix/man/SaemixObject-class.html" class="external-link">saemix::SaemixObject</a> +obtained in the fit, with at least the following additional components</p> +<dl><dt>saemixversion, mkinversion, Rversion</dt> +<dd><p>The saemix, mkin and R versions used</p></dd> + +<dt>date.fit, date.summary</dt> +<dd><p>The dates where the fit and the summary were +produced</p></dd> + +<dt>diffs</dt> +<dd><p>The differential equations used in the degradation model</p></dd> + +<dt>use_of_ff</dt> +<dd><p>Was maximum or minimum use made of formation fractions</p></dd> + +<dt>data</dt> +<dd><p>The data</p></dd> + +<dt>confint_trans</dt> +<dd><p>Transformed parameters as used in the optimisation, with confidence intervals</p></dd> + +<dt>confint_back</dt> +<dd><p>Backtransformed parameters, with confidence intervals if available</p></dd> + +<dt>confint_errmod</dt> +<dd><p>Error model parameters with confidence intervals</p></dd> + +<dt>ff</dt> +<dd><p>The estimated formation fractions derived from the fitted +model.</p></dd> + +<dt>distimes</dt> +<dd><p>The DT50 and DT90 values for each observed variable.</p></dd> + +<dt>SFORB</dt> +<dd><p>If applicable, eigenvalues of SFORB components of the model.</p></dd> + +</dl><p>The print method is called for its side effect, i.e. printing the summary.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke for the mkin specific parts +saemix authors for the parts inherited from saemix.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># Generate five datasets following DFOP-SFO kinetics</span></span></span> +<span class="r-in"><span><span class="va">sampling_times</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"DFOP"</span>, <span class="st">"m1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">1234</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">k1_in</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/Lognormal.html" class="external-link">rlnorm</a></span><span class="op">(</span><span class="fl">5</span>, <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">0.1</span><span class="op">)</span>, <span class="fl">0.3</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">k2_in</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/Lognormal.html" class="external-link">rlnorm</a></span><span class="op">(</span><span class="fl">5</span>, <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">0.02</span><span class="op">)</span>, <span class="fl">0.3</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">g_in</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/Logistic.html" class="external-link">plogis</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/stats/Normal.html" class="external-link">rnorm</a></span><span class="op">(</span><span class="fl">5</span>, <span class="fu"><a href="https://rdrr.io/r/stats/Logistic.html" class="external-link">qlogis</a></span><span class="op">(</span><span class="fl">0.5</span><span class="op">)</span>, <span class="fl">0.3</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_parent_to_m1_in</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/Logistic.html" class="external-link">plogis</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/stats/Normal.html" class="external-link">rnorm</a></span><span class="op">(</span><span class="fl">5</span>, <span class="fu"><a href="https://rdrr.io/r/stats/Logistic.html" class="external-link">qlogis</a></span><span class="op">(</span><span class="fl">0.3</span><span class="op">)</span>, <span class="fl">0.3</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">k_m1_in</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/Lognormal.html" class="external-link">rlnorm</a></span><span class="op">(</span><span class="fl">5</span>, <span class="fu"><a href="https://rdrr.io/r/base/Log.html" class="external-link">log</a></span><span class="op">(</span><span class="fl">0.02</span><span class="op">)</span>, <span class="fl">0.3</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">pred_dfop_sfo</span> <span class="op"><-</span> <span class="kw">function</span><span class="op">(</span><span class="va">k1</span>, <span class="va">k2</span>, <span class="va">g</span>, <span class="va">f_parent_to_m1</span>, <span class="va">k_m1</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">dfop_sfo</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k1 <span class="op">=</span> <span class="va">k1</span>, k2 <span class="op">=</span> <span class="va">k2</span>, g <span class="op">=</span> <span class="va">g</span>, f_parent_to_m1 <span class="op">=</span> <span class="va">f_parent_to_m1</span>, k_m1 <span class="op">=</span> <span class="va">k_m1</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, m1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">}</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">ds_mean_dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="fl">1</span><span class="op">:</span><span class="fl">5</span>, <span class="kw">function</span><span class="op">(</span><span class="va">i</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">dfop_sfo</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k1 <span class="op">=</span> <span class="va">k1_in</span><span class="op">[</span><span class="va">i</span><span class="op">]</span>, k2 <span class="op">=</span> <span class="va">k2_in</span><span class="op">[</span><span class="va">i</span><span class="op">]</span>, g <span class="op">=</span> <span class="va">g_in</span><span class="op">[</span><span class="va">i</span><span class="op">]</span>,</span></span> +<span class="r-in"><span> f_parent_to_m1 <span class="op">=</span> <span class="va">f_parent_to_m1_in</span><span class="op">[</span><span class="va">i</span><span class="op">]</span>, k_m1 <span class="op">=</span> <span class="va">k_m1_in</span><span class="op">[</span><span class="va">i</span><span class="op">]</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, m1 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">}</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">ds_mean_dfop_sfo</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="st">"ds"</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">5</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">ds_syn_dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">ds_mean_dfop_sfo</span>, <span class="kw">function</span><span class="op">(</span><span class="va">ds</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">ds</span>,</span></span> +<span class="r-in"><span> sdfunc <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fu"><a href="https://rdrr.io/r/base/MathFun.html" class="external-link">sqrt</a></span><span class="op">(</span><span class="fl">1</span><span class="op">^</span><span class="fl">2</span> <span class="op">+</span> <span class="va">value</span><span class="op">^</span><span class="fl">2</span> <span class="op">*</span> <span class="fl">0.07</span><span class="op">^</span><span class="fl">2</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> n <span class="op">=</span> <span class="fl">1</span><span class="op">)</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span></span></span> +<span class="r-in"><span><span class="op">}</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="co"># Evaluate using mmkin and saem</span></span></span> +<span class="r-in"><span><span class="va">f_mmkin_dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="mmkin.html">mmkin</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span><span class="va">dfop_sfo</span><span class="op">)</span>, <span class="va">ds_syn_dfop_sfo</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span>, error_model <span class="op">=</span> <span class="st">"tc"</span>, cores <span class="op">=</span> <span class="fl">5</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">f_saem_dfop_sfo</span> <span class="op"><-</span> <span class="fu"><a href="saem.html">saem</a></span><span class="op">(</span><span class="va">f_mmkin_dfop_sfo</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Kinetic nonlinear mixed-effects model fit by SAEM</span> +<span class="r-out co"><span class="r-pr">#></span> Structural model:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span> +<span class="r-out co"><span class="r-pr">#></span> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span> +<span class="r-out co"><span class="r-pr">#></span> * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_m1/dt = + f_parent_to_m1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g)</span> +<span class="r-out co"><span class="r-pr">#></span> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) *</span> +<span class="r-out co"><span class="r-pr">#></span> exp(-k2 * time))) * parent - k_m1 * m1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 171 observations of 2 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood computed by importance sampling</span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 810.8 805.4 -391.4</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> estimate lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 100.966822 97.90584 104.02780</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 -4.076164 -4.17485 -3.97748</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -0.940902 -1.35358 -0.52823</span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 -2.363988 -2.71690 -2.01107</span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 -4.060016 -4.21743 -3.90260</span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis -0.029999 -0.44766 0.38766</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 0.876272 0.67790 1.07464</span> +<span class="r-out co"><span class="r-pr">#></span> b.1 0.079594 0.06521 0.09398</span> +<span class="r-out co"><span class="r-pr">#></span> SD.parent_0 0.076322 -76.45825 76.61089</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k_m1 0.005052 -1.08943 1.09953</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_parent_qlogis 0.446968 0.16577 0.72816</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k1 0.348786 0.09502 0.60255</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k2 0.147456 0.03111 0.26380</span> +<span class="r-out co"><span class="r-pr">#></span> SD.g_qlogis 0.348244 0.02794 0.66854</span> +<span class="r-in"><span><span class="fu"><a href="illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> [1] "sd(parent_0)" "sd(log_k_m1)"</span> +<span class="r-in"><span><span class="va">f_saem_dfop_sfo_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo</span>,</span></span> +<span class="r-in"><span> no_random_effect <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"parent_0"</span>, <span class="st">"log_k_m1"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="illparms.html">illparms</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo_2</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/nlme/man/intervals.html" class="external-link">intervals</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo_2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Approximate 95% confidence intervals</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed effects:</span> +<span class="r-out co"><span class="r-pr">#></span> lower est. upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 98.04247057 101.09950884 104.15654711</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.01528983 0.01687734 0.01862969</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.20447650 0.27932896 0.36887691</span> +<span class="r-out co"><span class="r-pr">#></span> k1 0.06779844 0.09638524 0.13702550</span> +<span class="r-out co"><span class="r-pr">#></span> k2 0.01495629 0.01741775 0.02028431</span> +<span class="r-out co"><span class="r-pr">#></span> g 0.37669311 0.48368409 0.59219202</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> lower est. upper</span> +<span class="r-out co"><span class="r-pr">#></span> sd(f_parent_qlogis) 0.16515113 0.4448330 0.7245148</span> +<span class="r-out co"><span class="r-pr">#></span> sd(log_k1) 0.08982399 0.3447403 0.5996565</span> +<span class="r-out co"><span class="r-pr">#></span> sd(log_k2) 0.02806780 0.1419560 0.2558443</span> +<span class="r-out co"><span class="r-pr">#></span> sd(g_qlogis) 0.04908644 0.3801993 0.7113121</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> lower est. upper</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 0.67993373 0.87630147 1.07266921</span> +<span class="r-out co"><span class="r-pr">#></span> b.1 0.06522297 0.07920531 0.09318766</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo_2</span>, data <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> saemix version used for fitting: 3.3 </span> +<span class="r-out co"><span class="r-pr">#></span> mkin version used for pre-fitting: 1.2.10 </span> +<span class="r-out co"><span class="r-pr">#></span> R version used for fitting: 4.4.2 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of fit: Fri Feb 14 07:34:33 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of summary: Fri Feb 14 07:34:33 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 *</span> +<span class="r-out co"><span class="r-pr">#></span> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time)))</span> +<span class="r-out co"><span class="r-pr">#></span> * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_m1/dt = + f_parent_to_m1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g)</span> +<span class="r-out co"><span class="r-pr">#></span> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) *</span> +<span class="r-out co"><span class="r-pr">#></span> exp(-k2 * time))) * parent - k_m1 * m1</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> 171 observations of 2 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model predictions using solution type analytical </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted in 8.903 s</span> +<span class="r-out co"><span class="r-pr">#></span> Using 300, 100 iterations and 10 chains</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance model: Two-component variance function </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for degradation parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_m1 f_parent_qlogis log_k1 log_k2 </span> +<span class="r-out co"><span class="r-pr">#></span> 101.65645 -4.05368 -0.94311 -2.35943 -4.07006 </span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis </span> +<span class="r-out co"><span class="r-pr">#></span> -0.01133 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed degradation parameter values:</span> +<span class="r-out co"><span class="r-pr">#></span> None</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for random effects (square root of initial entries in omega):</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_m1 f_parent_qlogis log_k1 log_k2 g_qlogis</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 6.742 0.0000 0.0000 0.0000 0.0000 0.000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 0.000 0.2236 0.0000 0.0000 0.0000 0.000</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis 0.000 0.0000 0.5572 0.0000 0.0000 0.000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 0.000 0.0000 0.0000 0.8031 0.0000 0.000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 0.000 0.0000 0.0000 0.0000 0.2931 0.000</span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis 0.000 0.0000 0.0000 0.0000 0.0000 0.807</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for error model parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 b.1 </span> +<span class="r-out co"><span class="r-pr">#></span> 1 1 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Results:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Likelihood computed by importance sampling</span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 806.9 802.2 -391.5</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Optimised parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 101.09951 98.04247 104.15655</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 -4.08178 -4.18057 -3.98300</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -0.94779 -1.35855 -0.53704</span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 -2.33940 -2.69122 -1.98759</span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 -4.05027 -4.20262 -3.89791</span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis -0.06529 -0.50361 0.37303</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 0.87630 0.67993 1.07267</span> +<span class="r-out co"><span class="r-pr">#></span> b.1 0.07921 0.06522 0.09319</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_parent_qlogis 0.44483 0.16515 0.72451</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k1 0.34474 0.08982 0.59966</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k2 0.14196 0.02807 0.25584</span> +<span class="r-out co"><span class="r-pr">#></span> SD.g_qlogis 0.38020 0.04909 0.71131</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Correlation: </span> +<span class="r-out co"><span class="r-pr">#></span> parnt_0 lg_k_m1 f_prnt_ log_k1 log_k2 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 -0.4716 </span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -0.2394 0.2617 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k1 0.1677 -0.1566 -0.0659 </span> +<span class="r-out co"><span class="r-pr">#></span> log_k2 0.0165 0.0638 0.0045 0.2013 </span> +<span class="r-out co"><span class="r-pr">#></span> g_qlogis 0.1118 -0.1118 -0.0340 -0.2324 -0.3419</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> SD.f_parent_qlogis 0.4448 0.16515 0.7245</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k1 0.3447 0.08982 0.5997</span> +<span class="r-out co"><span class="r-pr">#></span> SD.log_k2 0.1420 0.02807 0.2558</span> +<span class="r-out co"><span class="r-pr">#></span> SD.g_qlogis 0.3802 0.04909 0.7113</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Variance model:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 0.87630 0.67993 1.07267</span> +<span class="r-out co"><span class="r-pr">#></span> b.1 0.07921 0.06522 0.09319</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Backtransformed parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> est. lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 101.09951 98.04247 104.15655</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.01688 0.01529 0.01863</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.27933 0.20448 0.36888</span> +<span class="r-out co"><span class="r-pr">#></span> k1 0.09639 0.06780 0.13703</span> +<span class="r-out co"><span class="r-pr">#></span> k2 0.01742 0.01496 0.02028</span> +<span class="r-out co"><span class="r-pr">#></span> g 0.48368 0.37669 0.59219</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Resulting formation fractions:</span> +<span class="r-out co"><span class="r-pr">#></span> ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_m1 0.2793</span> +<span class="r-out co"><span class="r-pr">#></span> parent_sink 0.7207</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Estimated disappearance times:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90 DT50back DT50_k1 DT50_k2</span> +<span class="r-out co"><span class="r-pr">#></span> parent 15.66 94.28 28.38 7.191 39.8</span> +<span class="r-out co"><span class="r-pr">#></span> m1 41.07 136.43 NA NA NA</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> ds name time observed predicted residual std standardized</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 0 89.8 1.011e+02 -11.29951 8.0554 -1.402721</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 0 104.1 1.011e+02 3.00049 8.0554 0.372481</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 1 88.7 9.624e+01 -7.53600 7.6726 -0.982195</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 1 95.5 9.624e+01 -0.73600 7.6726 -0.095925</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 3 81.8 8.736e+01 -5.55672 6.9744 -0.796732</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 3 94.5 8.736e+01 7.14328 6.9744 1.024217</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 7 71.5 7.251e+01 -1.00511 5.8093 -0.173019</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 7 70.3 7.251e+01 -2.20511 5.8093 -0.379585</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 14 54.2 5.356e+01 0.63921 4.3319 0.147560</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 14 49.6 5.356e+01 -3.96079 4.3319 -0.914340</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 28 31.5 3.175e+01 -0.25429 2.6634 -0.095475</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 28 28.8 3.175e+01 -2.95429 2.6634 -1.109218</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 60 12.1 1.281e+01 -0.71388 1.3409 -0.532390</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 60 13.6 1.281e+01 0.78612 1.3409 0.586271</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 90 6.2 6.405e+00 -0.20462 1.0125 -0.202083</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 90 8.3 6.405e+00 1.89538 1.0125 1.871910</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 120 2.2 3.329e+00 -1.12941 0.9151 -1.234165</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 parent 120 2.4 3.329e+00 -0.92941 0.9151 -1.015615</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 1 0.3 1.177e+00 -0.87699 0.8812 -0.995168</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 1 0.2 1.177e+00 -0.97699 0.8812 -1.108644</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 3 2.2 3.268e+00 -1.06821 0.9137 -1.169063</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 3 3.0 3.268e+00 -0.26821 0.9137 -0.293536</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 7 6.5 6.555e+00 -0.05539 1.0186 -0.054377</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 7 5.0 6.555e+00 -1.55539 1.0186 -1.527022</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 14 10.2 1.017e+01 0.03108 1.1902 0.026117</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 14 9.5 1.017e+01 -0.66892 1.1902 -0.562010</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 28 12.2 1.270e+01 -0.50262 1.3342 -0.376708</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 28 13.4 1.270e+01 0.69738 1.3342 0.522686</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 60 11.8 1.078e+01 1.01734 1.2236 0.831403</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 60 13.2 1.078e+01 2.41734 1.2236 1.975530</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 90 6.6 7.686e+00 -1.08586 1.0670 -1.017675</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 90 9.3 7.686e+00 1.61414 1.0670 1.512779</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 120 3.5 5.205e+00 -1.70467 0.9684 -1.760250</span> +<span class="r-out co"><span class="r-pr">#></span> ds 1 m1 120 5.4 5.205e+00 0.19533 0.9684 0.201701</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 0 118.0 1.011e+02 16.90049 8.0554 2.098026</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 0 99.8 1.011e+02 -1.29951 8.0554 -0.161321</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 1 90.2 9.574e+01 -5.53784 7.6334 -0.725473</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 1 94.6 9.574e+01 -1.13784 7.6334 -0.149060</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 3 96.1 8.638e+01 9.72233 6.8975 1.409551</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 3 78.4 8.638e+01 -7.97767 6.8975 -1.156610</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 7 77.9 7.194e+01 5.95854 5.7651 1.033547</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 7 77.7 7.194e+01 5.75854 5.7651 0.998856</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 14 56.0 5.558e+01 0.42141 4.4885 0.093888</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 14 54.7 5.558e+01 -0.87859 4.4885 -0.195742</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 28 36.6 3.852e+01 -1.92382 3.1746 -0.605999</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 28 36.8 3.852e+01 -1.72382 3.1746 -0.543000</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 60 22.1 2.108e+01 1.02043 1.8856 0.541168</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 60 24.7 2.108e+01 3.62043 1.8856 1.920034</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 90 12.4 1.250e+01 -0.09675 1.3220 -0.073184</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 90 10.8 1.250e+01 -1.69675 1.3220 -1.283492</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 120 6.8 7.426e+00 -0.62587 1.0554 -0.593027</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 parent 120 7.9 7.426e+00 0.47413 1.0554 0.449242</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 1 1.3 1.417e+00 -0.11735 0.8835 -0.132825</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 3 3.7 3.823e+00 -0.12301 0.9271 -0.132673</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 3 4.7 3.823e+00 0.87699 0.9271 0.945909</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 7 8.1 7.288e+00 0.81180 1.0494 0.773619</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 7 7.9 7.288e+00 0.61180 1.0494 0.583025</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 14 10.1 1.057e+01 -0.46957 1.2119 -0.387459</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 14 10.3 1.057e+01 -0.26957 1.2119 -0.222432</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 28 10.7 1.234e+01 -1.63555 1.3124 -1.246185</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 28 12.2 1.234e+01 -0.13555 1.3124 -0.103281</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 60 10.7 1.065e+01 0.04641 1.2165 0.038151</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 60 12.5 1.065e+01 1.84641 1.2165 1.517773</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 90 9.1 8.177e+00 0.92337 1.0896 0.847403</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 90 7.4 8.177e+00 -0.77663 1.0896 -0.712734</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 120 6.1 5.966e+00 0.13404 0.9956 0.134631</span> +<span class="r-out co"><span class="r-pr">#></span> ds 2 m1 120 4.5 5.966e+00 -1.46596 0.9956 -1.472460</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 0 106.2 1.011e+02 5.10049 8.0554 0.633175</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 0 106.9 1.011e+02 5.80049 8.0554 0.720073</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 1 107.4 9.365e+01 13.74627 7.4695 1.840332</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 1 96.1 9.365e+01 2.44627 7.4695 0.327504</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 3 79.4 8.139e+01 -1.99118 6.5059 -0.306058</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 3 82.6 8.139e+01 1.20882 6.5059 0.185803</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 7 63.9 6.445e+01 -0.54666 5.1792 -0.105549</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 7 62.4 6.445e+01 -2.04666 5.1792 -0.395170</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 14 51.0 4.830e+01 2.69944 3.9247 0.687800</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 14 47.1 4.830e+01 -1.20056 3.9247 -0.305896</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 28 36.1 3.426e+01 1.83885 2.8516 0.644839</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 28 36.6 3.426e+01 2.33885 2.8516 0.820177</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 60 20.1 1.968e+01 0.42208 1.7881 0.236053</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 60 19.8 1.968e+01 0.12208 1.7881 0.068273</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 90 11.3 1.194e+01 -0.64013 1.2893 -0.496496</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 90 10.7 1.194e+01 -1.24013 1.2893 -0.961865</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 120 8.2 7.247e+00 0.95264 1.0476 0.909381</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 parent 120 7.3 7.247e+00 0.05264 1.0476 0.050254</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 0 0.8 -2.956e-12 0.80000 0.8763 0.912928</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 1 1.8 1.757e+00 0.04318 0.8873 0.048666</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 1 2.3 1.757e+00 0.54318 0.8873 0.612186</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 3 4.2 4.566e+00 -0.36607 0.9480 -0.386149</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 3 4.1 4.566e+00 -0.46607 0.9480 -0.491634</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 7 6.8 8.157e+00 -1.35680 1.0887 -1.246241</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 7 10.1 8.157e+00 1.94320 1.0887 1.784855</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 14 11.4 1.085e+01 0.55367 1.2272 0.451182</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 14 12.8 1.085e+01 1.95367 1.2272 1.592023</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 28 11.5 1.149e+01 0.01098 1.2633 0.008689</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 28 10.6 1.149e+01 -0.88902 1.2633 -0.703717</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 60 7.5 9.295e+00 -1.79500 1.1445 -1.568351</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 60 8.6 9.295e+00 -0.69500 1.1445 -0.607245</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 90 7.3 7.017e+00 0.28305 1.0377 0.272775</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 90 8.1 7.017e+00 1.08305 1.0377 1.043720</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 120 5.3 5.087e+00 0.21272 0.9645 0.220547</span> +<span class="r-out co"><span class="r-pr">#></span> ds 3 m1 120 3.8 5.087e+00 -1.28728 0.9645 -1.334660</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 0 104.7 1.011e+02 3.60049 8.0554 0.446965</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 0 88.3 1.011e+02 -12.79951 8.0554 -1.588930</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 1 94.2 9.755e+01 -3.35176 7.7762 -0.431030</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 1 94.6 9.755e+01 -2.95176 7.7762 -0.379591</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 3 78.1 9.095e+01 -12.85198 7.2570 -1.770981</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 3 96.5 9.095e+01 5.54802 7.2570 0.764508</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 7 76.2 7.949e+01 -3.29267 6.3569 -0.517966</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 7 77.8 7.949e+01 -1.69267 6.3569 -0.266272</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 14 70.8 6.384e+01 6.95621 5.1321 1.355423</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 14 67.3 6.384e+01 3.45621 5.1321 0.673445</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 28 43.1 4.345e+01 -0.35291 3.5515 -0.099370</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 28 45.1 4.345e+01 1.64709 3.5515 0.463771</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 60 21.3 2.137e+01 -0.07478 1.9063 -0.039229</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 60 23.5 2.137e+01 2.12522 1.9063 1.114813</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 90 11.8 1.205e+01 -0.24925 1.2957 -0.192375</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 90 12.1 1.205e+01 0.05075 1.2957 0.039168</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 120 7.0 6.967e+00 0.03315 1.0356 0.032013</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 parent 120 6.2 6.967e+00 -0.76685 1.0356 -0.740510</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 0 1.6 1.421e-13 1.60000 0.8763 1.825856</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 1 0.9 7.250e-01 0.17503 0.8782 0.199310</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 3 3.7 2.038e+00 1.66201 0.8910 1.865236</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 3 2.0 2.038e+00 -0.03799 0.8910 -0.042637</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 7 3.6 4.186e+00 -0.58623 0.9369 -0.625692</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 7 3.8 4.186e+00 -0.38623 0.9369 -0.412230</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 14 7.1 6.752e+00 0.34768 1.0266 0.338666</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 14 6.6 6.752e+00 -0.15232 1.0266 -0.148372</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 28 9.5 9.034e+00 0.46628 1.1313 0.412159</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 28 9.3 9.034e+00 0.26628 1.1313 0.235373</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 60 8.3 8.634e+00 -0.33359 1.1115 -0.300112</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 60 9.0 8.634e+00 0.36641 1.1115 0.329645</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 90 6.6 6.671e+00 -0.07091 1.0233 -0.069295</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 90 7.7 6.671e+00 1.02909 1.0233 1.005691</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 120 3.7 4.823e+00 -1.12301 0.9559 -1.174763</span> +<span class="r-out co"><span class="r-pr">#></span> ds 4 m1 120 3.5 4.823e+00 -1.32301 0.9559 -1.383979</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 0 110.4 1.011e+02 9.30049 8.0554 1.154563</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 0 112.1 1.011e+02 11.00049 8.0554 1.365601</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 1 93.5 9.440e+01 -0.90098 7.5282 -0.119681</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 1 91.0 9.440e+01 -3.40098 7.5282 -0.451764</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 3 71.0 8.287e+01 -11.86698 6.6217 -1.792122</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 3 89.7 8.287e+01 6.83302 6.6217 1.031907</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 7 60.4 6.562e+01 -5.22329 5.2711 -0.990936</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 7 59.1 6.562e+01 -6.52329 5.2711 -1.237566</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 14 56.5 4.739e+01 9.10588 3.8548 2.362225</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 14 47.0 4.739e+01 -0.39412 3.8548 -0.102240</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 28 30.2 3.118e+01 -0.98128 2.6206 -0.374451</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 28 23.9 3.118e+01 -7.28128 2.6206 -2.778500</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 60 17.0 1.804e+01 -1.03959 1.6761 -0.620224</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 60 18.7 1.804e+01 0.66041 1.6761 0.394008</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 90 11.3 1.165e+01 -0.35248 1.2727 -0.276958</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 90 11.9 1.165e+01 0.24752 1.2727 0.194488</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 120 9.0 7.556e+00 1.44368 1.0612 1.360449</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 parent 120 8.1 7.556e+00 0.54368 1.0612 0.512338</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 0 0.7 -1.421e-14 0.70000 0.8763 0.798812</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 1 3.0 3.160e+00 -0.15979 0.9113 -0.175340</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 1 2.6 3.160e+00 -0.55979 0.9113 -0.614254</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 3 5.1 8.448e+00 -3.34789 1.1026 -3.036487</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 3 7.5 8.448e+00 -0.94789 1.1026 -0.859720</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 7 16.5 1.581e+01 0.68760 1.5286 0.449839</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 7 19.0 1.581e+01 3.18760 1.5286 2.085373</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 14 22.9 2.218e+01 0.71983 1.9632 0.366658</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 14 23.2 2.218e+01 1.01983 1.9632 0.519469</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 28 22.2 2.425e+01 -2.05105 2.1113 -0.971479</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 28 24.4 2.425e+01 0.14895 2.1113 0.070552</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 60 15.5 1.876e+01 -3.25968 1.7250 -1.889646</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 60 19.8 1.876e+01 1.04032 1.7250 0.603074</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 90 14.9 1.365e+01 1.25477 1.3914 0.901806</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 90 14.2 1.365e+01 0.55477 1.3914 0.398714</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 120 10.9 9.726e+00 1.17443 1.1667 1.006587</span> +<span class="r-out co"><span class="r-pr">#></span> ds 5 m1 120 10.4 9.726e+00 0.67443 1.1667 0.578044</span> +<span class="r-in"><span><span class="co"># Add a correlation between random effects of g and k2</span></span></span> +<span class="r-in"><span><span class="va">cov_model_3</span> <span class="op"><-</span> <span class="va">f_saem_dfop_sfo_2</span><span class="op">$</span><span class="va">so</span><span class="op">@</span><span class="va">model</span><span class="op">@</span><span class="va">covariance.model</span></span></span> +<span class="r-in"><span><span class="va">cov_model_3</span><span class="op">[</span><span class="st">"log_k2"</span>, <span class="st">"g_qlogis"</span><span class="op">]</span> <span class="op"><-</span> <span class="fl">1</span></span></span> +<span class="r-in"><span><span class="va">cov_model_3</span><span class="op">[</span><span class="st">"g_qlogis"</span>, <span class="st">"log_k2"</span><span class="op">]</span> <span class="op"><-</span> <span class="fl">1</span></span></span> +<span class="r-in"><span><span class="va">f_saem_dfop_sfo_3</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo</span>,</span></span> +<span class="r-in"><span> covariance.model <span class="op">=</span> <span class="va">cov_model_3</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/pkg/nlme/man/intervals.html" class="external-link">intervals</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo_3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Approximate 95% confidence intervals</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed effects:</span> +<span class="r-out co"><span class="r-pr">#></span> lower est. upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 98.42519529 101.51623115 104.60726702</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.01505059 0.01662123 0.01835577</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.20100222 0.27477835 0.36332008</span> +<span class="r-out co"><span class="r-pr">#></span> k1 0.07347479 0.10139028 0.13991179</span> +<span class="r-out co"><span class="r-pr">#></span> k2 0.01469861 0.01771120 0.02134125</span> +<span class="r-out co"><span class="r-pr">#></span> g 0.35506898 0.46263682 0.57379888</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Random effects:</span> +<span class="r-out co"><span class="r-pr">#></span> lower est. upper</span> +<span class="r-out co"><span class="r-pr">#></span> sd(f_parent_qlogis) 0.16472883 0.4435866 0.7224443</span> +<span class="r-out co"><span class="r-pr">#></span> sd(log_k1) 0.05323856 0.2981783 0.5431180</span> +<span class="r-out co"><span class="r-pr">#></span> sd(log_k2) 0.05013379 0.1912531 0.3323723</span> +<span class="r-out co"><span class="r-pr">#></span> sd(g_qlogis) 0.04710647 0.3997298 0.7523531</span> +<span class="r-out co"><span class="r-pr">#></span> corr(log_k2,g_qlogis) -1.31087397 -0.5845703 0.1417334</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> lower est. upper</span> +<span class="r-out co"><span class="r-pr">#></span> a.1 0.67769608 0.87421677 1.07073746</span> +<span class="r-out co"><span class="r-pr">#></span> b.1 0.06525119 0.07925135 0.09325151</span> +<span class="r-in"><span><span class="co"># The correlation does not improve the fit judged by AIC and BIC, although</span></span></span> +<span class="r-in"><span><span class="co"># the likelihood is higher with the additional parameter</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/stats/anova.html" class="external-link">anova</a></span><span class="op">(</span><span class="va">f_saem_dfop_sfo</span>, <span class="va">f_saem_dfop_sfo_2</span>, <span class="va">f_saem_dfop_sfo_3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Data: 171 observations of 2 variable(s) grouped in 5 datasets</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> npar AIC BIC Lik</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_dfop_sfo_2 12 806.91 802.23 -391.46</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_dfop_sfo_3 13 807.96 802.88 -390.98</span> +<span class="r-out co"><span class="r-pr">#></span> f_saem_dfop_sfo 14 810.83 805.36 -391.41</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/summary_listing.html b/docs/dev/reference/summary_listing.html new file mode 100644 index 00000000..6e1bad37 --- /dev/null +++ b/docs/dev/reference/summary_listing.html @@ -0,0 +1,119 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Display the output of a summary function according to the output format — summary_listing • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Display the output of a summary function according to the output format — summary_listing"><meta name="description" content='This function is intended for use in a R markdown code chunk with the chunk +option results = "asis".'><meta property="og:description" content='This function is intended for use in a R markdown code chunk with the chunk +option results = "asis".'><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Display the output of a summary function according to the output format</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/summary_listing.R" class="external-link"><code>R/summary_listing.R</code></a></small> + <div class="d-none name"><code>summary_listing.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function is intended for use in a R markdown code chunk with the chunk +option <code>results = "asis"</code>.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">summary_listing</span><span class="op">(</span><span class="va">object</span>, caption <span class="op">=</span> <span class="cn">NULL</span>, label <span class="op">=</span> <span class="cn">NULL</span>, clearpage <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">tex_listing</span><span class="op">(</span><span class="va">object</span>, caption <span class="op">=</span> <span class="cn">NULL</span>, label <span class="op">=</span> <span class="cn">NULL</span>, clearpage <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span> +<span></span> +<span><span class="fu">html_listing</span><span class="op">(</span><span class="va">object</span>, caption <span class="op">=</span> <span class="cn">NULL</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>The object for which the summary is to be listed</p></dd> + + +<dt id="arg-caption">caption<a class="anchor" aria-label="anchor" href="#arg-caption"></a></dt> +<dd><p>An optional caption</p></dd> + + +<dt id="arg-label">label<a class="anchor" aria-label="anchor" href="#arg-label"></a></dt> +<dd><p>An optional label, ignored in html output</p></dd> + + +<dt id="arg-clearpage">clearpage<a class="anchor" aria-label="anchor" href="#arg-clearpage"></a></dt> +<dd><p>Should a new page be started after the listing? Ignored in html output</p></dd> + +</dl></div> + + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/synthetic_data_for_UBA_2014-1.png b/docs/dev/reference/synthetic_data_for_UBA_2014-1.png Binary files differnew file mode 100644 index 00000000..c08d231d --- /dev/null +++ b/docs/dev/reference/synthetic_data_for_UBA_2014-1.png diff --git a/docs/dev/reference/synthetic_data_for_UBA_2014.html b/docs/dev/reference/synthetic_data_for_UBA_2014.html new file mode 100644 index 00000000..9080c32b --- /dev/null +++ b/docs/dev/reference/synthetic_data_for_UBA_2014.html @@ -0,0 +1,413 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Synthetic datasets for one parent compound with two metabolites — synthetic_data_for_UBA_2014 • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Synthetic datasets for one parent compound with two metabolites — synthetic_data_for_UBA_2014"><meta name="description" content="The 12 datasets were generated using four different models and three different + variance components. The four models are either the SFO or the DFOP model with either + two sequential or two parallel metabolites. +Variance component 'a' is based on a normal distribution with standard deviation of 3, + Variance component 'b' is also based on a normal distribution, but with a standard deviation of 7. + Variance component 'c' is based on the error model from Rocke and Lorenzato (1995), with the + minimum standard deviation (for small y values) of 0.5, and a proportionality constant of 0.07 + for the increase of the standard deviation with y. Note that this is a simplified version + of the error model proposed by Rocke and Lorenzato (1995), as in their model the error of the + measured values approximates lognormal distribution for high values, whereas we are using + normally distributed error components all along. +Initial concentrations for metabolites and all values where adding the variance component resulted + in a value below the assumed limit of detection of 0.1 were set to NA. +As an example, the first dataset has the title SFO_lin_a and is based on the SFO model + with two sequential metabolites (linear pathway), with added variance component 'a'. +Compare also the code in the example section to see the degradation models."><meta property="og:description" content="The 12 datasets were generated using four different models and three different + variance components. The four models are either the SFO or the DFOP model with either + two sequential or two parallel metabolites. +Variance component 'a' is based on a normal distribution with standard deviation of 3, + Variance component 'b' is also based on a normal distribution, but with a standard deviation of 7. + Variance component 'c' is based on the error model from Rocke and Lorenzato (1995), with the + minimum standard deviation (for small y values) of 0.5, and a proportionality constant of 0.07 + for the increase of the standard deviation with y. Note that this is a simplified version + of the error model proposed by Rocke and Lorenzato (1995), as in their model the error of the + measured values approximates lognormal distribution for high values, whereas we are using + normally distributed error components all along. +Initial concentrations for metabolites and all values where adding the variance component resulted + in a value below the assumed limit of detection of 0.1 were set to NA. +As an example, the first dataset has the title SFO_lin_a and is based on the SFO model + with two sequential metabolites (linear pathway), with added variance component 'a'. +Compare also the code in the example section to see the degradation models."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Synthetic datasets for one parent compound with two metabolites</h1> + + <div class="d-none name"><code>synthetic_data_for_UBA_2014.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The 12 datasets were generated using four different models and three different + variance components. The four models are either the SFO or the DFOP model with either + two sequential or two parallel metabolites.</p> +<p>Variance component 'a' is based on a normal distribution with standard deviation of 3, + Variance component 'b' is also based on a normal distribution, but with a standard deviation of 7. + Variance component 'c' is based on the error model from Rocke and Lorenzato (1995), with the + minimum standard deviation (for small y values) of 0.5, and a proportionality constant of 0.07 + for the increase of the standard deviation with y. Note that this is a simplified version + of the error model proposed by Rocke and Lorenzato (1995), as in their model the error of the + measured values approximates lognormal distribution for high values, whereas we are using + normally distributed error components all along.</p> +<p>Initial concentrations for metabolites and all values where adding the variance component resulted + in a value below the assumed limit of detection of 0.1 were set to <code>NA</code>.</p> +<p>As an example, the first dataset has the title <code>SFO_lin_a</code> and is based on the SFO model + with two sequential metabolites (linear pathway), with added variance component 'a'.</p> +<p>Compare also the code in the example section to see the degradation models.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">synthetic_data_for_UBA_2014</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A list containing twelve datasets as an R6 class defined by <code><a href="mkinds.html">mkinds</a></code>, + each containing, among others, the following components</p><dl><dt><code>title</code></dt> +<dd><p>The name of the dataset, e.g. <code>SFO_lin_a</code></p></dd> + + <dt><code>data</code></dt> +<dd><p>A data frame with the data in the form expected by <code><a href="mkinfit.html">mkinfit</a></code></p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>Ranke (2014) Prüfung und Validierung von Modellierungssoftware als Alternative + zu ModelMaker 4.0, Umweltbundesamt Projektnummer 27452</p> +<p>Rocke, David M. und Lorenzato, Stefan (1995) A two-component model for + measurement error in analytical chemistry. Technometrics 37(2), 176-184.</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="co"># The data have been generated using the following kinetic models</span></span></span> +<span class="r-in"><span><span class="va">m_synth_SFO_lin</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"M1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"M2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">m_synth_SFO_par</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">m_synth_DFOP_lin</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"DFOP"</span>, to <span class="op">=</span> <span class="st">"M1"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"M2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">m_synth_DFOP_par</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"DFOP"</span>, to <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The model predictions without intentional error were generated as follows</span></span></span> +<span class="r-in"><span><span class="va">sampling_times</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span>, <span class="fl">3</span>, <span class="fl">7</span>, <span class="fl">14</span>, <span class="fl">28</span>, <span class="fl">60</span>, <span class="fl">90</span>, <span class="fl">120</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">d_synth_SFO_lin</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_synth_SFO_lin</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.7</span>, f_parent_to_M1 <span class="op">=</span> <span class="fl">0.8</span>,</span></span> +<span class="r-in"><span> k_M1 <span class="op">=</span> <span class="fl">0.3</span>, f_M1_to_M2 <span class="op">=</span> <span class="fl">0.7</span>,</span></span> +<span class="r-in"><span> k_M2 <span class="op">=</span> <span class="fl">0.02</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, M1 <span class="op">=</span> <span class="fl">0</span>, M2 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">d_synth_DFOP_lin</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_synth_DFOP_lin</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k1 <span class="op">=</span> <span class="fl">0.2</span>, k2 <span class="op">=</span> <span class="fl">0.02</span>, g <span class="op">=</span> <span class="fl">0.5</span>,</span></span> +<span class="r-in"><span> f_parent_to_M1 <span class="op">=</span> <span class="fl">0.5</span>, k_M1 <span class="op">=</span> <span class="fl">0.3</span>,</span></span> +<span class="r-in"><span> f_M1_to_M2 <span class="op">=</span> <span class="fl">0.7</span>, k_M2 <span class="op">=</span> <span class="fl">0.02</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, M1 <span class="op">=</span> <span class="fl">0</span>, M2 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">d_synth_SFO_par</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_synth_SFO_par</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k_parent <span class="op">=</span> <span class="fl">0.2</span>,</span></span> +<span class="r-in"><span> f_parent_to_M1 <span class="op">=</span> <span class="fl">0.8</span>, k_M1 <span class="op">=</span> <span class="fl">0.01</span>,</span></span> +<span class="r-in"><span> f_parent_to_M2 <span class="op">=</span> <span class="fl">0.2</span>, k_M2 <span class="op">=</span> <span class="fl">0.02</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, M1 <span class="op">=</span> <span class="fl">0</span>, M2 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">d_synth_DFOP_par</span> <span class="op"><-</span> <span class="fu"><a href="mkinpredict.html">mkinpredict</a></span><span class="op">(</span><span class="va">m_synth_DFOP_par</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>k1 <span class="op">=</span> <span class="fl">0.3</span>, k2 <span class="op">=</span> <span class="fl">0.02</span>, g <span class="op">=</span> <span class="fl">0.7</span>,</span></span> +<span class="r-in"><span> f_parent_to_M1 <span class="op">=</span> <span class="fl">0.6</span>, k_M1 <span class="op">=</span> <span class="fl">0.04</span>,</span></span> +<span class="r-in"><span> f_parent_to_M2 <span class="op">=</span> <span class="fl">0.4</span>, k_M2 <span class="op">=</span> <span class="fl">0.01</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fl">100</span>, M1 <span class="op">=</span> <span class="fl">0</span>, M2 <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> <span class="va">sampling_times</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Construct names for datasets with errors</span></span></span> +<span class="r-in"><span><span class="va">d_synth_names</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste0</a></span><span class="op">(</span><span class="st">"d_synth_"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"SFO_lin"</span>, <span class="st">"SFO_par"</span>,</span></span> +<span class="r-in"><span> <span class="st">"DFOP_lin"</span>, <span class="st">"DFOP_par"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Original function used or adding errors. The add_err function now published</span></span></span> +<span class="r-in"><span><span class="co"># with this package is a slightly generalised version where the names of</span></span></span> +<span class="r-in"><span><span class="co"># secondary compartments that should have an initial value of zero (M1 and M2</span></span></span> +<span class="r-in"><span><span class="co"># in this case) are not hardcoded any more.</span></span></span> +<span class="r-in"><span><span class="co"># add_err = function(d, sdfunc, LOD = 0.1, reps = 2, seed = 123456789)</span></span></span> +<span class="r-in"><span><span class="co"># {</span></span></span> +<span class="r-in"><span><span class="co"># set.seed(seed)</span></span></span> +<span class="r-in"><span><span class="co"># d_long = mkin_wide_to_long(d, time = "time")</span></span></span> +<span class="r-in"><span><span class="co"># d_rep = data.frame(lapply(d_long, rep, each = 2))</span></span></span> +<span class="r-in"><span><span class="co"># d_rep$value = rnorm(length(d_rep$value), d_rep$value, sdfunc(d_rep$value))</span></span></span> +<span class="r-in"><span><span class="co">#</span></span></span> +<span class="r-in"><span><span class="co"># d_rep[d_rep$time == 0 & d_rep$name %in% c("M1", "M2"), "value"] <- 0</span></span></span> +<span class="r-in"><span><span class="co"># d_NA <- transform(d_rep, value = ifelse(value < LOD, NA, value))</span></span></span> +<span class="r-in"><span><span class="co"># d_NA$value <- round(d_NA$value, 1)</span></span></span> +<span class="r-in"><span><span class="co"># return(d_NA)</span></span></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># The following is the simplified version of the two-component model of Rocke</span></span></span> +<span class="r-in"><span><span class="co"># and Lorenzato (1995)</span></span></span> +<span class="r-in"><span><span class="va">sdfunc_twocomp</span> <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">value</span>, <span class="va">sd_low</span>, <span class="va">rsd_high</span><span class="op">)</span> <span class="op">{</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/MathFun.html" class="external-link">sqrt</a></span><span class="op">(</span><span class="va">sd_low</span><span class="op">^</span><span class="fl">2</span> <span class="op">+</span> <span class="va">value</span><span class="op">^</span><span class="fl">2</span> <span class="op">*</span> <span class="va">rsd_high</span><span class="op">^</span><span class="fl">2</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">}</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Add the errors.</span></span></span> +<span class="r-in"><span><span class="kw">for</span> <span class="op">(</span><span class="va">d_synth_name</span> <span class="kw">in</span> <span class="va">d_synth_names</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">{</span></span></span> +<span class="r-in"><span> <span class="va">d_synth</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/get.html" class="external-link">get</a></span><span class="op">(</span><span class="va">d_synth_name</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/assign.html" class="external-link">assign</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste0</a></span><span class="op">(</span><span class="va">d_synth_name</span>, <span class="st">"_a"</span><span class="op">)</span>, <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_synth</span>, <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fl">3</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/assign.html" class="external-link">assign</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste0</a></span><span class="op">(</span><span class="va">d_synth_name</span>, <span class="st">"_b"</span><span class="op">)</span>, <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_synth</span>, <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fl">7</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/assign.html" class="external-link">assign</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste0</a></span><span class="op">(</span><span class="va">d_synth_name</span>, <span class="st">"_c"</span><span class="op">)</span>, <span class="fu"><a href="add_err.html">add_err</a></span><span class="op">(</span><span class="va">d_synth</span>,</span></span> +<span class="r-in"><span> <span class="kw">function</span><span class="op">(</span><span class="va">value</span><span class="op">)</span> <span class="fu">sdfunc_twocomp</span><span class="op">(</span><span class="va">value</span>, <span class="fl">0.5</span>, <span class="fl">0.07</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="op">}</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">d_synth_err_names</span> <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="va">d_synth_names</span>, each <span class="op">=</span> <span class="fl">3</span><span class="op">)</span>, <span class="va">letters</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">3</span><span class="op">]</span>, sep <span class="op">=</span> <span class="st">"_"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="op">)</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># This is just one example of an evaluation using the kinetic model used for</span></span></span> +<span class="r-in"><span><span class="co"># the generation of the data</span></span></span> +<span class="r-in"><span> <span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_synth_SFO_lin</span>, <span class="va">synthetic_data_for_UBA_2014</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span>,</span></span> +<span class="r-in"><span> quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span> <span class="fu"><a href="plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="synthetic_data_for_UBA_2014-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> mkin version used for fitting: 1.2.10 </span> +<span class="r-out co"><span class="r-pr">#></span> R version used for fitting: 4.4.2 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of fit: Fri Feb 14 07:34:43 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> Date of summary: Fri Feb 14 07:34:43 2025 </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Equations:</span> +<span class="r-out co"><span class="r-pr">#></span> d_parent/dt = - k_parent * parent</span> +<span class="r-out co"><span class="r-pr">#></span> d_M1/dt = + f_parent_to_M1 * k_parent * parent - k_M1 * M1</span> +<span class="r-out co"><span class="r-pr">#></span> d_M2/dt = + f_M1_to_M2 * k_M1 * M1 - k_M2 * M2</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Model predictions using solution type deSolve </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fitted using 848 model solutions performed in 0.17 s</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error model: Constant variance </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Error model algorithm: OLS </span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for parameters to be optimised:</span> +<span class="r-out co"><span class="r-pr">#></span> value type</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 101.3500 state</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.1000 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> k_M1 0.1001 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> k_M2 0.1002 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_M1 0.5000 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_to_M2 0.5000 deparm</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Starting values for the transformed parameters actually optimised:</span> +<span class="r-out co"><span class="r-pr">#></span> value lower upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 101.350000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent -2.302585 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M1 -2.301586 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M2 -2.300587 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis 0.000000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_qlogis 0.000000 -Inf Inf</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Fixed parameter values:</span> +<span class="r-out co"><span class="r-pr">#></span> value type</span> +<span class="r-out co"><span class="r-pr">#></span> M1_0 0 state</span> +<span class="r-out co"><span class="r-pr">#></span> M2_0 0 state</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Results:</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> AIC BIC logLik</span> +<span class="r-out co"><span class="r-pr">#></span> 188.7274 200.3723 -87.36368</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Optimised, transformed parameters with symmetric confidence intervals:</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 102.1000 1.57000 98.8600 105.3000</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent -0.3020 0.03885 -0.3812 -0.2229</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M1 -1.2070 0.07123 -1.3520 -1.0620</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M2 -3.9010 0.06571 -4.0350 -3.7670</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis 1.2010 0.23530 0.7216 1.6800</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_qlogis 0.9589 0.24890 0.4520 1.4660</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.2730 0.25740 1.7490 2.7970</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Parameter correlation:</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent log_k_M1 log_k_M2 f_parent_qlogis</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 1.000e+00 3.933e-01 -1.605e-01 2.819e-02 -4.624e-01</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent 3.933e-01 1.000e+00 -4.082e-01 7.166e-02 -5.682e-01</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M1 -1.605e-01 -4.082e-01 1.000e+00 -3.929e-01 7.478e-01</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M2 2.819e-02 7.166e-02 -3.929e-01 1.000e+00 -2.658e-01</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -4.624e-01 -5.682e-01 7.478e-01 -2.658e-01 1.000e+00</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_qlogis 1.614e-01 4.102e-01 -8.109e-01 5.419e-01 -8.605e-01</span> +<span class="r-out co"><span class="r-pr">#></span> sigma -1.377e-08 7.536e-10 1.089e-08 -4.422e-08 7.124e-09</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_qlogis sigma</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 1.614e-01 -1.377e-08</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent 4.102e-01 7.536e-10</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M1 -8.109e-01 1.089e-08</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_M2 5.419e-01 -4.422e-08</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis -8.605e-01 7.124e-09</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_qlogis 1.000e+00 -2.685e-08</span> +<span class="r-out co"><span class="r-pr">#></span> sigma -2.685e-08 1.000e+00</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Backtransformed parameters:</span> +<span class="r-out co"><span class="r-pr">#></span> Confidence intervals for internally transformed parameters are asymmetric.</span> +<span class="r-out co"><span class="r-pr">#></span> t-test (unrealistically) based on the assumption of normal distribution</span> +<span class="r-out co"><span class="r-pr">#></span> for estimators of untransformed parameters.</span> +<span class="r-out co"><span class="r-pr">#></span> Estimate t value Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 102.10000 65.000 7.281e-36 98.86000 105.30000</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.73930 25.740 2.948e-23 0.68310 0.80020</span> +<span class="r-out co"><span class="r-pr">#></span> k_M1 0.29920 14.040 1.577e-15 0.25880 0.34590</span> +<span class="r-out co"><span class="r-pr">#></span> k_M2 0.02023 15.220 1.653e-16 0.01769 0.02312</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_M1 0.76870 18.370 7.295e-19 0.67300 0.84290</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_to_M2 0.72290 14.500 6.418e-16 0.61110 0.81240</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.27300 8.832 2.161e-10 1.74900 2.79700</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> FOCUS Chi2 error levels in percent:</span> +<span class="r-out co"><span class="r-pr">#></span> err.min n.optim df</span> +<span class="r-out co"><span class="r-pr">#></span> All data 8.454 6 17</span> +<span class="r-out co"><span class="r-pr">#></span> parent 8.660 2 6</span> +<span class="r-out co"><span class="r-pr">#></span> M1 10.583 2 5</span> +<span class="r-out co"><span class="r-pr">#></span> M2 3.586 2 6</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Resulting formation fractions:</span> +<span class="r-out co"><span class="r-pr">#></span> ff</span> +<span class="r-out co"><span class="r-pr">#></span> parent_M1 0.7687</span> +<span class="r-out co"><span class="r-pr">#></span> parent_sink 0.2313</span> +<span class="r-out co"><span class="r-pr">#></span> M1_M2 0.7229</span> +<span class="r-out co"><span class="r-pr">#></span> M1_sink 0.2771</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Estimated disappearance times:</span> +<span class="r-out co"><span class="r-pr">#></span> DT50 DT90</span> +<span class="r-out co"><span class="r-pr">#></span> parent 0.9376 3.114</span> +<span class="r-out co"><span class="r-pr">#></span> M1 2.3170 7.697</span> +<span class="r-out co"><span class="r-pr">#></span> M2 34.2689 113.839</span> +<span class="r-out co"><span class="r-pr">#></span> </span> +<span class="r-out co"><span class="r-pr">#></span> Data:</span> +<span class="r-out co"><span class="r-pr">#></span> time variable observed predicted residual</span> +<span class="r-out co"><span class="r-pr">#></span> 0 parent 101.5 1.021e+02 -0.56248</span> +<span class="r-out co"><span class="r-pr">#></span> 0 parent 101.2 1.021e+02 -0.86248</span> +<span class="r-out co"><span class="r-pr">#></span> 1 parent 53.9 4.873e+01 5.17118</span> +<span class="r-out co"><span class="r-pr">#></span> 1 parent 47.5 4.873e+01 -1.22882</span> +<span class="r-out co"><span class="r-pr">#></span> 3 parent 10.4 1.111e+01 -0.70773</span> +<span class="r-out co"><span class="r-pr">#></span> 3 parent 7.6 1.111e+01 -3.50773</span> +<span class="r-out co"><span class="r-pr">#></span> 7 parent 1.1 5.772e-01 0.52283</span> +<span class="r-out co"><span class="r-pr">#></span> 7 parent 0.3 5.772e-01 -0.27717</span> +<span class="r-out co"><span class="r-pr">#></span> 14 parent 3.5 3.264e-03 3.49674</span> +<span class="r-out co"><span class="r-pr">#></span> 28 parent 3.2 1.045e-07 3.20000</span> +<span class="r-out co"><span class="r-pr">#></span> 90 parent 0.6 9.532e-10 0.60000</span> +<span class="r-out co"><span class="r-pr">#></span> 120 parent 3.5 -5.940e-10 3.50000</span> +<span class="r-out co"><span class="r-pr">#></span> 1 M1 36.4 3.479e+01 1.61088</span> +<span class="r-out co"><span class="r-pr">#></span> 1 M1 37.4 3.479e+01 2.61088</span> +<span class="r-out co"><span class="r-pr">#></span> 3 M1 34.3 3.937e+01 -5.07027</span> +<span class="r-out co"><span class="r-pr">#></span> 3 M1 39.8 3.937e+01 0.42973</span> +<span class="r-out co"><span class="r-pr">#></span> 7 M1 15.1 1.549e+01 -0.38715</span> +<span class="r-out co"><span class="r-pr">#></span> 7 M1 17.8 1.549e+01 2.31285</span> +<span class="r-out co"><span class="r-pr">#></span> 14 M1 5.8 1.995e+00 3.80469</span> +<span class="r-out co"><span class="r-pr">#></span> 14 M1 1.2 1.995e+00 -0.79531</span> +<span class="r-out co"><span class="r-pr">#></span> 60 M1 0.5 2.111e-06 0.50000</span> +<span class="r-out co"><span class="r-pr">#></span> 90 M1 3.2 -9.672e-10 3.20000</span> +<span class="r-out co"><span class="r-pr">#></span> 120 M1 1.5 7.670e-10 1.50000</span> +<span class="r-out co"><span class="r-pr">#></span> 120 M1 0.6 7.670e-10 0.60000</span> +<span class="r-out co"><span class="r-pr">#></span> 1 M2 4.8 4.455e+00 0.34517</span> +<span class="r-out co"><span class="r-pr">#></span> 3 M2 20.9 2.153e+01 -0.62527</span> +<span class="r-out co"><span class="r-pr">#></span> 3 M2 19.3 2.153e+01 -2.22527</span> +<span class="r-out co"><span class="r-pr">#></span> 7 M2 42.0 4.192e+01 0.07941</span> +<span class="r-out co"><span class="r-pr">#></span> 7 M2 43.1 4.192e+01 1.17941</span> +<span class="r-out co"><span class="r-pr">#></span> 14 M2 49.4 4.557e+01 3.83353</span> +<span class="r-out co"><span class="r-pr">#></span> 14 M2 44.3 4.557e+01 -1.26647</span> +<span class="r-out co"><span class="r-pr">#></span> 28 M2 34.6 3.547e+01 -0.87275</span> +<span class="r-out co"><span class="r-pr">#></span> 28 M2 33.0 3.547e+01 -2.47275</span> +<span class="r-out co"><span class="r-pr">#></span> 60 M2 18.8 1.858e+01 0.21837</span> +<span class="r-out co"><span class="r-pr">#></span> 60 M2 17.6 1.858e+01 -0.98163</span> +<span class="r-out co"><span class="r-pr">#></span> 90 M2 10.6 1.013e+01 0.47130</span> +<span class="r-out co"><span class="r-pr">#></span> 90 M2 10.8 1.013e+01 0.67130</span> +<span class="r-out co"><span class="r-pr">#></span> 120 M2 9.8 5.521e+00 4.27893</span> +<span class="r-out co"><span class="r-pr">#></span> 120 M2 3.3 5.521e+00 -2.22107</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/test_data_from_UBA_2014-1.png b/docs/dev/reference/test_data_from_UBA_2014-1.png Binary files differnew file mode 100644 index 00000000..db29d16d --- /dev/null +++ b/docs/dev/reference/test_data_from_UBA_2014-1.png diff --git a/docs/dev/reference/test_data_from_UBA_2014-2.png b/docs/dev/reference/test_data_from_UBA_2014-2.png Binary files differnew file mode 100644 index 00000000..2bfb77f7 --- /dev/null +++ b/docs/dev/reference/test_data_from_UBA_2014-2.png diff --git a/docs/dev/reference/test_data_from_UBA_2014.html b/docs/dev/reference/test_data_from_UBA_2014.html new file mode 100644 index 00000000..0d6b8105 --- /dev/null +++ b/docs/dev/reference/test_data_from_UBA_2014.html @@ -0,0 +1,195 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Three experimental datasets from two water sediment systems and one soil — test_data_from_UBA_2014 • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Three experimental datasets from two water sediment systems and one soil — test_data_from_UBA_2014"><meta name="description" content="The datasets were used for the comparative validation of several kinetic evaluation + software packages (Ranke, 2014)."><meta property="og:description" content="The datasets were used for the comparative validation of several kinetic evaluation + software packages (Ranke, 2014)."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Three experimental datasets from two water sediment systems and one soil</h1> + + <div class="d-none name"><code>test_data_from_UBA_2014.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The datasets were used for the comparative validation of several kinetic evaluation + software packages (Ranke, 2014).</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="va">test_data_from_UBA_2014</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2> + <p>A list containing three datasets as an R6 class defined by <code><a href="mkinds.html">mkinds</a></code>. + Each dataset has, among others, the following components</p><dl><dt><code>title</code></dt> +<dd><p>The name of the dataset, e.g. <code>UBA_2014_WS_river</code></p></dd> + + <dt><code>data</code></dt> +<dd><p>A data frame with the data in the form expected by <code><a href="mkinfit.html">mkinfit</a></code></p></dd> + + +</dl></div> + <div class="section level2"> + <h2 id="source">Source<a class="anchor" aria-label="anchor" href="#source"></a></h2> + <p>Ranke (2014) Prüfung und Validierung von Modellierungssoftware als Alternative + zu ModelMaker 4.0, Umweltbundesamt Projektnummer 27452</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span> <span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span> <span class="co"># This is a level P-II evaluation of the dataset according to the FOCUS kinetics</span></span></span> +<span class="r-in"><span> <span class="co"># guidance. Due to the strong correlation of the parameter estimates, the</span></span></span> +<span class="r-in"><span> <span class="co"># covariance matrix is not returned. Note that level P-II evaluations are</span></span></span> +<span class="r-in"><span> <span class="co"># generally considered deprecated due to the frequent occurrence of such</span></span></span> +<span class="r-in"><span> <span class="co"># large parameter correlations, among other reasons (e.g. the adequacy of the</span></span></span> +<span class="r-in"><span> <span class="co"># model).</span></span></span> +<span class="r-in"><span> <span class="va">m_ws</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent_w <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"parent_s"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> parent_s <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"parent_w"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span> <span class="va">f_river</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_ws</span>, <span class="va">test_data_from_UBA_2014</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span> <span class="fu"><a href="plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">f_river</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="test_data_from_UBA_2014-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">f_river</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t)</span> +<span class="r-out co"><span class="r-pr">#></span> parent_w_0 95.98567441 2.16285684 44.3791159 1.245593e-17</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_w 0.42068803 0.05573864 7.5475120 8.752928e-07</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_s 0.07419672 0.10108562 0.7339987 2.371337e-01</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_w_to_parent_s 0.14336920 0.05809346 2.4679062 1.305295e-02</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_s_to_parent_w 1.00000000 3.13868615 0.3186046 3.772097e-01</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.98287858 0.68923267 4.3278253 2.987160e-04</span> +<span class="r-out co"><span class="r-pr">#></span> Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_w_0 91.48420501 100.4871438</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_w 0.36593946 0.4836276</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_s 0.02289956 0.2404043</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_w_to_parent_s 0.08180934 0.2391848</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_s_to_parent_w 0.00000000 1.0000000</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 2.00184022 3.9639169</span> +<span class="r-in"><span> <span class="fu"><a href="mkinerrmin.html">mkinerrmin</a></span><span class="op">(</span><span class="va">f_river</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> err.min n.optim df</span> +<span class="r-out co"><span class="r-pr">#></span> All data 0.09246946 5 6</span> +<span class="r-out co"><span class="r-pr">#></span> parent_w 0.06377096 3 3</span> +<span class="r-out co"><span class="r-pr">#></span> parent_s 0.20882325 2 3</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="co"># This is the evaluation used for the validation of software packages</span></span></span> +<span class="r-in"><span> <span class="co"># in the expertise from 2014</span></span></span> +<span class="r-in"><span> <span class="va">m_soil</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span>parent <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"M1"</span>, <span class="st">"M2"</span><span class="op">)</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M1 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M3"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M2 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="st">"M3"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> M3 <span class="op">=</span> <span class="fu"><a href="mkinmod.html">mkinsub</a></span><span class="op">(</span><span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span> <span class="va">f_soil</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">m_soil</span>, <span class="va">test_data_from_UBA_2014</span><span class="op">[[</span><span class="fl">3</span><span class="op">]</span><span class="op">]</span><span class="op">$</span><span class="va">data</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-wrn co"><span class="r-pr">#></span> <span class="warning">Warning: </span>Observations with value of zero were removed from the data</span> +<span class="r-in"><span> <span class="fu"><a href="plot.mkinfit.html">plot_sep</a></span><span class="op">(</span><span class="va">f_soil</span>, lpos <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"topright"</span>, <span class="st">"topright"</span>, <span class="st">"topright"</span>, <span class="st">"bottomright"</span><span class="op">)</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="test_data_from_UBA_2014-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">f_soil</span><span class="op">)</span><span class="op">$</span><span class="va">bpar</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t) Lower</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 76.55425650 0.859186398 89.1008711 1.113861e-26 74.755959420</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.12081956 0.004601918 26.2541722 1.077359e-16 0.111561575</span> +<span class="r-out co"><span class="r-pr">#></span> k_M1 0.84258615 0.806159719 1.0451851 1.545266e-01 0.113779564</span> +<span class="r-out co"><span class="r-pr">#></span> k_M2 0.04210880 0.017083034 2.4649483 1.170188e-02 0.018013857</span> +<span class="r-out co"><span class="r-pr">#></span> k_M3 0.01122918 0.007245855 1.5497385 6.885051e-02 0.002909431</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_M1 0.32240200 0.240783878 1.3389684 9.819070e-02 NA</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_M2 0.16099855 0.033691952 4.7785463 6.531136e-05 NA</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_to_M3 0.27921507 0.269423709 1.0363419 1.565266e-01 0.022978202</span> +<span class="r-out co"><span class="r-pr">#></span> f_M2_to_M3 0.55641252 0.595119937 0.9349586 1.807707e-01 0.008002509</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.14005399 0.149696423 7.6157731 1.727024e-07 0.826735778</span> +<span class="r-out co"><span class="r-pr">#></span> Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 78.35255358</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.13084582</span> +<span class="r-out co"><span class="r-pr">#></span> k_M1 6.23970946</span> +<span class="r-out co"><span class="r-pr">#></span> k_M2 0.09843260</span> +<span class="r-out co"><span class="r-pr">#></span> k_M3 0.04333992</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_M1 NA</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_M2 NA</span> +<span class="r-out co"><span class="r-pr">#></span> f_M1_to_M3 0.86450778</span> +<span class="r-out co"><span class="r-pr">#></span> f_M2_to_M3 0.99489895</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 1.45337221</span> +<span class="r-in"><span> <span class="fu"><a href="mkinerrmin.html">mkinerrmin</a></span><span class="op">(</span><span class="va">f_soil</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> err.min n.optim df</span> +<span class="r-out co"><span class="r-pr">#></span> All data 0.09649963 9 20</span> +<span class="r-out co"><span class="r-pr">#></span> parent 0.04721283 2 6</span> +<span class="r-out co"><span class="r-pr">#></span> M1 0.26551208 2 5</span> +<span class="r-out co"><span class="r-pr">#></span> M2 0.20327575 2 5</span> +<span class="r-out co"><span class="r-pr">#></span> M3 0.05196550 3 4</span> +<span class="r-in"><span> <span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/tex_listing.html b/docs/dev/reference/tex_listing.html new file mode 100644 index 00000000..779fff4c --- /dev/null +++ b/docs/dev/reference/tex_listing.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/summary_listing.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/summary_listing.html"> + </head> +</html> + diff --git a/docs/dev/reference/transform_odeparms.html b/docs/dev/reference/transform_odeparms.html new file mode 100644 index 00000000..42125012 --- /dev/null +++ b/docs/dev/reference/transform_odeparms.html @@ -0,0 +1,293 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms"><meta name="description" content="The transformations are intended to map parameters that should only take on +restricted values to the full scale of real numbers. For kinetic rate +constants and other parameters that can only take on positive values, a +simple log transformation is used. For compositional parameters, such as the +formations fractions that should always sum up to 1 and can not be negative, +the ilr transformation is used."><meta property="og:description" content="The transformations are intended to map parameters that should only take on +restricted values to the full scale of real numbers. For kinetic rate +constants and other parameters that can only take on positive values, a +simple log transformation is used. For compositional parameters, such as the +formations fractions that should always sum up to 1 and can not be negative, +the ilr transformation is used."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Functions to transform and backtransform kinetic parameters for fitting</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/transform_odeparms.R" class="external-link"><code>R/transform_odeparms.R</code></a></small> + <div class="d-none name"><code>transform_odeparms.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>The transformations are intended to map parameters that should only take on +restricted values to the full scale of real numbers. For kinetic rate +constants and other parameters that can only take on positive values, a +simple log transformation is used. For compositional parameters, such as the +formations fractions that should always sum up to 1 and can not be negative, +the <a href="ilr.html">ilr</a> transformation is used.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">transform_odeparms</span><span class="op">(</span></span> +<span> <span class="va">parms</span>,</span> +<span> <span class="va">mkinmod</span>,</span> +<span> transform_rates <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> transform_fractions <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span> +<span></span> +<span><span class="fu">backtransform_odeparms</span><span class="op">(</span></span> +<span> <span class="va">transparms</span>,</span> +<span> <span class="va">mkinmod</span>,</span> +<span> transform_rates <span class="op">=</span> <span class="cn">TRUE</span>,</span> +<span> transform_fractions <span class="op">=</span> <span class="cn">TRUE</span></span> +<span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-parms">parms<a class="anchor" aria-label="anchor" href="#arg-parms"></a></dt> +<dd><p>Parameters of kinetic models as used in the differential +equations.</p></dd> + + +<dt id="arg-mkinmod">mkinmod<a class="anchor" aria-label="anchor" href="#arg-mkinmod"></a></dt> +<dd><p>The kinetic model of class <a href="mkinmod.html">mkinmod</a>, containing +the names of the model variables that are needed for grouping the +formation fractions before <a href="ilr.html">ilr</a> transformation, the parameter +names and the information if the pathway to sink is included in the model.</p></dd> + + +<dt id="arg-transform-rates">transform_rates<a class="anchor" aria-label="anchor" href="#arg-transform-rates"></a></dt> +<dd><p>Boolean specifying if kinetic rate constants should +be transformed in the model specification used in the fitting for better +compliance with the assumption of normal distribution of the estimator. If +TRUE, also alpha and beta parameters of the FOMC model are +log-transformed, as well as k1 and k2 rate constants for the DFOP and HS +models and the break point tb of the HS model.</p></dd> + + +<dt id="arg-transform-fractions">transform_fractions<a class="anchor" aria-label="anchor" href="#arg-transform-fractions"></a></dt> +<dd><p>Boolean specifying if formation fractions +constants should be transformed in the model specification used in the +fitting for better compliance with the assumption of normal distribution +of the estimator. The default (TRUE) is to do transformations. +The g parameter of the DFOP model is also seen as a fraction. +If a single fraction is transformed (g parameter of DFOP or only a single +target variable e.g. a single metabolite plus a pathway to sink), a +logistic transformation is used <code><a href="https://rdrr.io/r/stats/Logistic.html" class="external-link">stats::qlogis()</a></code>. In other cases, i.e. if +two or more formation fractions need to be transformed whose sum cannot +exceed one, the <a href="ilr.html">ilr</a> transformation is used.</p></dd> + + +<dt id="arg-transparms">transparms<a class="anchor" aria-label="anchor" href="#arg-transparms"></a></dt> +<dd><p>Transformed parameters of kinetic models as used in the +fitting procedure.</p></dd> + +</dl></div> + <div class="section level2"> + <h2 id="value">Value<a class="anchor" aria-label="anchor" href="#value"></a></h2> + <p>A vector of transformed or backtransformed parameters</p> + </div> + <div class="section level2"> + <h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2> + <p>The transformation of sets of formation fractions is fragile, as it supposes +the same ordering of the components in forward and backward transformation. +This is no problem for the internal use in <a href="mkinfit.html">mkinfit</a>.</p> + </div> + <div class="section level2"> + <h2 id="author">Author<a class="anchor" aria-label="anchor" href="#author"></a></h2> + <p>Johannes Ranke</p> + </div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"m1"</span>, sink <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>, use_of_ff <span class="op">=</span> <span class="st">"min"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># Fit the model to the FOCUS example dataset D using defaults</span></span></span> +<span class="r-in"><span><span class="va">FOCUS_D</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span> <span class="co"># remove zero values to avoid warning</span></span></span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">fit.s</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="co"># Transformed and backtransformed parameters</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">fit.s</span><span class="op">$</span><span class="va">par</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 99.60 1.5702 96.40 102.79</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent_sink -3.04 0.0763 -3.19 -2.88</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent_m1 -2.98 0.0403 -3.06 -2.90</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1_sink -5.25 0.1332 -5.52 -4.98</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 3.13 0.3585 2.40 3.85</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">fit.s</span><span class="op">$</span><span class="va">bpar</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 99.59848 1.57022 63.43 2.30e-36 96.40384 102.7931</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink 0.04792 0.00365 13.11 6.13e-15 0.04103 0.0560</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 0.05078 0.00205 24.80 3.27e-23 0.04678 0.0551</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink 0.00526 0.00070 7.51 6.16e-09 0.00401 0.0069</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.8549</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="co"># Compare to the version without transforming rate parameters (does not work</span></span></span> +<span class="r-in"><span><span class="co"># with analytical solution, we get NA values for m1 in predictions)</span></span></span> +<span class="r-in"><span><span class="va">fit.2</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO</span>, <span class="va">FOCUS_D</span>, transform_rates <span class="op">=</span> <span class="cn">FALSE</span>,</span></span> +<span class="r-in"><span> solution_type <span class="op">=</span> <span class="st">"deSolve"</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">fit.2.s</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit.2</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">fit.2.s</span><span class="op">$</span><span class="va">par</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 99.59848 1.57022 96.40384 1.03e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink 0.04792 0.00365 0.04049 5.54e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 0.05078 0.00205 0.04661 5.49e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink 0.00526 0.00070 0.00384 6.69e-03</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 3.12550 0.35852 2.39609 3.85e+00</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">fit.2.s</span><span class="op">$</span><span class="va">bpar</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 99.59848 1.57022 63.43 2.30e-36 96.40384 1.03e+02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_sink 0.04792 0.00365 13.11 6.13e-15 0.04049 5.54e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent_m1 0.05078 0.00205 24.80 3.27e-23 0.04661 5.49e-02</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1_sink 0.00526 0.00070 7.51 6.16e-09 0.00384 6.69e-03</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.85e+00</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">initials</span> <span class="op"><-</span> <span class="va">fit</span><span class="op">$</span><span class="va">start</span><span class="op">$</span><span class="va">value</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">initials</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/colnames.html" class="external-link">rownames</a></span><span class="op">(</span><span class="va">fit</span><span class="op">$</span><span class="va">start</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">transformed</span> <span class="op"><-</span> <span class="va">fit</span><span class="op">$</span><span class="va">start_transformed</span><span class="op">$</span><span class="va">value</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/names.html" class="external-link">names</a></span><span class="op">(</span><span class="va">transformed</span><span class="op">)</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/colnames.html" class="external-link">rownames</a></span><span class="op">(</span><span class="va">fit</span><span class="op">$</span><span class="va">start_transformed</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">transform_odeparms</span><span class="op">(</span><span class="va">initials</span>, <span class="va">SFO_SFO</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 log_k_parent_sink log_k_parent_m1 log_k_m1_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 100.750000 -2.302585 -2.301586 -2.300587 </span> +<span class="r-in"><span><span class="fu">backtransform_odeparms</span><span class="op">(</span><span class="va">transformed</span>, <span class="va">SFO_SFO</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 k_parent_sink k_parent_m1 k_m1_sink </span> +<span class="r-out co"><span class="r-pr">#></span> 100.7500 0.1000 0.1001 0.1002 </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="co"># The case of formation fractions (this is now the default)</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO.ff</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"m1"</span>, sink <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">fit.ff</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO.ff</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">fit.ff.s</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit.ff</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">fit.ff.s</span><span class="op">$</span><span class="va">par</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 99.5985 1.5702 96.404 102.79</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent -2.3157 0.0409 -2.399 -2.23</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 -5.2475 0.1332 -5.518 -4.98</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_qlogis 0.0579 0.0893 -0.124 0.24</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 3.1255 0.3585 2.396 3.85</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">fit.ff.s</span><span class="op">$</span><span class="va">bpar</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 99.59848 1.57022 63.43 2.30e-36 96.40383 102.7931</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.09870 0.00403 24.47 4.96e-23 0.09082 0.1073</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.00526 0.00070 7.51 6.16e-09 0.00401 0.0069</span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 0.51448 0.02230 23.07 3.10e-22 0.46912 0.5596</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.8549</span> +<span class="r-in"><span><span class="va">initials</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"f_parent_to_m1"</span> <span class="op">=</span> <span class="fl">0.5</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">transformed</span> <span class="op"><-</span> <span class="fu">transform_odeparms</span><span class="op">(</span><span class="va">initials</span>, <span class="va">SFO_SFO.ff</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu">backtransform_odeparms</span><span class="op">(</span><span class="va">transformed</span>, <span class="va">SFO_SFO.ff</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> f_parent_to_m1 </span> +<span class="r-out co"><span class="r-pr">#></span> 0.5 </span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="co"># And without sink</span></span></span> +<span class="r-in"><span><span class="va">SFO_SFO.ff.2</span> <span class="op"><-</span> <span class="fu"><a href="mkinmod.html">mkinmod</a></span><span class="op">(</span></span></span> +<span class="r-in"><span> parent <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span>, to <span class="op">=</span> <span class="st">"m1"</span>, sink <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> m1 <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>type <span class="op">=</span> <span class="st">"SFO"</span><span class="op">)</span>,</span></span> +<span class="r-in"><span> use_of_ff <span class="op">=</span> <span class="st">"max"</span><span class="op">)</span></span></span> +<span class="r-msg co"><span class="r-pr">#></span> Temporary DLL for differentials generated and loaded</span> +<span class="r-in"><span></span></span> +<span class="r-in"><span></span></span> +<span class="r-in"><span><span class="va">fit.ff.2</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="va">SFO_SFO.ff.2</span>, <span class="va">FOCUS_D</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="va">fit.ff.2.s</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/pkg/saemix/man/summary-methods.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">fit.ff.2</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">fit.ff.2.s</span><span class="op">$</span><span class="va">par</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate Std. Error Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 84.79 3.012 78.67 90.91</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_parent -2.76 0.082 -2.92 -2.59</span> +<span class="r-out co"><span class="r-pr">#></span> log_k_m1 -4.21 0.123 -4.46 -3.96</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 8.22 0.943 6.31 10.14</span> +<span class="r-in"><span><span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">fit.ff.2.s</span><span class="op">$</span><span class="va">bpar</span>, <span class="fl">3</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> Estimate se_notrans t value Pr(>t) Lower Upper</span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 84.7916 3.01203 28.15 1.92e-25 78.6704 90.913</span> +<span class="r-out co"><span class="r-pr">#></span> k_parent 0.0635 0.00521 12.19 2.91e-14 0.0538 0.075</span> +<span class="r-out co"><span class="r-pr">#></span> k_m1 0.0148 0.00182 8.13 8.81e-10 0.0115 0.019</span> +<span class="r-out co"><span class="r-pr">#></span> sigma 8.2229 0.94323 8.72 1.73e-10 6.3060 10.140</span> +<span class="r-in"><span><span class="co"># }</span></span></span> +<span class="r-in"><span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/update.mkinfit-1.png b/docs/dev/reference/update.mkinfit-1.png Binary files differnew file mode 100644 index 00000000..bc818a4c --- /dev/null +++ b/docs/dev/reference/update.mkinfit-1.png diff --git a/docs/dev/reference/update.mkinfit-2.png b/docs/dev/reference/update.mkinfit-2.png Binary files differnew file mode 100644 index 00000000..bbd2b9b7 --- /dev/null +++ b/docs/dev/reference/update.mkinfit-2.png diff --git a/docs/dev/reference/update.mkinfit.html b/docs/dev/reference/update.mkinfit.html new file mode 100644 index 00000000..e83fe3d2 --- /dev/null +++ b/docs/dev/reference/update.mkinfit.html @@ -0,0 +1,138 @@ +<!DOCTYPE html> +<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Update an mkinfit model with different arguments — update.mkinfit • mkin</title><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="Update an mkinfit model with different arguments — update.mkinfit"><meta name="description" content="This function will return an updated mkinfit object. The fitted degradation +model parameters from the old fit are used as starting values for the +updated fit. Values specified as 'parms.ini' and/or 'state.ini' will +override these starting values."><meta property="og:description" content="This function will return an updated mkinfit object. The fitted degradation +model parameters from the old fit are used as starting values for the +updated fit. Values specified as 'parms.ini' and/or 'state.ini' will +override these starting values."><meta name="robots" content="noindex"></head><body> + <a href="#main" class="visually-hidden-focusable">Skip to contents</a> + + + <nav class="navbar navbar-expand-lg fixed-top bg-light" data-bs-theme="default" aria-label="Site navigation"><div class="container"> + + <a class="navbar-brand me-2" href="../index.html">mkin</a> + + <small class="nav-text text-info me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="In-development version">1.2.10</small> + + + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + + <div id="navbar" class="collapse navbar-collapse ms-3"> + <ul class="navbar-nav me-auto"><li class="active nav-item"><a class="nav-link" href="../reference/index.html">Reference</a></li> +<li class="nav-item dropdown"> + <button class="nav-link dropdown-toggle" type="button" id="dropdown-articles" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true">Articles</button> + <ul class="dropdown-menu" aria-labelledby="dropdown-articles"><li><a class="dropdown-item" href="../articles/mkin.html">Introduction to mkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with (generalised) nonlinear least squares</h6></li> + <li><a class="dropdown-item" href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a class="dropdown-item" href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a class="dropdown-item" href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Example evaluations with hierarchical models (nonlinear mixed-effects models)</h6></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_parent.html">Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_dmta_pathway.html">Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2023_mesotrione_parent.html">Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione</a></li> + <li><a class="dropdown-item" href="../articles/prebuilt/2022_cyan_pathway.html">Testing hierarchical pathway kinetics with residue data on cyantraniliprole</a></li> + <li><a class="dropdown-item" href="../articles/web_only/dimethenamid_2018.html">Comparison of saemix and nlme evaluations of dimethenamid data from 2018</a></li> + <li><a class="dropdown-item" href="../articles/web_only/multistart.html">Short demo of the multistart method</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Performance</h6></li> + <li><a class="dropdown-item" href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/benchmarks.html">Benchmark timings for mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/saem_benchmarks.html">Benchmark timings for saem.mmkin</a></li> + <li><hr class="dropdown-divider"></li> + <li><h6 class="dropdown-header" data-toc-skip>Miscellaneous</h6></li> + <li><a class="dropdown-item" href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a></li> + <li><a class="dropdown-item" href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a></li> + </ul></li> +<li class="nav-item"><a class="nav-link" href="../coverage/coverage.html">Test coverage</a></li> +<li class="nav-item"><a class="nav-link" href="../news/index.html">News</a></li> + </ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search"> + <input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li> +<li class="nav-item"><a class="external-link nav-link" href="https://github.com/jranke/mkin/" aria-label="GitHub"><span class="fa fab fa-github fa-lg"></span></a></li> + </ul></div> + + + </div> +</nav><div class="container template-reference-topic"> +<div class="row"> + <main id="main" class="col-md-9"><div class="page-header"> + + <h1>Update an mkinfit model with different arguments</h1> + <small class="dont-index">Source: <a href="https://github.com/jranke/mkin/blob/HEAD/R/update.mkinfit.R" class="external-link"><code>R/update.mkinfit.R</code></a></small> + <div class="d-none name"><code>update.mkinfit.Rd</code></div> + </div> + + <div class="ref-description section level2"> + <p>This function will return an updated mkinfit object. The fitted degradation +model parameters from the old fit are used as starting values for the +updated fit. Values specified as 'parms.ini' and/or 'state.ini' will +override these starting values.</p> + </div> + + <div class="section level2"> + <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="co"># S3 method for class 'mkinfit'</span></span> +<span><span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">object</span>, <span class="va">...</span>, evaluate <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div> + </div> + + <div class="section level2"> + <h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2> + + +<dl><dt id="arg-object">object<a class="anchor" aria-label="anchor" href="#arg-object"></a></dt> +<dd><p>An mkinfit object to be updated</p></dd> + + +<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt> +<dd><p>Arguments to <code><a href="mkinfit.html">mkinfit</a></code> that should replace +the arguments from the original call. Arguments set to NULL will +remove arguments given in the original call</p></dd> + + +<dt id="arg-evaluate">evaluate<a class="anchor" aria-label="anchor" href="#arg-evaluate"></a></dt> +<dd><p>Should the call be evaluated or returned as a call</p></dd> + +</dl></div> + + <div class="section level2"> + <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2> + <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span> +<span class="r-in"><span><span class="va">fit</span> <span class="op"><-</span> <span class="fu"><a href="mkinfit.html">mkinfit</a></span><span class="op">(</span><span class="st">"SFO"</span>, <span class="fu"><a href="https://rdrr.io/r/base/subset.html" class="external-link">subset</a></span><span class="op">(</span><span class="va">FOCUS_2006_D</span>, <span class="va">value</span> <span class="op">!=</span> <span class="fl">0</span><span class="op">)</span>, quiet <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="parms.html">parms</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 k_parent sigma </span> +<span class="r-out co"><span class="r-pr">#></span> 99.44423885 0.09793574 3.39632469 </span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_err</a></span><span class="op">(</span><span class="va">fit</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="update.mkinfit-1.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="va">fit_2</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/update.html" class="external-link">update</a></span><span class="op">(</span><span class="va">fit</span>, error_model <span class="op">=</span> <span class="st">"tc"</span><span class="op">)</span></span></span> +<span class="r-in"><span><span class="fu"><a href="parms.html">parms</a></span><span class="op">(</span><span class="va">fit_2</span><span class="op">)</span></span></span> +<span class="r-out co"><span class="r-pr">#></span> parent_0 k_parent sigma_low rsd_high </span> +<span class="r-out co"><span class="r-pr">#></span> 1.008549e+02 1.005665e-01 3.752222e-03 6.763434e-02 </span> +<span class="r-in"><span><span class="fu"><a href="plot.mkinfit.html">plot_err</a></span><span class="op">(</span><span class="va">fit_2</span><span class="op">)</span></span></span> +<span class="r-plt img"><img src="update.mkinfit-2.png" alt="" width="700" height="433"></span> +<span class="r-in"><span><span class="co"># }</span></span></span> +</code></pre></div> + </div> + </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2> + </nav></aside></div> + + + <footer><div class="pkgdown-footer-left"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown-footer-right"> + <p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.1.</p> +</div> + + </footer></div> + + + + + + </body></html> + diff --git a/docs/dev/reference/update.nlme.mmkin.html b/docs/dev/reference/update.nlme.mmkin.html new file mode 100644 index 00000000..dc3bfe09 --- /dev/null +++ b/docs/dev/reference/update.nlme.mmkin.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html"> + </head> +</html> + diff --git a/docs/dev/reference/which.best.default.html b/docs/dev/reference/which.best.default.html new file mode 100644 index 00000000..06f15f0c --- /dev/null +++ b/docs/dev/reference/which.best.default.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html"> + </head> +</html> + diff --git a/docs/dev/reference/which.best.html b/docs/dev/reference/which.best.html new file mode 100644 index 00000000..06f15f0c --- /dev/null +++ b/docs/dev/reference/which.best.html @@ -0,0 +1,8 @@ +<html> + <head> + <meta http-equiv="refresh" content="0;URL=https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html" /> + <meta name="robots" content="noindex"> + <link rel="canonical" href="https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html"> + </head> +</html> + diff --git a/docs/dev/search.json b/docs/dev/search.json new file mode 100644 index 00000000..fb7dc6a1 --- /dev/null +++ b/docs/dev/search.json @@ -0,0 +1 @@ +[{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"laboratory-data-l1","dir":"Articles","previous_headings":"","what":"Laboratory Data L1","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":"following code defines example dataset L1 FOCUS kinetics report, p. 284: use assumptions simple first order (SFO), case declining rate constant time (FOMC) case two different phases kinetics (DFOP). detailed discussion models, please see FOCUS kinetics report. Since mkin version 0.9-32 (July 2014), can use shorthand notation like \"SFO\" parent degradation models. following two lines fit model produce summary report model fit. covers numerical analysis given FOCUS report. plot fit obtained plot function mkinfit objects. residual plot can easily obtained comparison, FOMC model fitted well, χ2\\chi^2 error level checked. get warning default optimisation algorithm Port converge, indication model overparameterised, .e. contains many parameters ill-defined consequence. fact, due higher number parameters, lower number degrees freedom fit, χ2\\chi^2 error level actually higher FOMC model (3.6%) SFO model (3.4%). Additionally, parameters log_alpha log_beta internally fitted model excessive confidence intervals, span 25 orders magnitude (!) backtransformed scale alpha beta. Also, t-test significant difference zero indicate significant difference, p-values greater 0.1, finally, parameter correlation log_alpha log_beta 1.000, clearly indicating model overparameterised. χ2\\chi^2 error levels reported Appendix 3 Appendix 7 FOCUS kinetics report rounded integer percentages partly deviate one percentage point results calculated mkin. reason known. However, mkin gives χ2\\chi^2 error levels kinfit package calculation routines kinfit package extensively compared results obtained KinGUI software, documented kinfit package vignette. KinGUI first widely used standard package field. Also, calculation χ2\\chi^2 error levels compared KinGUII, CAKE DegKin manager project sponsored German Umweltbundesamt (Ranke 2014).","code":"library(\"mkin\", quietly = TRUE) FOCUS_2006_L1 = data.frame( t = rep(c(0, 1, 2, 3, 5, 7, 14, 21, 30), each = 2), parent = c(88.3, 91.4, 85.6, 84.5, 78.9, 77.6, 72.0, 71.9, 50.3, 59.4, 47.0, 45.1, 27.7, 27.3, 10.0, 10.4, 2.9, 4.0)) FOCUS_2006_L1_mkin <- mkin_wide_to_long(FOCUS_2006_L1) m.L1.SFO <- mkinfit(\"SFO\", FOCUS_2006_L1_mkin, quiet = TRUE) summary(m.L1.SFO) ## mkin version used for fitting: 1.2.10 ## R version used for fitting: 4.4.2 ## Date of fit: Fri Feb 14 08:59:11 2025 ## Date of summary: Fri Feb 14 08:59:11 2025 ## ## Equations: ## d_parent/dt = - k_parent * parent ## ## Model predictions using solution type analytical ## ## Fitted using 133 model solutions performed in 0.01 s ## ## Error model: Constant variance ## ## Error model algorithm: OLS ## ## Starting values for parameters to be optimised: ## value type ## parent_0 89.85 state ## k_parent 0.10 deparm ## ## Starting values for the transformed parameters actually optimised: ## value lower upper ## parent_0 89.850000 -Inf Inf ## log_k_parent -2.302585 -Inf Inf ## ## Fixed parameter values: ## None ## ## Results: ## ## AIC BIC logLik ## 93.88778 96.5589 -43.94389 ## ## Optimised, transformed parameters with symmetric confidence intervals: ## Estimate Std. Error Lower Upper ## parent_0 92.470 1.28200 89.740 95.200 ## log_k_parent -2.347 0.03763 -2.428 -2.267 ## sigma 2.780 0.46330 1.792 3.767 ## ## Parameter correlation: ## parent_0 log_k_parent sigma ## parent_0 1.000e+00 6.186e-01 -1.516e-09 ## log_k_parent 6.186e-01 1.000e+00 -3.124e-09 ## sigma -1.516e-09 -3.124e-09 1.000e+00 ## ## Backtransformed parameters: ## Confidence intervals for internally transformed parameters are asymmetric. ## t-test (unrealistically) based on the assumption of normal distribution ## for estimators of untransformed parameters. ## Estimate t value Pr(>t) Lower Upper ## parent_0 92.47000 72.13 8.824e-21 89.74000 95.2000 ## k_parent 0.09561 26.57 2.487e-14 0.08824 0.1036 ## sigma 2.78000 6.00 1.216e-05 1.79200 3.7670 ## ## FOCUS Chi2 error levels in percent: ## err.min n.optim df ## All data 3.424 2 7 ## parent 3.424 2 7 ## ## Estimated disappearance times: ## DT50 DT90 ## parent 7.249 24.08 ## ## Data: ## time variable observed predicted residual ## 0 parent 88.3 92.471 -4.1710 ## 0 parent 91.4 92.471 -1.0710 ## 1 parent 85.6 84.039 1.5610 ## 1 parent 84.5 84.039 0.4610 ## 2 parent 78.9 76.376 2.5241 ## 2 parent 77.6 76.376 1.2241 ## 3 parent 72.0 69.412 2.5884 ## 3 parent 71.9 69.412 2.4884 ## 5 parent 50.3 57.330 -7.0301 ## 5 parent 59.4 57.330 2.0699 ## 7 parent 47.0 47.352 -0.3515 ## 7 parent 45.1 47.352 -2.2515 ## 14 parent 27.7 24.247 3.4528 ## 14 parent 27.3 24.247 3.0528 ## 21 parent 10.0 12.416 -2.4163 ## 21 parent 10.4 12.416 -2.0163 ## 30 parent 2.9 5.251 -2.3513 ## 30 parent 4.0 5.251 -1.2513 plot(m.L1.SFO, show_errmin = TRUE, main = \"FOCUS L1 - SFO\") mkinresplot(m.L1.SFO, ylab = \"Observed\", xlab = \"Time\") m.L1.FOMC <- mkinfit(\"FOMC\", FOCUS_2006_L1_mkin, quiet=TRUE) ## Warning in mkinfit(\"FOMC\", FOCUS_2006_L1_mkin, quiet = TRUE): Optimisation did not converge: ## false convergence (8) plot(m.L1.FOMC, show_errmin = TRUE, main = \"FOCUS L1 - FOMC\") summary(m.L1.FOMC, data = FALSE) ## Warning in sqrt(diag(covar)): NaNs produced ## Warning in cov2cor(ans$covar): diag(V) had non-positive or NA entries; the ## non-finite result may be dubious ## mkin version used for fitting: 1.2.10 ## R version used for fitting: 4.4.2 ## Date of fit: Fri Feb 14 08:59:11 2025 ## Date of summary: Fri Feb 14 08:59:11 2025 ## ## Equations: ## d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent ## ## Model predictions using solution type analytical ## ## Fitted using 342 model solutions performed in 0.023 s ## ## Error model: Constant variance ## ## Error model algorithm: OLS ## ## Starting values for parameters to be optimised: ## value type ## parent_0 89.85 state ## alpha 1.00 deparm ## beta 10.00 deparm ## ## Starting values for the transformed parameters actually optimised: ## value lower upper ## parent_0 89.850000 -Inf Inf ## log_alpha 0.000000 -Inf Inf ## log_beta 2.302585 -Inf Inf ## ## Fixed parameter values: ## None ## ## ## Warning(s): ## Optimisation did not converge: ## false convergence (8) ## ## Results: ## ## AIC BIC logLik ## 95.88782 99.44931 -43.94391 ## ## Optimised, transformed parameters with symmetric confidence intervals: ## Estimate Std. Error Lower Upper ## parent_0 92.47 1.2820 89.720 95.220 ## log_alpha 13.20 NaN NaN NaN ## log_beta 15.54 NaN NaN NaN ## sigma 2.78 0.4607 1.792 3.768 ## ## Parameter correlation: ## parent_0 log_alpha log_beta sigma ## parent_0 1.000000 NaN NaN 0.000603 ## log_alpha NaN 1 NaN NaN ## log_beta NaN NaN 1 NaN ## sigma 0.000603 NaN NaN 1.000000 ## ## Backtransformed parameters: ## Confidence intervals for internally transformed parameters are asymmetric. ## t-test (unrealistically) based on the assumption of normal distribution ## for estimators of untransformed parameters. ## Estimate t value Pr(>t) Lower Upper ## parent_0 9.247e+01 NA NA 89.720 95.220 ## alpha 5.386e+05 NA NA NA NA ## beta 5.633e+06 NA NA NA NA ## sigma 2.780e+00 NA NA 1.792 3.768 ## ## FOCUS Chi2 error levels in percent: ## err.min n.optim df ## All data 3.619 3 6 ## parent 3.619 3 6 ## ## Estimated disappearance times: ## DT50 DT90 DT50back ## parent 7.249 24.08 7.249"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"laboratory-data-l2","dir":"Articles","previous_headings":"","what":"Laboratory Data L2","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":"following code defines example dataset L2 FOCUS kinetics report, p. 287:","code":"FOCUS_2006_L2 = data.frame( t = rep(c(0, 1, 3, 7, 14, 28), each = 2), parent = c(96.1, 91.8, 41.4, 38.7, 19.3, 22.3, 4.6, 4.6, 2.6, 1.2, 0.3, 0.6)) FOCUS_2006_L2_mkin <- mkin_wide_to_long(FOCUS_2006_L2)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"sfo-fit-for-l2","dir":"Articles","previous_headings":"Laboratory Data L2","what":"SFO fit for L2","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":", SFO model fitted result plotted. residual plot can obtained simply adding argument show_residuals plot command. χ2\\chi^2 error level 14% suggests model fit well. also obvious plots fit, included residual plot. FOCUS kinetics report, stated apparent systematic error observed residual plot measured DT90 (approximately day 5), underestimation beyond point. may add difficult judge random nature residuals just three samplings days 0, 1 3. Also, clear priori consistent underestimation approximate DT90 irrelevant. However, can rationalised fact FOCUS fate models generally implement SFO kinetics.","code":"m.L2.SFO <- mkinfit(\"SFO\", FOCUS_2006_L2_mkin, quiet=TRUE) plot(m.L2.SFO, show_residuals = TRUE, show_errmin = TRUE, main = \"FOCUS L2 - SFO\")"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"fomc-fit-for-l2","dir":"Articles","previous_headings":"Laboratory Data L2","what":"FOMC fit for L2","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":"comparison, FOMC model fitted well, χ2\\chi^2 error level checked. error level χ2\\chi^2 test passes much lower case. Therefore, FOMC model provides better description data, less experimental error assumed order explain data.","code":"m.L2.FOMC <- mkinfit(\"FOMC\", FOCUS_2006_L2_mkin, quiet = TRUE) plot(m.L2.FOMC, show_residuals = TRUE, main = \"FOCUS L2 - FOMC\") summary(m.L2.FOMC, data = FALSE) ## mkin version used for fitting: 1.2.10 ## R version used for fitting: 4.4.2 ## Date of fit: Fri Feb 14 08:59:12 2025 ## Date of summary: Fri Feb 14 08:59:12 2025 ## ## Equations: ## d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent ## ## Model predictions using solution type analytical ## ## Fitted using 239 model solutions performed in 0.015 s ## ## Error model: Constant variance ## ## Error model algorithm: OLS ## ## Starting values for parameters to be optimised: ## value type ## parent_0 93.95 state ## alpha 1.00 deparm ## beta 10.00 deparm ## ## Starting values for the transformed parameters actually optimised: ## value lower upper ## parent_0 93.950000 -Inf Inf ## log_alpha 0.000000 -Inf Inf ## log_beta 2.302585 -Inf Inf ## ## Fixed parameter values: ## None ## ## Results: ## ## AIC BIC logLik ## 61.78966 63.72928 -26.89483 ## ## Optimised, transformed parameters with symmetric confidence intervals: ## Estimate Std. Error Lower Upper ## parent_0 93.7700 1.6130 90.05000 97.4900 ## log_alpha 0.3180 0.1559 -0.04149 0.6776 ## log_beta 0.2102 0.2493 -0.36460 0.7850 ## sigma 2.2760 0.4645 1.20500 3.3470 ## ## Parameter correlation: ## parent_0 log_alpha log_beta sigma ## parent_0 1.000e+00 -1.151e-01 -2.085e-01 -7.436e-09 ## log_alpha -1.151e-01 1.000e+00 9.741e-01 -1.617e-07 ## log_beta -2.085e-01 9.741e-01 1.000e+00 -1.386e-07 ## sigma -7.436e-09 -1.617e-07 -1.386e-07 1.000e+00 ## ## Backtransformed parameters: ## Confidence intervals for internally transformed parameters are asymmetric. ## t-test (unrealistically) based on the assumption of normal distribution ## for estimators of untransformed parameters. ## Estimate t value Pr(>t) Lower Upper ## parent_0 93.770 58.120 4.267e-12 90.0500 97.490 ## alpha 1.374 6.414 1.030e-04 0.9594 1.969 ## beta 1.234 4.012 1.942e-03 0.6945 2.192 ## sigma 2.276 4.899 5.977e-04 1.2050 3.347 ## ## FOCUS Chi2 error levels in percent: ## err.min n.optim df ## All data 6.205 3 3 ## parent 6.205 3 3 ## ## Estimated disappearance times: ## DT50 DT90 DT50back ## parent 0.8092 5.356 1.612"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"dfop-fit-for-l2","dir":"Articles","previous_headings":"Laboratory Data L2","what":"DFOP fit for L2","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":"Fitting four parameter DFOP model reduces χ2\\chi^2 error level. , DFOP model clearly best-fit model dataset L2 based chi^2 error level criterion.","code":"m.L2.DFOP <- mkinfit(\"DFOP\", FOCUS_2006_L2_mkin, quiet = TRUE) plot(m.L2.DFOP, show_residuals = TRUE, show_errmin = TRUE, main = \"FOCUS L2 - DFOP\") summary(m.L2.DFOP, data = FALSE) ## mkin version used for fitting: 1.2.10 ## R version used for fitting: 4.4.2 ## Date of fit: Fri Feb 14 08:59:12 2025 ## Date of summary: Fri Feb 14 08:59:12 2025 ## ## Equations: ## d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * ## time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) ## * parent ## ## Model predictions using solution type analytical ## ## Fitted using 581 model solutions performed in 0.042 s ## ## Error model: Constant variance ## ## Error model algorithm: OLS ## ## Starting values for parameters to be optimised: ## value type ## parent_0 93.95 state ## k1 0.10 deparm ## k2 0.01 deparm ## g 0.50 deparm ## ## Starting values for the transformed parameters actually optimised: ## value lower upper ## parent_0 93.950000 -Inf Inf ## log_k1 -2.302585 -Inf Inf ## log_k2 -4.605170 -Inf Inf ## g_qlogis 0.000000 -Inf Inf ## ## Fixed parameter values: ## None ## ## Results: ## ## AIC BIC logLik ## 52.36695 54.79148 -21.18347 ## ## Optimised, transformed parameters with symmetric confidence intervals: ## Estimate Std. Error Lower Upper ## parent_0 93.950 9.998e-01 91.5900 96.3100 ## log_k1 3.113 1.849e+03 -4369.0000 4375.0000 ## log_k2 -1.088 6.285e-02 -1.2370 -0.9394 ## g_qlogis -0.399 9.946e-02 -0.6342 -0.1638 ## sigma 1.414 2.886e-01 0.7314 2.0960 ## ## Parameter correlation: ## parent_0 log_k1 log_k2 g_qlogis sigma ## parent_0 1.000e+00 6.763e-07 -8.944e-10 2.665e-01 -1.083e-09 ## log_k1 6.763e-07 1.000e+00 1.112e-04 -2.187e-04 -1.027e-05 ## log_k2 -8.944e-10 1.112e-04 1.000e+00 -7.903e-01 9.464e-09 ## g_qlogis 2.665e-01 -2.187e-04 -7.903e-01 1.000e+00 -1.532e-08 ## sigma -1.083e-09 -1.027e-05 9.464e-09 -1.532e-08 1.000e+00 ## ## Backtransformed parameters: ## Confidence intervals for internally transformed parameters are asymmetric. ## t-test (unrealistically) based on the assumption of normal distribution ## for estimators of untransformed parameters. ## Estimate t value Pr(>t) Lower Upper ## parent_0 93.9500 9.397e+01 2.036e-12 91.5900 96.3100 ## k1 22.4900 5.533e-04 4.998e-01 0.0000 Inf ## k2 0.3369 1.591e+01 4.697e-07 0.2904 0.3909 ## g 0.4016 1.680e+01 3.238e-07 0.3466 0.4591 ## sigma 1.4140 4.899e+00 8.776e-04 0.7314 2.0960 ## ## FOCUS Chi2 error levels in percent: ## err.min n.optim df ## All data 2.53 4 2 ## parent 2.53 4 2 ## ## Estimated disappearance times: ## DT50 DT90 DT50back DT50_k1 DT50_k2 ## parent 0.5335 5.311 1.599 0.03083 2.058"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"laboratory-data-l3","dir":"Articles","previous_headings":"","what":"Laboratory Data L3","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":"following code defines example dataset L3 FOCUS kinetics report, p. 290.","code":"FOCUS_2006_L3 = data.frame( t = c(0, 3, 7, 14, 30, 60, 91, 120), parent = c(97.8, 60, 51, 43, 35, 22, 15, 12)) FOCUS_2006_L3_mkin <- mkin_wide_to_long(FOCUS_2006_L3)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"fit-multiple-models","dir":"Articles","previous_headings":"Laboratory Data L3","what":"Fit multiple models","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":"mkin version 0.9-39 (June 2015), can fit several models one datasets one call function mmkin. datasets passed list, case named list holding L3 dataset prepared . χ2\\chi^2 error level 21% well plot suggest SFO model fit well. FOMC model performs better, error level χ2\\chi^2 test passes 7%. Fitting four parameter DFOP model reduces χ2\\chi^2 error level considerably.","code":"# Only use one core here, not to offend the CRAN checks mm.L3 <- mmkin(c(\"SFO\", \"FOMC\", \"DFOP\"), cores = 1, list(\"FOCUS L3\" = FOCUS_2006_L3_mkin), quiet = TRUE) plot(mm.L3)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"accessing-mmkin-objects","dir":"Articles","previous_headings":"Laboratory Data L3","what":"Accessing mmkin objects","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":"objects returned mmkin arranged like matrix, models row index datasets column index. can extract summary plot e.g. DFOP fit, using square brackets indexing result use summary plot functions working mkinfit objects. , look model plot, confidence intervals parameters correlation matrix suggest parameter estimates reliable, DFOP model can used best-fit model based χ2\\chi^2 error level criterion laboratory data L3. also example standard t-test parameter g_ilr misleading, tests significant difference zero. case, zero appears correct value parameter, confidence interval backtransformed parameter g quite narrow.","code":"summary(mm.L3[[\"DFOP\", 1]]) ## mkin version used for fitting: 1.2.10 ## R version used for fitting: 4.4.2 ## Date of fit: Fri Feb 14 08:59:12 2025 ## Date of summary: Fri Feb 14 08:59:12 2025 ## ## Equations: ## d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * ## time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) ## * parent ## ## Model predictions using solution type analytical ## ## Fitted using 376 model solutions performed in 0.024 s ## ## Error model: Constant variance ## ## Error model algorithm: OLS ## ## Starting values for parameters to be optimised: ## value type ## parent_0 97.80 state ## k1 0.10 deparm ## k2 0.01 deparm ## g 0.50 deparm ## ## Starting values for the transformed parameters actually optimised: ## value lower upper ## parent_0 97.800000 -Inf Inf ## log_k1 -2.302585 -Inf Inf ## log_k2 -4.605170 -Inf Inf ## g_qlogis 0.000000 -Inf Inf ## ## Fixed parameter values: ## None ## ## Results: ## ## AIC BIC logLik ## 32.97732 33.37453 -11.48866 ## ## Optimised, transformed parameters with symmetric confidence intervals: ## Estimate Std. Error Lower Upper ## parent_0 97.7500 1.01900 94.5000 101.000000 ## log_k1 -0.6612 0.10050 -0.9812 -0.341300 ## log_k2 -4.2860 0.04322 -4.4230 -4.148000 ## g_qlogis -0.1739 0.05270 -0.3416 -0.006142 ## sigma 1.0170 0.25430 0.2079 1.827000 ## ## Parameter correlation: ## parent_0 log_k1 log_k2 g_qlogis sigma ## parent_0 1.000e+00 1.732e-01 2.282e-02 4.009e-01 -9.696e-08 ## log_k1 1.732e-01 1.000e+00 4.945e-01 -5.809e-01 7.148e-07 ## log_k2 2.282e-02 4.945e-01 1.000e+00 -6.812e-01 1.022e-06 ## g_qlogis 4.009e-01 -5.809e-01 -6.812e-01 1.000e+00 -7.930e-07 ## sigma -9.696e-08 7.148e-07 1.022e-06 -7.930e-07 1.000e+00 ## ## Backtransformed parameters: ## Confidence intervals for internally transformed parameters are asymmetric. ## t-test (unrealistically) based on the assumption of normal distribution ## for estimators of untransformed parameters. ## Estimate t value Pr(>t) Lower Upper ## parent_0 97.75000 95.960 1.248e-06 94.50000 101.00000 ## k1 0.51620 9.947 1.081e-03 0.37490 0.71090 ## k2 0.01376 23.140 8.840e-05 0.01199 0.01579 ## g 0.45660 34.920 2.581e-05 0.41540 0.49850 ## sigma 1.01700 4.000 1.400e-02 0.20790 1.82700 ## ## FOCUS Chi2 error levels in percent: ## err.min n.optim df ## All data 2.225 4 4 ## parent 2.225 4 4 ## ## Estimated disappearance times: ## DT50 DT90 DT50back DT50_k1 DT50_k2 ## parent 7.464 123 37.03 1.343 50.37 ## ## Data: ## time variable observed predicted residual ## 0 parent 97.8 97.75 0.05396 ## 3 parent 60.0 60.45 -0.44933 ## 7 parent 51.0 49.44 1.56338 ## 14 parent 43.0 43.84 -0.83632 ## 30 parent 35.0 35.15 -0.14707 ## 60 parent 22.0 23.26 -1.25919 ## 91 parent 15.0 15.18 -0.18181 ## 120 parent 12.0 10.19 1.81395 plot(mm.L3[[\"DFOP\", 1]], show_errmin = TRUE)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html","id":"laboratory-data-l4","dir":"Articles","previous_headings":"","what":"Laboratory Data L4","title":"Example evaluation of FOCUS Laboratory Data L1 to L3","text":"following code defines example dataset L4 FOCUS kinetics report, p. 293: Fits SFO FOMC models, plots summaries produced : χ2\\chi^2 error level 3.3% well plot suggest SFO model fits well. error level χ2\\chi^2 test passes slightly lower FOMC model. However, difference appears negligible.","code":"FOCUS_2006_L4 = data.frame( t = c(0, 3, 7, 14, 30, 60, 91, 120), parent = c(96.6, 96.3, 94.3, 88.8, 74.9, 59.9, 53.5, 49.0)) FOCUS_2006_L4_mkin <- mkin_wide_to_long(FOCUS_2006_L4) # Only use one core here, not to offend the CRAN checks mm.L4 <- mmkin(c(\"SFO\", \"FOMC\"), cores = 1, list(\"FOCUS L4\" = FOCUS_2006_L4_mkin), quiet = TRUE) plot(mm.L4) summary(mm.L4[[\"SFO\", 1]], data = FALSE) ## mkin version used for fitting: 1.2.10 ## R version used for fitting: 4.4.2 ## Date of fit: Fri Feb 14 08:59:13 2025 ## Date of summary: Fri Feb 14 08:59:13 2025 ## ## Equations: ## d_parent/dt = - k_parent * parent ## ## Model predictions using solution type analytical ## ## Fitted using 142 model solutions performed in 0.01 s ## ## Error model: Constant variance ## ## Error model algorithm: OLS ## ## Starting values for parameters to be optimised: ## value type ## parent_0 96.6 state ## k_parent 0.1 deparm ## ## Starting values for the transformed parameters actually optimised: ## value lower upper ## parent_0 96.600000 -Inf Inf ## log_k_parent -2.302585 -Inf Inf ## ## Fixed parameter values: ## None ## ## Results: ## ## AIC BIC logLik ## 47.12133 47.35966 -20.56067 ## ## Optimised, transformed parameters with symmetric confidence intervals: ## Estimate Std. Error Lower Upper ## parent_0 96.440 1.69900 92.070 100.800 ## log_k_parent -5.030 0.07059 -5.211 -4.848 ## sigma 3.162 0.79050 1.130 5.194 ## ## Parameter correlation: ## parent_0 log_k_parent sigma ## parent_0 1.000e+00 5.938e-01 3.430e-07 ## log_k_parent 5.938e-01 1.000e+00 5.885e-07 ## sigma 3.430e-07 5.885e-07 1.000e+00 ## ## Backtransformed parameters: ## Confidence intervals for internally transformed parameters are asymmetric. ## t-test (unrealistically) based on the assumption of normal distribution ## for estimators of untransformed parameters. ## Estimate t value Pr(>t) Lower Upper ## parent_0 96.440000 56.77 1.604e-08 92.070000 1.008e+02 ## k_parent 0.006541 14.17 1.578e-05 0.005455 7.842e-03 ## sigma 3.162000 4.00 5.162e-03 1.130000 5.194e+00 ## ## FOCUS Chi2 error levels in percent: ## err.min n.optim df ## All data 3.287 2 6 ## parent 3.287 2 6 ## ## Estimated disappearance times: ## DT50 DT90 ## parent 106 352 summary(mm.L4[[\"FOMC\", 1]], data = FALSE) ## mkin version used for fitting: 1.2.10 ## R version used for fitting: 4.4.2 ## Date of fit: Fri Feb 14 08:59:13 2025 ## Date of summary: Fri Feb 14 08:59:13 2025 ## ## Equations: ## d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent ## ## Model predictions using solution type analytical ## ## Fitted using 224 model solutions performed in 0.013 s ## ## Error model: Constant variance ## ## Error model algorithm: OLS ## ## Starting values for parameters to be optimised: ## value type ## parent_0 96.6 state ## alpha 1.0 deparm ## beta 10.0 deparm ## ## Starting values for the transformed parameters actually optimised: ## value lower upper ## parent_0 96.600000 -Inf Inf ## log_alpha 0.000000 -Inf Inf ## log_beta 2.302585 -Inf Inf ## ## Fixed parameter values: ## None ## ## Results: ## ## AIC BIC logLik ## 40.37255 40.69032 -16.18628 ## ## Optimised, transformed parameters with symmetric confidence intervals: ## Estimate Std. Error Lower Upper ## parent_0 99.1400 1.2670 95.6300 102.7000 ## log_alpha -0.3506 0.2616 -1.0770 0.3756 ## log_beta 4.1740 0.3938 3.0810 5.2670 ## sigma 1.8300 0.4575 0.5598 3.1000 ## ## Parameter correlation: ## parent_0 log_alpha log_beta sigma ## parent_0 1.000e+00 -4.696e-01 -5.543e-01 -2.447e-07 ## log_alpha -4.696e-01 1.000e+00 9.889e-01 2.198e-08 ## log_beta -5.543e-01 9.889e-01 1.000e+00 4.923e-08 ## sigma -2.447e-07 2.198e-08 4.923e-08 1.000e+00 ## ## Backtransformed parameters: ## Confidence intervals for internally transformed parameters are asymmetric. ## t-test (unrealistically) based on the assumption of normal distribution ## for estimators of untransformed parameters. ## Estimate t value Pr(>t) Lower Upper ## parent_0 99.1400 78.250 7.993e-08 95.6300 102.700 ## alpha 0.7042 3.823 9.365e-03 0.3407 1.456 ## beta 64.9800 2.540 3.201e-02 21.7800 193.900 ## sigma 1.8300 4.000 8.065e-03 0.5598 3.100 ## ## FOCUS Chi2 error levels in percent: ## err.min n.optim df ## All data 2.029 3 5 ## parent 2.029 3 5 ## ## Estimated disappearance times: ## DT50 DT90 DT50back ## parent 108.9 1644 494.9"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/mkin.html","id":"abstract","dir":"Articles","previous_headings":"","what":"Abstract","title":"Short introduction to mkin","text":"regulatory evaluation chemical substances like plant protection products (pesticides), biocides chemicals, degradation data play important role. evaluation pesticide degradation experiments, detailed guidance developed, based nonlinear optimisation. R add-package mkin implements fitting models recommended guidance within R calculates statistical measures data series within one compartments, parent metabolites.","code":"library(\"mkin\", quietly = TRUE) # Define the kinetic model m_SFO_SFO_SFO <- mkinmod(parent = mkinsub(\"SFO\", \"M1\"), M1 = mkinsub(\"SFO\", \"M2\"), M2 = mkinsub(\"SFO\"), use_of_ff = \"max\", quiet = TRUE) # Produce model predictions using some arbitrary parameters sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) d_SFO_SFO_SFO <- mkinpredict(m_SFO_SFO_SFO, c(k_parent = 0.03, f_parent_to_M1 = 0.5, k_M1 = log(2)/100, f_M1_to_M2 = 0.9, k_M2 = log(2)/50), c(parent = 100, M1 = 0, M2 = 0), sampling_times) # Generate a dataset by adding normally distributed errors with # standard deviation 3, for two replicates at each sampling time d_SFO_SFO_SFO_err <- add_err(d_SFO_SFO_SFO, reps = 2, sdfunc = function(x) 3, n = 1, seed = 123456789 ) # Fit the model to the dataset f_SFO_SFO_SFO <- mkinfit(m_SFO_SFO_SFO, d_SFO_SFO_SFO_err[[1]], quiet = TRUE) # Plot the results separately for parent and metabolites plot_sep(f_SFO_SFO_SFO, lpos = c(\"topright\", \"bottomright\", \"bottomright\"))"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/mkin.html","id":"background","dir":"Articles","previous_headings":"","what":"Background","title":"Short introduction to mkin","text":"mkin package (J. Ranke 2021) implements approach degradation kinetics recommended kinetics report provided FOrum Co-ordination pesticide fate models USe (FOCUS Work Group Degradation Kinetics 2006, 2014). covers data series describing decline one compound, data series transformation products (commonly termed metabolites) data series one compartment. possible include back reactions. Therefore, equilibrium reactions equilibrium partitioning can specified, although often leads overparameterisation model. first mkin code published 2010, commonly used tools fitting complex kinetic degradation models experimental data KinGUI (Schäfer et al. 2007), MATLAB based tool graphical user interface specifically tailored task included output proposed FOCUS Kinetics Workgroup, ModelMaker, general purpose compartment based tool providing infrastructure fitting dynamic simulation models based differential equations data. ‘mkin’ code first uploaded BerliOS development platform. taken , version control history imported R-Forge site (see e.g. initial commit 11 May 2010), code still updated. time, R package FME (Flexible Modelling Environment) (Soetaert Petzoldt 2010) already available, provided good basis developing package specifically tailored task. remaining challenge make easy possible users (including author vignette) specify system differential equations include output requested FOCUS guidance, χ2\\chi^2 error level defined guidance. Also, mkin introduced using analytical solutions parent kinetics improved optimization speed. Later, Eigenvalue based solutions introduced mkin case linear differential equations (.e. FOMC DFOP models used parent compound), greatly improving optimization speed cases. , become somehow obsolete, use compiled code described gives even faster execution times. possibility specify back-reactions biphasic model (SFORB) metabolites present mkin beginning.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/mkin.html","id":"derived-software-tools","dir":"Articles","previous_headings":"Background","what":"Derived software tools","title":"Short introduction to mkin","text":"Soon publication mkin, two derived tools published, namely KinGUII (developed Bayer Crop Science) CAKE (commissioned Tessella Syngenta), added graphical user interface (GUI), added fitting iteratively reweighted least squares (IRLS) characterisation likely parameter distributions Markov Chain Monte Carlo (MCMC) sampling. CAKE focuses smooth use experience, sacrificing flexibility model definition, originally allowing two primary metabolites parallel. current version 3.4 CAKE released May 2020 uses scheme six metabolites flexible arrangement supports biphasic modelling metabolites, support back-reactions (non-instantaneous equilibria). KinGUI offers even flexible widget specifying complex kinetic models. Back-reactions (non-instantaneous equilibria) supported early , 2014, simple first-order models specified transformation products. Starting KinGUII version 2.1, biphasic modelling metabolites also available KinGUII. graphical user interface (GUI) recently brought decent degree maturity browser based GUI named gmkin. Please see documentation page manual information. comparison scope, usability numerical results obtained tools recently published Johannes Ranke, Wöltjen, Meinecke (2018).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/mkin.html","id":"unique-features","dir":"Articles","previous_headings":"","what":"Unique features","title":"Short introduction to mkin","text":"Currently, main unique features available mkin speed increase using compiled code compiler present, parallel model fitting multicore machines using mmkin function, estimation parameter confidence intervals based transformed parameters (see ) possibility use two-component error model iteratively reweighted least squares fitting different variances variable introduced Gao et al. (2011) available mkin since version 0.9-22. release 0.9.49.5, IRLS algorithm complemented direct step-wise maximisation likelihood function, makes possible fit variance variable error model also two-component error model inspired error models developed analytical chemistry (Johannes Ranke Meinecke 2019).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/mkin.html","id":"internal-parameter-transformations","dir":"Articles","previous_headings":"","what":"Internal parameter transformations","title":"Short introduction to mkin","text":"rate constants, log transformation used, proposed Bates Watts (1988, 77, 149). Approximate intervals constructed transformed rate constants (compare Bates Watts 1988, 135), .e. logarithms. Confidence intervals rate constants obtained using appropriate backtransformation using exponential function. first version mkin allowing specifying models using formation fractions, home-made reparameterisation used order ensure sum formation fractions exceed unity. method still used current version KinGUII (v2.1 April 2014), modification allows fixing pathway sink zero. CAKE uses penalties objective function order enforce constraint. 2012, alternative reparameterisation formation fractions proposed together René Lehmann (J. Ranke Lehmann 2012), based isometric logratio transformation (ILR). aim improve validity linear approximation objective function parameter estimation procedure well subsequent calculation parameter confidence intervals. current version mkin, logit transformation used parameters bound 0 1, g parameter DFOP model.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/mkin.html","id":"confidence-intervals-based-on-transformed-parameters","dir":"Articles","previous_headings":"Internal parameter transformations","what":"Confidence intervals based on transformed parameters","title":"Short introduction to mkin","text":"first attempt providing improved parameter confidence intervals introduced mkin 2013, confidence intervals obtained FME transformed parameters simply backtransformed one one yield asymmetric confidence intervals backtransformed parameters. However, 1:1 relation rate constants model transformed parameters fitted model, parameters obtained isometric logratio transformation calculated set formation fractions quantify paths compounds formed specific parent compound, 1:1 relation exists. Therefore, parameter confidence intervals formation fractions obtained method appear valid case single transformation product, currently logit transformation used formation fraction. confidence intervals obtained backtransformation cases 1:1 relation transformed original parameter exist considered author vignette accurate obtained using re-estimation Hessian matrix backtransformation, implemented FME package.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/mkin.html","id":"parameter-t-test-based-on-untransformed-parameters","dir":"Articles","previous_headings":"Internal parameter transformations","what":"Parameter t-test based on untransformed parameters","title":"Short introduction to mkin","text":"standard output many nonlinear regression software packages includes results test significant difference zero parameters. test also recommended check validity rate constants FOCUS guidance (FOCUS Work Group Degradation Kinetics 2014, 96ff). argued precondition test, .e. normal distribution estimator parameters, fulfilled case nonlinear regression (J. Ranke Lehmann 2015). However, test commonly used industry, consultants national authorities order decide reliability parameter estimates, based FOCUS guidance mentioned . Therefore, results one-sided t-test included summary output mkin. reasonable test significant difference transformed parameters (e.g. log(k)log(k)) zero, t-test calculated based model definition parameter transformation, .e. similar way packages apply internal parameter transformation. note included mkin output, pointing fact t-test based unjustified assumption normal distribution parameter estimators.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"introduction","dir":"Articles > Prebuilt","previous_headings":"","what":"Introduction","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"purpose document test demonstrate nonlinear hierarchical models (NLHM) based parent degradation models SFO, FOMC, DFOP HS, serial formation two metabolites can fitted mkin package. assembled course work package 1.2 Project Number 173340 (Application nonlinear hierarchical models kinetic evaluation chemical degradation data) German Environment Agency carried 2022 2023. mkin package used version 1.2.10 currently development. newly introduced functionality used simplification excluding random effects set fits based related set fits reduced model, documentation starting parameters fit, starting parameters saem fits now listed summary. saemix package used backend fitting NLHM, also loaded make convergence plot function available. document processed knitr package, also provides kable function used improve display tabular data R markdown documents. parallel processing, parallel package used.","code":"library(mkin) library(knitr) library(saemix) library(parallel) n_cores <- detectCores() # We need to start a new cluster after defining a compiled model that is # saved as a DLL to the user directory, therefore we define a function # This is used again after defining the pathway model start_cluster <- function(n_cores) { if (Sys.info()[\"sysname\"] == \"Windows\") { ret <- makePSOCKcluster(n_cores) } else { ret <- makeForkCluster(n_cores) } return(ret) } cl <- start_cluster(n_cores)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"test-data","dir":"Articles > Prebuilt","previous_headings":"Introduction","what":"Test data","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"example data taken final addendum DAR 2014 distributed mkin package. Residue data time step normalisation factors read using function read_spreadsheet mkin package. function also performs time step normalisation. following tables show covariate data 5 datasets read spreadsheet file. Covariate data Dataset Nambsheim Dataset Tama Dataset Gross-Umstadt Dataset Sassafras Dataset Lleida","code":"data_file <- system.file( \"testdata\", \"cyantraniliprole_soil_efsa_2014.xlsx\", package = \"mkin\") cyan_ds <- read_spreadsheet(data_file, parent_only = FALSE) pH <- attr(cyan_ds, \"covariates\") kable(pH, caption = \"Covariate data\") for (ds_name in names(cyan_ds)) { print( kable(mkin_long_to_wide(cyan_ds[[ds_name]]), caption = paste(\"Dataset\", ds_name), booktabs = TRUE, row.names = FALSE)) cat(\"\\n\\\\clearpage\\n\") }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"parent-only-evaluations","dir":"Articles > Prebuilt","previous_headings":"","what":"Parent only evaluations","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"pathway fits long run times, evaluations parent data performed first, order determine hierarchical parent degradation model random effects degradation model parameters ill-defined. fits converged successfully. almost models, random effect initial concentration parent compound ill-defined. biexponential models DFOP SFORB, random effect one additional parameter ill-defined two-component error model used. Model comparison based AIC BIC indicates two-component error model preferable parent models exception DFOP. lowest AIC BIC values obtained FOMC model, followed SFORB DFOP.","code":"cyan_sep_const <- mmkin(c(\"SFO\", \"FOMC\", \"DFOP\", \"SFORB\", \"HS\"), cyan_ds, quiet = TRUE, cores = n_cores) cyan_sep_tc <- update(cyan_sep_const, error_model = \"tc\") cyan_saem_full <- mhmkin(list(cyan_sep_const, cyan_sep_tc)) status(cyan_saem_full) |> kable() illparms(cyan_saem_full) |> kable() anova(cyan_saem_full) |> kable(digits = 1) stopCluster(cl)"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"evaluations-with-pathway-established-previously","dir":"Articles > Prebuilt","previous_headings":"Pathway fits","what":"Evaluations with pathway established previously","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"test technical feasibility coupling relevant parent degradation models different transformation pathway models, list mkinmod models set . EU evaluation, parallel formation metabolites JCZ38 J9Z38 secondary formation metabolite JSE76 JCZ38 used. obtain suitable starting values NLHM fits, separate pathway fits performed datasets. separate fits converged successfully. biggest convergence problems seen using HS model constant variance. hierarchical pathway fits, random effects quantified corresponding parent data analyses excluded. code , output illparms function parent fits used argument no_random_effect mhmkin function. possibility introduced mkin version 1.2.2 currently development. status information individual fits shows fits completed successfully. matrix entries Fth FO indicate Fisher Information Matrix inverted fixed effects (theta) random effects (Omega), respectively. affected fits, ill-defined parameters determined using illparms function, relies Fisher Information Matrix. model comparisons suggest pathway fits using DFOP SFORB parent compound provide best fit. two parent model, successful fits shown . Plots fits parent models shown Appendix. DFOP pathway fit two-component error SFORB pathway fit two-component error closer graphical analysis Figures shows residues transformation product JCZ38 soils Tama Nambsheim observed later time points strongly systematically underestimated.","code":"if (!dir.exists(\"cyan_dlls\")) dir.create(\"cyan_dlls\") cyan_path_1 <- list( sfo_path_1 = mkinmod( cyan = mkinsub(\"SFO\", c(\"JCZ38\", \"J9Z38\")), JCZ38 = mkinsub(\"SFO\", \"JSE76\"), J9Z38 = mkinsub(\"SFO\"), JSE76 = mkinsub(\"SFO\"), quiet = TRUE, name = \"sfo_path_1\", dll_dir = \"cyan_dlls\", overwrite = TRUE), fomc_path_1 = mkinmod( cyan = mkinsub(\"FOMC\", c(\"JCZ38\", \"J9Z38\")), JCZ38 = mkinsub(\"SFO\", \"JSE76\"), J9Z38 = mkinsub(\"SFO\"), JSE76 = mkinsub(\"SFO\"), quiet = TRUE, name = \"fomc_path_1\", dll_dir = \"cyan_dlls\", overwrite = TRUE), dfop_path_1 = mkinmod( cyan = mkinsub(\"DFOP\", c(\"JCZ38\", \"J9Z38\")), JCZ38 = mkinsub(\"SFO\", \"JSE76\"), J9Z38 = mkinsub(\"SFO\"), JSE76 = mkinsub(\"SFO\"), quiet = TRUE, name = \"dfop_path_1\", dll_dir = \"cyan_dlls\", overwrite = TRUE), sforb_path_1 = mkinmod( cyan = mkinsub(\"SFORB\", c(\"JCZ38\", \"J9Z38\")), JCZ38 = mkinsub(\"SFO\", \"JSE76\"), J9Z38 = mkinsub(\"SFO\"), JSE76 = mkinsub(\"SFO\"), quiet = TRUE, name = \"sforb_path_1\", dll_dir = \"cyan_dlls\", overwrite = TRUE), hs_path_1 = mkinmod( cyan = mkinsub(\"HS\", c(\"JCZ38\", \"J9Z38\")), JCZ38 = mkinsub(\"SFO\", \"JSE76\"), J9Z38 = mkinsub(\"SFO\"), JSE76 = mkinsub(\"SFO\"), quiet = TRUE, name = \"hs_path_1\", dll_dir = \"cyan_dlls\", overwrite = TRUE) ) cl_path_1 <- start_cluster(n_cores) f_sep_1_const <- mmkin( cyan_path_1, cyan_ds, error_model = \"const\", cluster = cl_path_1, quiet = TRUE) status(f_sep_1_const) |> kable() f_sep_1_tc <- update(f_sep_1_const, error_model = \"tc\") status(f_sep_1_tc) |> kable() f_saem_1 <- mhmkin(list(f_sep_1_const, f_sep_1_tc), no_random_effect = illparms(cyan_saem_full), cluster = cl_path_1) status(f_saem_1) |> kable() illparms(f_saem_1) |> kable() anova(f_saem_1[, \"const\"]) |> kable(digits = 1) anova(f_saem_1[1:4, ]) |> kable(digits = 1) plot(f_saem_1[[\"dfop_path_1\", \"tc\"]]) plot(f_saem_1[[\"sforb_path_1\", \"tc\"]]) stopCluster(cl_path_1)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"alternative-pathway-fits","dir":"Articles > Prebuilt","previous_headings":"Pathway fits","what":"Alternative pathway fits","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"improve fit JCZ38, back-reaction JSE76 JCZ38 introduced alternative version transformation pathway, analogy back-reaction K5A78 K5A77. pairs transformation products pairs organic acid corresponding amide (Addendum 2014, p. 109). FOMC provided best fit parent, biexponential models DFOP SFORB provided best initial pathway fits, three parent models used alternative pathway fits. Using constant variance, separate fits converge exception fits Sassafras soil data. Using two-component error model, separate fits converge exception alternative pathway fit DFOP used parent Sassafras dataset. hierarchical fits alternative pathway completed successfully, exception model using FOMC parent compound constant variance error model. biphasic fits (DFOP SFORB parent compound), random effects formation fractions pathways JCZ38 JSE76, reverse pathway JSE76 JCZ38 ill-defined. variants using biexponential models DFOP SFORB parent compound two-component error model give lowest AIC BIC values plotted . Compared original pathway, AIC BIC values indicate large improvement. confirmed plots, show metabolite JCZ38 fitted much better model. FOMC pathway fit two-component error, alternative pathway DFOP pathway fit two-component error, alternative pathway SFORB pathway fit two-component error, alternative pathway","code":"cyan_path_2 <- list( fomc_path_2 = mkinmod( cyan = mkinsub(\"FOMC\", c(\"JCZ38\", \"J9Z38\")), JCZ38 = mkinsub(\"SFO\", \"JSE76\"), J9Z38 = mkinsub(\"SFO\"), JSE76 = mkinsub(\"SFO\", \"JCZ38\"), name = \"fomc_path_2\", quiet = TRUE, dll_dir = \"cyan_dlls\", overwrite = TRUE ), dfop_path_2 = mkinmod( cyan = mkinsub(\"DFOP\", c(\"JCZ38\", \"J9Z38\")), JCZ38 = mkinsub(\"SFO\", \"JSE76\"), J9Z38 = mkinsub(\"SFO\"), JSE76 = mkinsub(\"SFO\", \"JCZ38\"), name = \"dfop_path_2\", quiet = TRUE, dll_dir = \"cyan_dlls\", overwrite = TRUE ), sforb_path_2 = mkinmod( cyan = mkinsub(\"SFORB\", c(\"JCZ38\", \"J9Z38\")), JCZ38 = mkinsub(\"SFO\", \"JSE76\"), J9Z38 = mkinsub(\"SFO\"), JSE76 = mkinsub(\"SFO\", \"JCZ38\"), name = \"sforb_path_2\", quiet = TRUE, dll_dir = \"cyan_dlls\", overwrite = TRUE ) ) cl_path_2 <- start_cluster(n_cores) f_sep_2_const <- mmkin( cyan_path_2, cyan_ds, error_model = \"const\", cluster = cl_path_2, quiet = TRUE) status(f_sep_2_const) |> kable() f_sep_2_tc <- update(f_sep_2_const, error_model = \"tc\") status(f_sep_2_tc) |> kable() f_saem_2 <- mhmkin(list(f_sep_2_const, f_sep_2_tc), no_random_effect = illparms(cyan_saem_full[2:4, ]), cluster = cl_path_2) status(f_saem_2) |> kable() illparms(f_saem_2) |> kable() anova(f_saem_2[, \"tc\"]) |> kable(digits = 1) anova(f_saem_2[2:3,]) |> kable(digits = 1) plot(f_saem_2[[\"fomc_path_2\", \"tc\"]]) plot(f_saem_2[[\"dfop_path_2\", \"tc\"]]) plot(f_saem_2[[\"sforb_path_2\", \"tc\"]])"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"refinement-of-alternative-pathway-fits","dir":"Articles > Prebuilt","previous_headings":"Pathway fits","what":"Refinement of alternative pathway fits","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"ill-defined random effects identified parent fits pathway fits, excluded final evaluations . purpose, list character vectors created can indexed row column indices, contains degradation parameter names random effects excluded hierarchical fits contained f_saem_2. exception FOMC pathway fit constant variance, updated fits completed successfully. However, Fisher Information Matrix fixed effects (Fth) inverted, confidence intervals optimised parameters available. AIC BIC values best fit (DFOP pathway fit two-component error) lower previous fits alternative pathway, practical value refined evaluations limited confidence intervals obtained.","code":"no_ranef <- matrix(list(), nrow = 3, ncol = 2, dimnames = dimnames(f_saem_2)) no_ranef[[\"fomc_path_2\", \"const\"]] <- c(\"log_beta\", \"f_JCZ38_qlogis\", \"f_JSE76_qlogis\") no_ranef[[\"fomc_path_2\", \"tc\"]] <- c(\"cyan_0\", \"f_JCZ38_qlogis\", \"f_JSE76_qlogis\") no_ranef[[\"dfop_path_2\", \"const\"]] <- c(\"cyan_0\", \"f_JCZ38_qlogis\", \"f_JSE76_qlogis\") no_ranef[[\"dfop_path_2\", \"tc\"]] <- c(\"cyan_0\", \"log_k1\", \"f_JCZ38_qlogis\", \"f_JSE76_qlogis\") no_ranef[[\"sforb_path_2\", \"const\"]] <- c(\"cyan_free_0\", \"f_JCZ38_qlogis\", \"f_JSE76_qlogis\") no_ranef[[\"sforb_path_2\", \"tc\"]] <- c(\"cyan_free_0\", \"log_k_cyan_free_bound\", \"f_JCZ38_qlogis\", \"f_JSE76_qlogis\") clusterExport(cl_path_2, \"no_ranef\") f_saem_3 <- update(f_saem_2, no_random_effect = no_ranef, cluster = cl_path_2) status(f_saem_3) |> kable() illparms(f_saem_3) |> kable() anova(f_saem_3[, \"tc\"]) |> kable(digits = 1) anova(f_saem_3[2:3,]) |> kable(digits = 1) stopCluster(cl_path_2)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"conclusion","dir":"Articles > Prebuilt","previous_headings":"","what":"Conclusion","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"demonstrated relatively complex transformation pathway parallel formation two primary metabolites one secondary metabolite can fitted even data individual datasets quite different partly cover formation phase. run times pathway fits several hours, limiting practical feasibility iterative refinements based ill-defined parameters alternative checks parameter identifiability based multistart runs.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"acknowledgements","dir":"Articles > Prebuilt","previous_headings":"","what":"Acknowledgements","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"helpful comments Janina Wöltjen German Environment Agency gratefully acknowledged.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"plots-of-fits-that-were-not-refined-further","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Plots of fits that were not refined further","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"SFO pathway fit two-component error FOMC pathway fit two-component error HS pathway fit two-component error","code":"plot(f_saem_1[[\"sfo_path_1\", \"tc\"]]) plot(f_saem_1[[\"fomc_path_1\", \"tc\"]]) plot(f_saem_1[[\"sforb_path_1\", \"tc\"]])"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"pathway-1","dir":"Articles > Prebuilt","previous_headings":"Appendix > Hierarchical fit listings","what":"Pathway 1","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"Hierarchical SFO path 1 fit constant variance Hierarchical SFO path 1 fit two-component error Hierarchical FOMC path 1 fit constant variance Hierarchical FOMC path 1 fit two-component error Hierarchical DFOP path 1 fit constant variance Hierarchical DFOP path 1 fit two-component error Hierarchical SFORB path 1 fit constant variance Hierarchical SFORB path 1 fit two-component error Hierarchical HS path 1 fit constant variance","code":"saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:42:26 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - k_cyan * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * k_cyan * cyan - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_to_J9Z38 * k_cyan * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 437.151 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_0 log_k_cyan log_k_JCZ38 log_k_J9Z38 log_k_JSE76 95.3304 -3.8459 -3.1305 -5.0678 -5.3196 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis 0.8158 23.5335 11.8774 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_cyan log_k_JCZ38 log_k_J9Z38 log_k_JSE76 cyan_0 4.797 0.0000 0.000 0.000 0.0000 log_k_cyan 0.000 0.9619 0.000 0.000 0.0000 log_k_JCZ38 0.000 0.0000 2.139 0.000 0.0000 log_k_J9Z38 0.000 0.0000 0.000 1.639 0.0000 log_k_JSE76 0.000 0.0000 0.000 0.000 0.7894 f_cyan_ilr_1 0.000 0.0000 0.000 0.000 0.0000 f_cyan_ilr_2 0.000 0.0000 0.000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.0000 0.000 0.000 0.0000 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis cyan_0 0.0000 0.000 0.00 log_k_cyan 0.0000 0.000 0.00 log_k_JCZ38 0.0000 0.000 0.00 log_k_J9Z38 0.0000 0.000 0.00 log_k_JSE76 0.0000 0.000 0.00 f_cyan_ilr_1 0.7714 0.000 0.00 f_cyan_ilr_2 0.0000 9.247 0.00 f_JCZ38_qlogis 0.0000 0.000 16.61 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2693 2687 -1331 Optimised parameters: est. lower upper cyan_0 95.1279 9.354e+01 9.671e+01 log_k_cyan -3.8527 -4.367e+00 -3.338e+00 log_k_JCZ38 -3.0381 -4.187e+00 -1.889e+00 log_k_J9Z38 -5.0095 -5.623e+00 -4.396e+00 log_k_JSE76 -5.3357 -6.025e+00 -4.646e+00 f_cyan_ilr_1 0.8050 5.174e-01 1.093e+00 f_cyan_ilr_2 12.4820 -1.050e+06 1.051e+06 f_JCZ38_qlogis 1.2912 3.561e-01 2.226e+00 a.1 4.8393 NA NA SD.log_k_cyan 0.5840 NA NA SD.log_k_JCZ38 1.2740 NA NA SD.log_k_J9Z38 0.3172 NA NA SD.log_k_JSE76 0.5677 NA NA SD.f_cyan_ilr_1 0.2623 NA NA SD.f_cyan_ilr_2 1.3724 NA NA SD.f_JCZ38_qlogis 0.1464 NA NA Correlation is not available Random effects: est. lower upper SD.log_k_cyan 0.5840 NA NA SD.log_k_JCZ38 1.2740 NA NA SD.log_k_J9Z38 0.3172 NA NA SD.log_k_JSE76 0.5677 NA NA SD.f_cyan_ilr_1 0.2623 NA NA SD.f_cyan_ilr_2 1.3724 NA NA SD.f_JCZ38_qlogis 0.1464 NA NA Variance model: est. lower upper a.1 4.839 NA NA Backtransformed parameters: est. lower upper cyan_0 95.127935 93.542456 96.713413 k_cyan 0.021221 0.012687 0.035497 k_JCZ38 0.047924 0.015189 0.151213 k_J9Z38 0.006674 0.003612 0.012332 k_JSE76 0.004817 0.002417 0.009601 f_cyan_to_JCZ38 0.757402 NA NA f_cyan_to_J9Z38 0.242597 NA NA f_JCZ38_to_JSE76 0.784347 0.588098 0.902582 Resulting formation fractions: ff cyan_JCZ38 7.574e-01 cyan_J9Z38 2.426e-01 cyan_sink 9.839e-08 JCZ38_JSE76 7.843e-01 JCZ38_sink 2.157e-01 Estimated disappearance times: DT50 DT90 cyan 32.66 108.50 JCZ38 14.46 48.05 J9Z38 103.86 345.00 JSE76 143.91 478.04 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:42:06 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - k_cyan * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * k_cyan * cyan - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_to_J9Z38 * k_cyan * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 417.143 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_0 log_k_cyan log_k_JCZ38 log_k_J9Z38 log_k_JSE76 96.0039 -3.8907 -3.1276 -5.0069 -4.9367 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis 0.7937 22.3422 17.8932 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_cyan log_k_JCZ38 log_k_J9Z38 log_k_JSE76 cyan_0 4.859 0.000 0.00 0.00 0.0000 log_k_cyan 0.000 0.962 0.00 0.00 0.0000 log_k_JCZ38 0.000 0.000 2.04 0.00 0.0000 log_k_J9Z38 0.000 0.000 0.00 1.72 0.0000 log_k_JSE76 0.000 0.000 0.00 0.00 0.9076 f_cyan_ilr_1 0.000 0.000 0.00 0.00 0.0000 f_cyan_ilr_2 0.000 0.000 0.00 0.00 0.0000 f_JCZ38_qlogis 0.000 0.000 0.00 0.00 0.0000 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis cyan_0 0.0000 0.000 0.00 log_k_cyan 0.0000 0.000 0.00 log_k_JCZ38 0.0000 0.000 0.00 log_k_J9Z38 0.0000 0.000 0.00 log_k_JSE76 0.0000 0.000 0.00 f_cyan_ilr_1 0.7598 0.000 0.00 f_cyan_ilr_2 0.0000 8.939 0.00 f_JCZ38_qlogis 0.0000 0.000 14.49 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2658 2651 -1312 Optimised parameters: est. lower upper cyan_0 94.81681 NA NA log_k_cyan -3.91558 NA NA log_k_JCZ38 -3.12715 NA NA log_k_J9Z38 -5.04840 NA NA log_k_JSE76 -5.10443 NA NA f_cyan_ilr_1 0.80760 NA NA f_cyan_ilr_2 48.66960 NA NA f_JCZ38_qlogis 3.03397 NA NA a.1 3.93879 NA NA b.1 0.08057 NA NA SD.log_k_cyan 0.58921 NA NA SD.log_k_JCZ38 1.29813 NA NA SD.log_k_J9Z38 0.68372 NA NA SD.log_k_JSE76 0.35128 NA NA SD.f_cyan_ilr_1 0.38352 NA NA SD.f_cyan_ilr_2 4.98884 NA NA SD.f_JCZ38_qlogis 1.75636 NA NA Correlation is not available Random effects: est. lower upper SD.log_k_cyan 0.5892 NA NA SD.log_k_JCZ38 1.2981 NA NA SD.log_k_J9Z38 0.6837 NA NA SD.log_k_JSE76 0.3513 NA NA SD.f_cyan_ilr_1 0.3835 NA NA SD.f_cyan_ilr_2 4.9888 NA NA SD.f_JCZ38_qlogis 1.7564 NA NA Variance model: est. lower upper a.1 3.93879 NA NA b.1 0.08057 NA NA Backtransformed parameters: est. lower upper cyan_0 94.81681 NA NA k_cyan 0.01993 NA NA k_JCZ38 0.04384 NA NA k_J9Z38 0.00642 NA NA k_JSE76 0.00607 NA NA f_cyan_to_JCZ38 0.75807 NA NA f_cyan_to_J9Z38 0.24193 NA NA f_JCZ38_to_JSE76 0.95409 NA NA Resulting formation fractions: ff cyan_JCZ38 0.75807 cyan_J9Z38 0.24193 cyan_sink 0.00000 JCZ38_JSE76 0.95409 JCZ38_sink 0.04591 Estimated disappearance times: DT50 DT90 cyan 34.78 115.54 JCZ38 15.81 52.52 J9Z38 107.97 358.68 JSE76 114.20 379.35 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:42:57 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - (alpha/beta) * 1/((time/beta) + 1) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * (alpha/beta) * 1/((time/beta) + 1) * cyan - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_to_J9Z38 * (alpha/beta) * 1/((time/beta) + 1) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 468.609 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 101.2314 -3.3680 -5.1108 -5.9416 0.7144 f_cyan_ilr_2 f_JCZ38_qlogis log_alpha log_beta 7.0229 14.9234 -0.1791 2.9811 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 5.416 0.000 0.0 0.000 0.0000 log_k_JCZ38 0.000 2.439 0.0 0.000 0.0000 log_k_J9Z38 0.000 0.000 1.7 0.000 0.0000 log_k_JSE76 0.000 0.000 0.0 1.856 0.0000 f_cyan_ilr_1 0.000 0.000 0.0 0.000 0.7164 f_cyan_ilr_2 0.000 0.000 0.0 0.000 0.0000 f_JCZ38_qlogis 0.000 0.000 0.0 0.000 0.0000 log_alpha 0.000 0.000 0.0 0.000 0.0000 log_beta 0.000 0.000 0.0 0.000 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis log_alpha log_beta cyan_0 0.00 0.00 0.0000 0.0000 log_k_JCZ38 0.00 0.00 0.0000 0.0000 log_k_J9Z38 0.00 0.00 0.0000 0.0000 log_k_JSE76 0.00 0.00 0.0000 0.0000 f_cyan_ilr_1 0.00 0.00 0.0000 0.0000 f_cyan_ilr_2 11.57 0.00 0.0000 0.0000 f_JCZ38_qlogis 0.00 18.81 0.0000 0.0000 log_alpha 0.00 0.00 0.4144 0.0000 log_beta 0.00 0.00 0.0000 0.5077 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2428 2421 -1196 Optimised parameters: est. lower upper cyan_0 101.1664 98.51265 103.8202 log_k_JCZ38 -3.3883 -4.78250 -1.9941 log_k_J9Z38 -5.3087 -5.91564 -4.7017 log_k_JSE76 -6.1313 -7.30061 -4.9619 f_cyan_ilr_1 0.7456 0.43782 1.0534 f_cyan_ilr_2 0.8181 0.24956 1.3866 f_JCZ38_qlogis 2.0467 0.61165 3.4817 log_alpha -0.2391 -0.62806 0.1499 log_beta 2.8739 2.67664 3.0711 a.1 3.4160 3.17960 3.6525 SD.cyan_0 2.4355 0.40399 4.4671 SD.log_k_JCZ38 1.5654 0.57311 2.5576 SD.log_k_J9Z38 0.4645 -0.06533 0.9943 SD.log_k_JSE76 0.9841 0.10738 1.8609 SD.f_cyan_ilr_1 0.3285 0.10546 0.5515 SD.f_cyan_ilr_2 0.2276 -0.38711 0.8424 SD.f_JCZ38_qlogis 0.8340 -0.20970 1.8777 SD.log_alpha 0.4250 0.16017 0.6898 Correlation: cyan_0 l__JCZ3 l__J9Z3 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 log_lph log_k_JCZ38 -0.0159 log_k_J9Z38 -0.0546 0.0080 log_k_JSE76 -0.0337 0.0016 0.0074 f_cyan_ilr_1 -0.0095 0.0194 -0.1573 0.0003 f_cyan_ilr_2 -0.2733 0.0799 0.3059 0.0263 0.0125 f_JCZ38_qlogis 0.0755 -0.0783 -0.0516 0.1222 -0.1155 -0.5231 log_alpha -0.0567 0.0120 0.0351 0.0189 0.0040 0.0829 -0.0502 log_beta -0.2980 0.0461 0.1382 0.0758 0.0209 0.4079 -0.2053 0.2759 Random effects: est. lower upper SD.cyan_0 2.4355 0.40399 4.4671 SD.log_k_JCZ38 1.5654 0.57311 2.5576 SD.log_k_J9Z38 0.4645 -0.06533 0.9943 SD.log_k_JSE76 0.9841 0.10738 1.8609 SD.f_cyan_ilr_1 0.3285 0.10546 0.5515 SD.f_cyan_ilr_2 0.2276 -0.38711 0.8424 SD.f_JCZ38_qlogis 0.8340 -0.20970 1.8777 SD.log_alpha 0.4250 0.16017 0.6898 Variance model: est. lower upper a.1 3.416 3.18 3.652 Backtransformed parameters: est. lower upper cyan_0 1.012e+02 9.851e+01 103.82023 k_JCZ38 3.377e-02 8.375e-03 0.13614 k_J9Z38 4.948e-03 2.697e-03 0.00908 k_JSE76 2.174e-03 6.751e-04 0.00700 f_cyan_to_JCZ38 6.389e-01 NA NA f_cyan_to_J9Z38 2.226e-01 NA NA f_JCZ38_to_JSE76 8.856e-01 6.483e-01 0.97016 alpha 7.873e-01 5.336e-01 1.16166 beta 1.771e+01 1.454e+01 21.56509 Resulting formation fractions: ff cyan_JCZ38 0.6389 cyan_J9Z38 0.2226 cyan_sink 0.1385 JCZ38_JSE76 0.8856 JCZ38_sink 0.1144 Estimated disappearance times: DT50 DT90 DT50back cyan 25.00 312.06 93.94 JCZ38 20.53 68.19 NA J9Z38 140.07 465.32 NA JSE76 318.86 1059.22 NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:42:50 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - (alpha/beta) * 1/((time/beta) + 1) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * (alpha/beta) * 1/((time/beta) + 1) * cyan - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_to_J9Z38 * (alpha/beta) * 1/((time/beta) + 1) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 460.309 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 101.13294 -3.32499 -5.09097 -5.93566 0.71359 f_cyan_ilr_2 f_JCZ38_qlogis log_alpha log_beta 10.30315 14.62272 -0.09633 3.10634 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 5.649 0.000 0.00 0.00 0.0000 log_k_JCZ38 0.000 2.319 0.00 0.00 0.0000 log_k_J9Z38 0.000 0.000 1.73 0.00 0.0000 log_k_JSE76 0.000 0.000 0.00 1.86 0.0000 f_cyan_ilr_1 0.000 0.000 0.00 0.00 0.7183 f_cyan_ilr_2 0.000 0.000 0.00 0.00 0.0000 f_JCZ38_qlogis 0.000 0.000 0.00 0.00 0.0000 log_alpha 0.000 0.000 0.00 0.00 0.0000 log_beta 0.000 0.000 0.00 0.00 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis log_alpha log_beta cyan_0 0.00 0.00 0.0000 0.0000 log_k_JCZ38 0.00 0.00 0.0000 0.0000 log_k_J9Z38 0.00 0.00 0.0000 0.0000 log_k_JSE76 0.00 0.00 0.0000 0.0000 f_cyan_ilr_1 0.00 0.00 0.0000 0.0000 f_cyan_ilr_2 12.85 0.00 0.0000 0.0000 f_JCZ38_qlogis 0.00 18.54 0.0000 0.0000 log_alpha 0.00 0.00 0.3142 0.0000 log_beta 0.00 0.00 0.0000 0.7333 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2424 2416 -1193 Optimised parameters: est. lower upper cyan_0 100.65667 NA NA log_k_JCZ38 -3.45782 NA NA log_k_J9Z38 -5.23476 NA NA log_k_JSE76 -5.71827 NA NA f_cyan_ilr_1 0.68389 NA NA f_cyan_ilr_2 0.61027 NA NA f_JCZ38_qlogis 116.27482 NA NA log_alpha -0.14484 NA NA log_beta 3.03220 NA NA a.1 3.11051 NA NA b.1 0.04508 NA NA SD.log_k_JCZ38 1.39961 NA NA SD.log_k_J9Z38 0.57920 NA NA SD.log_k_JSE76 0.68364 NA NA SD.f_cyan_ilr_1 0.31477 NA NA SD.f_cyan_ilr_2 0.37716 NA NA SD.f_JCZ38_qlogis 5.52695 NA NA SD.log_alpha 0.22823 NA NA SD.log_beta 0.39161 NA NA Correlation is not available Random effects: est. lower upper SD.log_k_JCZ38 1.3996 NA NA SD.log_k_J9Z38 0.5792 NA NA SD.log_k_JSE76 0.6836 NA NA SD.f_cyan_ilr_1 0.3148 NA NA SD.f_cyan_ilr_2 0.3772 NA NA SD.f_JCZ38_qlogis 5.5270 NA NA SD.log_alpha 0.2282 NA NA SD.log_beta 0.3916 NA NA Variance model: est. lower upper a.1 3.11051 NA NA b.1 0.04508 NA NA Backtransformed parameters: est. lower upper cyan_0 1.007e+02 NA NA k_JCZ38 3.150e-02 NA NA k_J9Z38 5.328e-03 NA NA k_JSE76 3.285e-03 NA NA f_cyan_to_JCZ38 5.980e-01 NA NA f_cyan_to_J9Z38 2.273e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 NA NA alpha 8.652e-01 NA NA beta 2.074e+01 NA NA Resulting formation fractions: ff cyan_JCZ38 0.5980 cyan_J9Z38 0.2273 cyan_sink 0.1746 JCZ38_JSE76 1.0000 JCZ38_sink 0.0000 Estimated disappearance times: DT50 DT90 DT50back cyan 25.48 276.2 83.15 JCZ38 22.01 73.1 NA J9Z38 130.09 432.2 NA JSE76 210.98 700.9 NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:43:33 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 504.014 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 102.0643 -3.4008 -5.0024 -5.8612 0.6855 f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 g_qlogis 1.2366 13.6901 -1.8641 -4.5063 -0.6468 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 4.466 0.000 0.000 0.000 0.0000 log_k_JCZ38 0.000 2.382 0.000 0.000 0.0000 log_k_J9Z38 0.000 0.000 1.595 0.000 0.0000 log_k_JSE76 0.000 0.000 0.000 1.245 0.0000 f_cyan_ilr_1 0.000 0.000 0.000 0.000 0.6852 f_cyan_ilr_2 0.000 0.000 0.000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.000 0.000 0.000 0.0000 log_k1 0.000 0.000 0.000 0.000 0.0000 log_k2 0.000 0.000 0.000 0.000 0.0000 g_qlogis 0.000 0.000 0.000 0.000 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 g_qlogis cyan_0 0.00 0.00 0.0000 0.0000 0.000 log_k_JCZ38 0.00 0.00 0.0000 0.0000 0.000 log_k_J9Z38 0.00 0.00 0.0000 0.0000 0.000 log_k_JSE76 0.00 0.00 0.0000 0.0000 0.000 f_cyan_ilr_1 0.00 0.00 0.0000 0.0000 0.000 f_cyan_ilr_2 1.28 0.00 0.0000 0.0000 0.000 f_JCZ38_qlogis 0.00 16.08 0.0000 0.0000 0.000 log_k1 0.00 0.00 0.9866 0.0000 0.000 log_k2 0.00 0.00 0.0000 0.5953 0.000 g_qlogis 0.00 0.00 0.0000 0.0000 1.583 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2403 2395 -1182 Optimised parameters: est. lower upper cyan_0 102.5565 NA NA log_k_JCZ38 -3.4729 NA NA log_k_J9Z38 -5.1533 NA NA log_k_JSE76 -5.6669 NA NA f_cyan_ilr_1 0.6665 NA NA f_cyan_ilr_2 0.5191 NA NA f_JCZ38_qlogis 37.0113 NA NA log_k1 -1.8497 NA NA log_k2 -4.4931 NA NA g_qlogis -0.6383 NA NA a.1 3.2397 NA NA SD.log_k_JCZ38 1.4286 NA NA SD.log_k_J9Z38 0.5312 NA NA SD.log_k_JSE76 0.6627 NA NA SD.f_cyan_ilr_1 0.3013 NA NA SD.f_cyan_ilr_2 0.2980 NA NA SD.f_JCZ38_qlogis 0.1637 NA NA SD.log_k1 0.5069 NA NA SD.log_k2 0.3828 NA NA SD.g_qlogis 0.8641 NA NA Correlation is not available Random effects: est. lower upper SD.log_k_JCZ38 1.4286 NA NA SD.log_k_J9Z38 0.5312 NA NA SD.log_k_JSE76 0.6627 NA NA SD.f_cyan_ilr_1 0.3013 NA NA SD.f_cyan_ilr_2 0.2980 NA NA SD.f_JCZ38_qlogis 0.1637 NA NA SD.log_k1 0.5069 NA NA SD.log_k2 0.3828 NA NA SD.g_qlogis 0.8641 NA NA Variance model: est. lower upper a.1 3.24 NA NA Backtransformed parameters: est. lower upper cyan_0 1.026e+02 NA NA k_JCZ38 3.103e-02 NA NA k_J9Z38 5.780e-03 NA NA k_JSE76 3.459e-03 NA NA f_cyan_to_JCZ38 5.813e-01 NA NA f_cyan_to_J9Z38 2.265e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 NA NA k1 1.573e-01 NA NA k2 1.119e-02 NA NA g 3.456e-01 NA NA Resulting formation fractions: ff cyan_JCZ38 0.5813 cyan_J9Z38 0.2265 cyan_sink 0.1922 JCZ38_JSE76 1.0000 JCZ38_sink 0.0000 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 cyan 25.23 167.94 50.55 4.407 61.97 JCZ38 22.34 74.22 NA NA NA J9Z38 119.92 398.36 NA NA NA JSE76 200.41 665.76 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:46:07 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 658.043 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 101.3964 -3.3626 -4.9792 -5.8727 0.6814 f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 g_qlogis 6.8713 13.6901 -1.9222 -4.5035 -0.7172 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 5.317 0.000 0.000 0.000 0.0000 log_k_JCZ38 0.000 2.272 0.000 0.000 0.0000 log_k_J9Z38 0.000 0.000 1.633 0.000 0.0000 log_k_JSE76 0.000 0.000 0.000 1.271 0.0000 f_cyan_ilr_1 0.000 0.000 0.000 0.000 0.6839 f_cyan_ilr_2 0.000 0.000 0.000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.000 0.000 0.000 0.0000 log_k1 0.000 0.000 0.000 0.000 0.0000 log_k2 0.000 0.000 0.000 0.000 0.0000 g_qlogis 0.000 0.000 0.000 0.000 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 g_qlogis cyan_0 0.00 0.00 0.0000 0.0000 0.000 log_k_JCZ38 0.00 0.00 0.0000 0.0000 0.000 log_k_J9Z38 0.00 0.00 0.0000 0.0000 0.000 log_k_JSE76 0.00 0.00 0.0000 0.0000 0.000 f_cyan_ilr_1 0.00 0.00 0.0000 0.0000 0.000 f_cyan_ilr_2 11.95 0.00 0.0000 0.0000 0.000 f_JCZ38_qlogis 0.00 16.08 0.0000 0.0000 0.000 log_k1 0.00 0.00 0.9496 0.0000 0.000 log_k2 0.00 0.00 0.0000 0.5846 0.000 g_qlogis 0.00 0.00 0.0000 0.0000 1.719 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2398 2390 -1179 Optimised parameters: est. lower upper cyan_0 100.69709 NA NA log_k_JCZ38 -3.46669 NA NA log_k_J9Z38 -5.05076 NA NA log_k_JSE76 -5.55558 NA NA f_cyan_ilr_1 0.66045 NA NA f_cyan_ilr_2 0.84275 NA NA f_JCZ38_qlogis 64.22404 NA NA log_k1 -2.17715 NA NA log_k2 -4.55002 NA NA g_qlogis -0.55920 NA NA a.1 2.95785 NA NA b.1 0.04456 NA NA SD.log_k_JCZ38 1.39881 NA NA SD.log_k_J9Z38 0.67788 NA NA SD.log_k_JSE76 0.52603 NA NA SD.f_cyan_ilr_1 0.32490 NA NA SD.f_cyan_ilr_2 0.53923 NA NA SD.f_JCZ38_qlogis 2.75576 NA NA SD.log_k2 0.30694 NA NA SD.g_qlogis 0.83619 NA NA Correlation is not available Random effects: est. lower upper SD.log_k_JCZ38 1.3988 NA NA SD.log_k_J9Z38 0.6779 NA NA SD.log_k_JSE76 0.5260 NA NA SD.f_cyan_ilr_1 0.3249 NA NA SD.f_cyan_ilr_2 0.5392 NA NA SD.f_JCZ38_qlogis 2.7558 NA NA SD.log_k2 0.3069 NA NA SD.g_qlogis 0.8362 NA NA Variance model: est. lower upper a.1 2.95785 NA NA b.1 0.04456 NA NA Backtransformed parameters: est. lower upper cyan_0 1.007e+02 NA NA k_JCZ38 3.122e-02 NA NA k_J9Z38 6.404e-03 NA NA k_JSE76 3.866e-03 NA NA f_cyan_to_JCZ38 6.187e-01 NA NA f_cyan_to_J9Z38 2.431e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 NA NA k1 1.134e-01 NA NA k2 1.057e-02 NA NA g 3.637e-01 NA NA Resulting formation fractions: ff cyan_JCZ38 0.6187 cyan_J9Z38 0.2431 cyan_sink 0.1382 JCZ38_JSE76 1.0000 JCZ38_sink 0.0000 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 cyan 26.35 175.12 52.72 6.114 65.6 JCZ38 22.20 73.75 NA NA NA J9Z38 108.23 359.53 NA NA NA JSE76 179.30 595.62 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:43:36 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * cyan_free + k_cyan_bound_free * cyan_bound d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * cyan_bound d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 507.042 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_free_0 log_k_cyan_free log_k_cyan_free_bound 102.0643 -2.8987 -2.7077 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 -3.4717 -3.4008 -5.0024 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 -5.8613 0.6855 1.2366 f_JCZ38_qlogis 13.7395 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_free_0 log_k_cyan_free log_k_cyan_free_bound cyan_free_0 4.466 0.0000 0.000 log_k_cyan_free 0.000 0.6158 0.000 log_k_cyan_free_bound 0.000 0.0000 1.463 log_k_cyan_bound_free 0.000 0.0000 0.000 log_k_JCZ38 0.000 0.0000 0.000 log_k_J9Z38 0.000 0.0000 0.000 log_k_JSE76 0.000 0.0000 0.000 f_cyan_ilr_1 0.000 0.0000 0.000 f_cyan_ilr_2 0.000 0.0000 0.000 f_JCZ38_qlogis 0.000 0.0000 0.000 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 cyan_free_0 0.000 0.000 0.000 0.000 log_k_cyan_free 0.000 0.000 0.000 0.000 log_k_cyan_free_bound 0.000 0.000 0.000 0.000 log_k_cyan_bound_free 1.058 0.000 0.000 0.000 log_k_JCZ38 0.000 2.382 0.000 0.000 log_k_J9Z38 0.000 0.000 1.595 0.000 log_k_JSE76 0.000 0.000 0.000 1.245 f_cyan_ilr_1 0.000 0.000 0.000 0.000 f_cyan_ilr_2 0.000 0.000 0.000 0.000 f_JCZ38_qlogis 0.000 0.000 0.000 0.000 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis cyan_free_0 0.0000 0.00 0.00 log_k_cyan_free 0.0000 0.00 0.00 log_k_cyan_free_bound 0.0000 0.00 0.00 log_k_cyan_bound_free 0.0000 0.00 0.00 log_k_JCZ38 0.0000 0.00 0.00 log_k_J9Z38 0.0000 0.00 0.00 log_k_JSE76 0.0000 0.00 0.00 f_cyan_ilr_1 0.6852 0.00 0.00 f_cyan_ilr_2 0.0000 1.28 0.00 f_JCZ38_qlogis 0.0000 0.00 16.13 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2401 2394 -1181 Optimised parameters: est. lower upper cyan_free_0 102.8136 NA NA log_k_cyan_free -2.7935 NA NA log_k_cyan_free_bound -2.5440 NA NA log_k_cyan_bound_free -3.4303 NA NA log_k_JCZ38 -3.5010 NA NA log_k_J9Z38 -5.1226 NA NA log_k_JSE76 -5.6314 NA NA f_cyan_ilr_1 0.6609 NA NA f_cyan_ilr_2 0.5085 NA NA f_JCZ38_qlogis 44.0153 NA NA a.1 3.2318 NA NA SD.log_k_cyan_free 0.3211 NA NA SD.log_k_cyan_free_bound 0.8408 NA NA SD.log_k_cyan_bound_free 0.5724 NA NA SD.log_k_JCZ38 1.4925 NA NA SD.log_k_J9Z38 0.5816 NA NA SD.log_k_JSE76 0.6037 NA NA SD.f_cyan_ilr_1 0.3115 NA NA SD.f_cyan_ilr_2 0.3436 NA NA SD.f_JCZ38_qlogis 4.8937 NA NA Correlation is not available Random effects: est. lower upper SD.log_k_cyan_free 0.3211 NA NA SD.log_k_cyan_free_bound 0.8408 NA NA SD.log_k_cyan_bound_free 0.5724 NA NA SD.log_k_JCZ38 1.4925 NA NA SD.log_k_J9Z38 0.5816 NA NA SD.log_k_JSE76 0.6037 NA NA SD.f_cyan_ilr_1 0.3115 NA NA SD.f_cyan_ilr_2 0.3436 NA NA SD.f_JCZ38_qlogis 4.8937 NA NA Variance model: est. lower upper a.1 3.232 NA NA Backtransformed parameters: est. lower upper cyan_free_0 1.028e+02 NA NA k_cyan_free 6.120e-02 NA NA k_cyan_free_bound 7.855e-02 NA NA k_cyan_bound_free 3.238e-02 NA NA k_JCZ38 3.017e-02 NA NA k_J9Z38 5.961e-03 NA NA k_JSE76 3.584e-03 NA NA f_cyan_free_to_JCZ38 5.784e-01 NA NA f_cyan_free_to_J9Z38 2.271e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 NA NA Estimated Eigenvalues of SFORB model(s): cyan_b1 cyan_b2 cyan_g 0.15973 0.01241 0.33124 Resulting formation fractions: ff cyan_free_JCZ38 0.5784 cyan_free_J9Z38 0.2271 cyan_free_sink 0.1945 cyan_free 1.0000 JCZ38_JSE76 1.0000 JCZ38_sink 0.0000 Estimated disappearance times: DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 cyan 24.51 153.18 46.11 4.34 55.87 JCZ38 22.98 76.33 NA NA NA J9Z38 116.28 386.29 NA NA NA JSE76 193.42 642.53 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:46:14 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * cyan_free + k_cyan_bound_free * cyan_bound d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * cyan_bound d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 664.11 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_free_0 log_k_cyan_free log_k_cyan_free_bound 101.3964 -2.9881 -2.7949 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 -3.4376 -3.3626 -4.9792 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 -5.8727 0.6814 6.7399 f_JCZ38_qlogis 13.7395 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_free_0 log_k_cyan_free log_k_cyan_free_bound cyan_free_0 5.317 0.0000 0.000 log_k_cyan_free 0.000 0.7301 0.000 log_k_cyan_free_bound 0.000 0.0000 1.384 log_k_cyan_bound_free 0.000 0.0000 0.000 log_k_JCZ38 0.000 0.0000 0.000 log_k_J9Z38 0.000 0.0000 0.000 log_k_JSE76 0.000 0.0000 0.000 f_cyan_ilr_1 0.000 0.0000 0.000 f_cyan_ilr_2 0.000 0.0000 0.000 f_JCZ38_qlogis 0.000 0.0000 0.000 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 cyan_free_0 0.000 0.000 0.000 0.000 log_k_cyan_free 0.000 0.000 0.000 0.000 log_k_cyan_free_bound 0.000 0.000 0.000 0.000 log_k_cyan_bound_free 1.109 0.000 0.000 0.000 log_k_JCZ38 0.000 2.272 0.000 0.000 log_k_J9Z38 0.000 0.000 1.633 0.000 log_k_JSE76 0.000 0.000 0.000 1.271 f_cyan_ilr_1 0.000 0.000 0.000 0.000 f_cyan_ilr_2 0.000 0.000 0.000 0.000 f_JCZ38_qlogis 0.000 0.000 0.000 0.000 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis cyan_free_0 0.0000 0.00 0.00 log_k_cyan_free 0.0000 0.00 0.00 log_k_cyan_free_bound 0.0000 0.00 0.00 log_k_cyan_bound_free 0.0000 0.00 0.00 log_k_JCZ38 0.0000 0.00 0.00 log_k_J9Z38 0.0000 0.00 0.00 log_k_JSE76 0.0000 0.00 0.00 f_cyan_ilr_1 0.6838 0.00 0.00 f_cyan_ilr_2 0.0000 11.69 0.00 f_JCZ38_qlogis 0.0000 0.00 16.13 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2400 2392 -1180 Optimised parameters: est. lower upper cyan_free_0 100.56004 NA NA log_k_cyan_free -3.12657 NA NA log_k_cyan_free_bound -3.16825 NA NA log_k_cyan_bound_free -3.66003 NA NA log_k_JCZ38 -3.47278 NA NA log_k_J9Z38 -5.06823 NA NA log_k_JSE76 -5.54327 NA NA f_cyan_ilr_1 0.66631 NA NA f_cyan_ilr_2 0.82898 NA NA f_JCZ38_qlogis 38.31115 NA NA a.1 2.98352 NA NA b.1 0.04388 NA NA SD.log_k_cyan_free 0.49145 NA NA SD.log_k_cyan_bound_free 0.27347 NA NA SD.log_k_JCZ38 1.41193 NA NA SD.log_k_J9Z38 0.66073 NA NA SD.log_k_JSE76 0.55885 NA NA SD.f_cyan_ilr_1 0.33020 NA NA SD.f_cyan_ilr_2 0.51367 NA NA SD.f_JCZ38_qlogis 5.52122 NA NA Correlation is not available Random effects: est. lower upper SD.log_k_cyan_free 0.4914 NA NA SD.log_k_cyan_bound_free 0.2735 NA NA SD.log_k_JCZ38 1.4119 NA NA SD.log_k_J9Z38 0.6607 NA NA SD.log_k_JSE76 0.5589 NA NA SD.f_cyan_ilr_1 0.3302 NA NA SD.f_cyan_ilr_2 0.5137 NA NA SD.f_JCZ38_qlogis 5.5212 NA NA Variance model: est. lower upper a.1 2.98352 NA NA b.1 0.04388 NA NA Backtransformed parameters: est. lower upper cyan_free_0 1.006e+02 NA NA k_cyan_free 4.387e-02 NA NA k_cyan_free_bound 4.208e-02 NA NA k_cyan_bound_free 2.573e-02 NA NA k_JCZ38 3.103e-02 NA NA k_J9Z38 6.294e-03 NA NA k_JSE76 3.914e-03 NA NA f_cyan_free_to_JCZ38 6.188e-01 NA NA f_cyan_free_to_J9Z38 2.412e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 NA NA Estimated Eigenvalues of SFORB model(s): cyan_b1 cyan_b2 cyan_g 0.10044 0.01124 0.36580 Resulting formation fractions: ff cyan_free_JCZ38 0.6188 cyan_free_J9Z38 0.2412 cyan_free_sink 0.1400 cyan_free 1.0000 JCZ38_JSE76 1.0000 JCZ38_sink 0.0000 Estimated disappearance times: DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 cyan 26.05 164.4 49.48 6.901 61.67 JCZ38 22.34 74.2 NA NA NA J9Z38 110.14 365.9 NA NA NA JSE76 177.11 588.3 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:43:42 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - ifelse(time <= tb, k1, k2) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * ifelse(time <= tb, k1, k2) * cyan - k_JCZ38 * JCZ38 d_J9Z38/dt = + f_cyan_to_J9Z38 * ifelse(time <= tb, k1, k2) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 512.818 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 102.8845 -3.4495 -4.9355 -5.6040 0.6468 f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 log_tb 1.2396 9.7220 -2.9079 -4.1810 1.7813 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 5.406 0.00 0.00 0.000 0.0000 log_k_JCZ38 0.000 2.33 0.00 0.000 0.0000 log_k_J9Z38 0.000 0.00 1.59 0.000 0.0000 log_k_JSE76 0.000 0.00 0.00 1.013 0.0000 f_cyan_ilr_1 0.000 0.00 0.00 0.000 0.6367 f_cyan_ilr_2 0.000 0.00 0.00 0.000 0.0000 f_JCZ38_qlogis 0.000 0.00 0.00 0.000 0.0000 log_k1 0.000 0.00 0.00 0.000 0.0000 log_k2 0.000 0.00 0.00 0.000 0.0000 log_tb 0.000 0.00 0.00 0.000 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis log_k1 log_k2 log_tb cyan_0 0.000 0.00 0.0000 0.0000 0.0000 log_k_JCZ38 0.000 0.00 0.0000 0.0000 0.0000 log_k_J9Z38 0.000 0.00 0.0000 0.0000 0.0000 log_k_JSE76 0.000 0.00 0.0000 0.0000 0.0000 f_cyan_ilr_1 0.000 0.00 0.0000 0.0000 0.0000 f_cyan_ilr_2 2.038 0.00 0.0000 0.0000 0.0000 f_JCZ38_qlogis 0.000 10.33 0.0000 0.0000 0.0000 log_k1 0.000 0.00 0.7006 0.0000 0.0000 log_k2 0.000 0.00 0.0000 0.8928 0.0000 log_tb 0.000 0.00 0.0000 0.0000 0.6773 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2427 2419 -1194 Optimised parameters: est. lower upper cyan_0 101.9660 1.005e+02 1.035e+02 log_k_JCZ38 -3.4698 -4.716e+00 -2.224e+00 log_k_J9Z38 -5.0947 -5.740e+00 -4.450e+00 log_k_JSE76 -5.5977 -6.321e+00 -4.875e+00 f_cyan_ilr_1 0.6595 3.734e-01 9.456e-01 f_cyan_ilr_2 0.5905 1.664e-01 1.015e+00 f_JCZ38_qlogis 25.8627 -4.224e+05 4.225e+05 log_k1 -3.0884 -3.453e+00 -2.723e+00 log_k2 -4.3877 -4.778e+00 -3.998e+00 log_tb 2.3057 1.715e+00 2.896e+00 a.1 3.3228 NA NA SD.log_k_JCZ38 1.4071 NA NA SD.log_k_J9Z38 0.5774 NA NA SD.log_k_JSE76 0.6214 NA NA SD.f_cyan_ilr_1 0.3058 NA NA SD.f_cyan_ilr_2 0.3470 NA NA SD.f_JCZ38_qlogis 0.0644 NA NA SD.log_k1 0.3994 NA NA SD.log_k2 0.4373 NA NA SD.log_tb 0.6419 NA NA Correlation is not available Random effects: est. lower upper SD.log_k_JCZ38 1.4071 NA NA SD.log_k_J9Z38 0.5774 NA NA SD.log_k_JSE76 0.6214 NA NA SD.f_cyan_ilr_1 0.3058 NA NA SD.f_cyan_ilr_2 0.3470 NA NA SD.f_JCZ38_qlogis 0.0644 NA NA SD.log_k1 0.3994 NA NA SD.log_k2 0.4373 NA NA SD.log_tb 0.6419 NA NA Variance model: est. lower upper a.1 3.323 NA NA Backtransformed parameters: est. lower upper cyan_0 1.020e+02 1.005e+02 1.035e+02 k_JCZ38 3.112e-02 8.951e-03 1.082e-01 k_J9Z38 6.129e-03 3.216e-03 1.168e-02 k_JSE76 3.706e-03 1.798e-03 7.639e-03 f_cyan_to_JCZ38 5.890e-01 NA NA f_cyan_to_J9Z38 2.318e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 0.000e+00 1.000e+00 k1 4.558e-02 3.164e-02 6.565e-02 k2 1.243e-02 8.417e-03 1.835e-02 tb 1.003e+01 5.557e+00 1.811e+01 Resulting formation fractions: ff cyan_JCZ38 5.890e-01 cyan_J9Z38 2.318e-01 cyan_sink 1.793e-01 JCZ38_JSE76 1.000e+00 JCZ38_sink 5.861e-12 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 cyan 29.02 158.51 47.72 15.21 55.77 JCZ38 22.27 73.98 NA NA NA J9Z38 113.09 375.69 NA NA NA JSE76 187.01 621.23 NA NA NA"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"pathway-2","dir":"Articles > Prebuilt","previous_headings":"Appendix > Hierarchical fit listings","what":"Pathway 2","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"Hierarchical FOMC path 2 fit two-component error Hierarchical DFOP path 2 fit constant variance Hierarchical DFOP path 2 fit two-component error Hierarchical SFORB path 2 fit constant variance Hierarchical SFORB path 2 fit two-component error","code":"saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:54:36 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - (alpha/beta) * 1/((time/beta) + 1) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * (alpha/beta) * 1/((time/beta) + 1) * cyan - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_to_J9Z38 * (alpha/beta) * 1/((time/beta) + 1) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 491.928 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 102.4477 -1.8631 -5.1087 -2.5114 0.6826 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta 4.7944 15.9616 13.1566 -0.1564 2.9781 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 7.701 0.000 0.000 0.000 0.0000 log_k_JCZ38 0.000 1.448 0.000 0.000 0.0000 log_k_J9Z38 0.000 0.000 1.724 0.000 0.0000 log_k_JSE76 0.000 0.000 0.000 3.659 0.0000 f_cyan_ilr_1 0.000 0.000 0.000 0.000 0.6356 f_cyan_ilr_2 0.000 0.000 0.000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.000 0.000 0.000 0.0000 f_JSE76_qlogis 0.000 0.000 0.000 0.000 0.0000 log_alpha 0.000 0.000 0.000 0.000 0.0000 log_beta 0.000 0.000 0.000 0.000 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta cyan_0 0.00 0.00 0.00 0.0000 0.0000 log_k_JCZ38 0.00 0.00 0.00 0.0000 0.0000 log_k_J9Z38 0.00 0.00 0.00 0.0000 0.0000 log_k_JSE76 0.00 0.00 0.00 0.0000 0.0000 f_cyan_ilr_1 0.00 0.00 0.00 0.0000 0.0000 f_cyan_ilr_2 10.32 0.00 0.00 0.0000 0.0000 f_JCZ38_qlogis 0.00 12.23 0.00 0.0000 0.0000 f_JSE76_qlogis 0.00 0.00 14.99 0.0000 0.0000 log_alpha 0.00 0.00 0.00 0.3924 0.0000 log_beta 0.00 0.00 0.00 0.0000 0.5639 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2249 2241 -1104 Optimised parameters: est. lower upper cyan_0 101.55265 9.920e+01 103.9059 log_k_JCZ38 -2.32302 -2.832e+00 -1.8142 log_k_J9Z38 -5.13082 -5.942e+00 -4.3199 log_k_JSE76 -3.01756 -4.262e+00 -1.7736 f_cyan_ilr_1 0.70850 3.657e-01 1.0513 f_cyan_ilr_2 0.95775 2.612e-01 1.6543 f_JCZ38_qlogis 3.86105 9.248e-01 6.7973 f_JSE76_qlogis 7.51583 -1.120e+02 127.0392 log_alpha -0.15308 -4.508e-01 0.1446 log_beta 2.99165 2.711e+00 3.2720 a.1 2.04034 1.843e+00 2.2382 b.1 0.06924 5.749e-02 0.0810 SD.log_k_JCZ38 0.50818 1.390e-01 0.8774 SD.log_k_J9Z38 0.86597 2.652e-01 1.4667 SD.log_k_JSE76 1.38092 4.864e-01 2.2754 SD.f_cyan_ilr_1 0.38204 1.354e-01 0.6286 SD.f_cyan_ilr_2 0.55129 7.198e-02 1.0306 SD.f_JCZ38_qlogis 1.88457 1.711e-02 3.7520 SD.f_JSE76_qlogis 2.64018 -2.450e+03 2454.9447 SD.log_alpha 0.31860 1.047e-01 0.5325 SD.log_beta 0.24195 1.273e-02 0.4712 Correlation: cyan_0 l__JCZ3 l__J9Z3 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 f_JSE76 log_k_JCZ38 -0.0235 log_k_J9Z38 -0.0442 0.0047 log_k_JSE76 -0.0023 0.0966 0.0006 f_cyan_ilr_1 -0.0032 0.0070 -0.0536 -0.0001 f_cyan_ilr_2 -0.5189 0.0452 0.1152 0.0013 -0.0304 f_JCZ38_qlogis 0.1088 -0.0848 -0.0240 0.0040 -0.0384 -0.2303 f_JSE76_qlogis -0.0545 0.1315 0.0195 0.0020 0.0252 0.1737 -0.5939 log_alpha -0.0445 0.0056 0.0261 0.0019 -0.0055 0.0586 -0.0239 -0.0284 log_beta -0.2388 0.0163 0.0566 0.0040 -0.0078 0.2183 -0.0714 -0.0332 log_lph log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta 0.2135 Random effects: est. lower upper SD.log_k_JCZ38 0.5082 1.390e-01 0.8774 SD.log_k_J9Z38 0.8660 2.652e-01 1.4667 SD.log_k_JSE76 1.3809 4.864e-01 2.2754 SD.f_cyan_ilr_1 0.3820 1.354e-01 0.6286 SD.f_cyan_ilr_2 0.5513 7.198e-02 1.0306 SD.f_JCZ38_qlogis 1.8846 1.711e-02 3.7520 SD.f_JSE76_qlogis 2.6402 -2.450e+03 2454.9447 SD.log_alpha 0.3186 1.047e-01 0.5325 SD.log_beta 0.2420 1.273e-02 0.4712 Variance model: est. lower upper a.1 2.04034 1.84252 2.238 b.1 0.06924 0.05749 0.081 Backtransformed parameters: est. lower upper cyan_0 1.016e+02 9.920e+01 103.9059 k_JCZ38 9.798e-02 5.890e-02 0.1630 k_J9Z38 5.912e-03 2.627e-03 0.0133 k_JSE76 4.892e-02 1.410e-02 0.1697 f_cyan_to_JCZ38 6.432e-01 NA NA f_cyan_to_J9Z38 2.362e-01 NA NA f_JCZ38_to_JSE76 9.794e-01 7.160e-01 0.9989 f_JSE76_to_JCZ38 9.995e-01 2.268e-49 1.0000 alpha 8.581e-01 6.371e-01 1.1556 beta 1.992e+01 1.505e+01 26.3646 Resulting formation fractions: ff cyan_JCZ38 0.6432301 cyan_J9Z38 0.2361657 cyan_sink 0.1206042 JCZ38_JSE76 0.9793879 JCZ38_sink 0.0206121 JSE76_JCZ38 0.9994559 JSE76_sink 0.0005441 Estimated disappearance times: DT50 DT90 DT50back cyan 24.759 271.61 81.76 JCZ38 7.075 23.50 NA J9Z38 117.249 389.49 NA JSE76 14.169 47.07 NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:55:32 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 548.554 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 102.4380 -2.3107 -5.3123 -3.7120 0.6757 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 1.1439 13.1194 12.3492 -1.9317 -4.4557 g_qlogis -0.5644 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 4.591 0.0000 0.000 0.0 0.0000 log_k_JCZ38 0.000 0.7966 0.000 0.0 0.0000 log_k_J9Z38 0.000 0.0000 1.561 0.0 0.0000 log_k_JSE76 0.000 0.0000 0.000 0.8 0.0000 f_cyan_ilr_1 0.000 0.0000 0.000 0.0 0.6349 f_cyan_ilr_2 0.000 0.0000 0.000 0.0 0.0000 f_JCZ38_qlogis 0.000 0.0000 0.000 0.0 0.0000 f_JSE76_qlogis 0.000 0.0000 0.000 0.0 0.0000 log_k1 0.000 0.0000 0.000 0.0 0.0000 log_k2 0.000 0.0000 0.000 0.0 0.0000 g_qlogis 0.000 0.0000 0.000 0.0 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 cyan_0 0.000 0.00 0.00 0.000 0.0000 log_k_JCZ38 0.000 0.00 0.00 0.000 0.0000 log_k_J9Z38 0.000 0.00 0.00 0.000 0.0000 log_k_JSE76 0.000 0.00 0.00 0.000 0.0000 f_cyan_ilr_1 0.000 0.00 0.00 0.000 0.0000 f_cyan_ilr_2 1.797 0.00 0.00 0.000 0.0000 f_JCZ38_qlogis 0.000 13.86 0.00 0.000 0.0000 f_JSE76_qlogis 0.000 0.00 13.91 0.000 0.0000 log_k1 0.000 0.00 0.00 1.106 0.0000 log_k2 0.000 0.00 0.00 0.000 0.6141 g_qlogis 0.000 0.00 0.00 0.000 0.0000 g_qlogis cyan_0 0.000 log_k_JCZ38 0.000 log_k_J9Z38 0.000 log_k_JSE76 0.000 f_cyan_ilr_1 0.000 f_cyan_ilr_2 0.000 f_JCZ38_qlogis 0.000 f_JSE76_qlogis 0.000 log_k1 0.000 log_k2 0.000 g_qlogis 1.595 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2288 2280 -1122 Optimised parameters: est. lower upper cyan_0 102.7204 1.014e+02 1.040e+02 log_k_JCZ38 -2.8925 -4.044e+00 -1.741e+00 log_k_J9Z38 -5.1430 -5.828e+00 -4.457e+00 log_k_JSE76 -3.5577 -4.174e+00 -2.941e+00 f_cyan_ilr_1 0.6929 3.788e-01 1.007e+00 f_cyan_ilr_2 0.6066 5.342e-02 1.160e+00 f_JCZ38_qlogis 9.8071 -2.819e+03 2.838e+03 f_JSE76_qlogis 2.2229 5.684e-01 3.877e+00 log_k1 -1.9339 -2.609e+00 -1.258e+00 log_k2 -4.4709 -4.935e+00 -4.007e+00 g_qlogis -0.4987 -1.373e+00 3.757e-01 a.1 2.7368 2.545e+00 2.928e+00 SD.log_k_JCZ38 1.2747 4.577e-01 2.092e+00 SD.log_k_J9Z38 0.6758 1.418e-01 1.210e+00 SD.log_k_JSE76 0.5869 1.169e-01 1.057e+00 SD.f_cyan_ilr_1 0.3392 1.161e-01 5.622e-01 SD.f_cyan_ilr_2 0.4200 8.501e-02 7.550e-01 SD.f_JCZ38_qlogis 0.8511 -1.137e+06 1.137e+06 SD.f_JSE76_qlogis 0.3767 -5.238e-01 1.277e+00 SD.log_k1 0.7475 2.601e-01 1.235e+00 SD.log_k2 0.5179 1.837e-01 8.521e-01 SD.g_qlogis 0.9817 3.553e-01 1.608e+00 Correlation: cyan_0 l__JCZ3 l__J9Z3 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 f_JSE76 log_k_JCZ38 -0.0351 log_k_J9Z38 -0.0541 0.0043 log_k_JSE76 -0.0078 0.0900 -0.0014 f_cyan_ilr_1 -0.0249 0.0268 -0.0962 0.0000 f_cyan_ilr_2 -0.3560 0.0848 0.1545 -0.0022 0.0463 f_JCZ38_qlogis 0.2005 -0.1226 -0.0347 0.0514 -0.1840 -0.5906 f_JSE76_qlogis -0.1638 0.1307 0.0266 0.0001 0.1645 0.5181 -0.9297 log_k1 0.0881 -0.0071 0.0005 -0.0070 -0.0064 -0.0346 0.0316 -0.0341 log_k2 0.0238 -0.0003 0.0082 -0.0022 -0.0017 -0.0017 -0.0002 -0.0076 g_qlogis 0.0198 -0.0002 -0.0109 0.0034 0.0017 -0.0176 0.0044 0.0051 log_k1 log_k2 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 0.0276 g_qlogis -0.0283 -0.0309 Random effects: est. lower upper SD.log_k_JCZ38 1.2747 4.577e-01 2.092e+00 SD.log_k_J9Z38 0.6758 1.418e-01 1.210e+00 SD.log_k_JSE76 0.5869 1.169e-01 1.057e+00 SD.f_cyan_ilr_1 0.3392 1.161e-01 5.622e-01 SD.f_cyan_ilr_2 0.4200 8.501e-02 7.550e-01 SD.f_JCZ38_qlogis 0.8511 -1.137e+06 1.137e+06 SD.f_JSE76_qlogis 0.3767 -5.238e-01 1.277e+00 SD.log_k1 0.7475 2.601e-01 1.235e+00 SD.log_k2 0.5179 1.837e-01 8.521e-01 SD.g_qlogis 0.9817 3.553e-01 1.608e+00 Variance model: est. lower upper a.1 2.737 2.545 2.928 Backtransformed parameters: est. lower upper cyan_0 102.72037 1.014e+02 104.00464 k_JCZ38 0.05544 1.752e-02 0.17539 k_J9Z38 0.00584 2.942e-03 0.01159 k_JSE76 0.02850 1.539e-02 0.05279 f_cyan_to_JCZ38 0.59995 NA NA f_cyan_to_J9Z38 0.22519 NA NA f_JCZ38_to_JSE76 0.99994 0.000e+00 1.00000 f_JSE76_to_JCZ38 0.90229 6.384e-01 0.97971 k1 0.14459 7.357e-02 0.28414 k2 0.01144 7.192e-03 0.01819 g 0.37784 2.021e-01 0.59284 Resulting formation fractions: ff cyan_JCZ38 5.999e-01 cyan_J9Z38 2.252e-01 cyan_sink 1.749e-01 JCZ38_JSE76 9.999e-01 JCZ38_sink 5.506e-05 JSE76_JCZ38 9.023e-01 JSE76_sink 9.771e-02 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 cyan 21.93 159.83 48.11 4.794 60.6 JCZ38 12.50 41.53 NA NA NA J9Z38 118.69 394.27 NA NA NA JSE76 24.32 80.78 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:57:56 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 691.67 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 101.7393 -1.4493 -5.0118 -2.1269 0.6720 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 7.3362 13.4423 13.2659 -2.0061 -4.5527 g_qlogis -0.5806 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 5.604 0.00 0.000 0.000 0.0000 log_k_JCZ38 0.000 2.77 0.000 0.000 0.0000 log_k_J9Z38 0.000 0.00 1.662 0.000 0.0000 log_k_JSE76 0.000 0.00 0.000 5.021 0.0000 f_cyan_ilr_1 0.000 0.00 0.000 0.000 0.6519 f_cyan_ilr_2 0.000 0.00 0.000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.00 0.000 0.000 0.0000 f_JSE76_qlogis 0.000 0.00 0.000 0.000 0.0000 log_k1 0.000 0.00 0.000 0.000 0.0000 log_k2 0.000 0.00 0.000 0.000 0.0000 g_qlogis 0.000 0.00 0.000 0.000 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 cyan_0 0.00 0.00 0.00 0.0000 0.0000 log_k_JCZ38 0.00 0.00 0.00 0.0000 0.0000 log_k_J9Z38 0.00 0.00 0.00 0.0000 0.0000 log_k_JSE76 0.00 0.00 0.00 0.0000 0.0000 f_cyan_ilr_1 0.00 0.00 0.00 0.0000 0.0000 f_cyan_ilr_2 13.37 0.00 0.00 0.0000 0.0000 f_JCZ38_qlogis 0.00 14.21 0.00 0.0000 0.0000 f_JSE76_qlogis 0.00 0.00 14.58 0.0000 0.0000 log_k1 0.00 0.00 0.00 0.8453 0.0000 log_k2 0.00 0.00 0.00 0.0000 0.5969 g_qlogis 0.00 0.00 0.00 0.0000 0.0000 g_qlogis cyan_0 0.00 log_k_JCZ38 0.00 log_k_J9Z38 0.00 log_k_JSE76 0.00 f_cyan_ilr_1 0.00 f_cyan_ilr_2 0.00 f_JCZ38_qlogis 0.00 f_JSE76_qlogis 0.00 log_k1 0.00 log_k2 0.00 g_qlogis 1.69 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2234 2226 -1095 Optimised parameters: est. lower upper cyan_0 101.25496 99.14662 103.36331 log_k_JCZ38 -2.55593 -3.32972 -1.78215 log_k_J9Z38 -5.07103 -5.85423 -4.28783 log_k_JSE76 -3.25468 -4.17577 -2.33360 f_cyan_ilr_1 0.70139 0.35924 1.04355 f_cyan_ilr_2 1.07712 0.17789 1.97636 f_JCZ38_qlogis 3.57483 0.05990 7.08976 f_JSE76_qlogis 4.54884 -7.25628 16.35395 log_k1 -2.38201 -2.51639 -2.24763 log_k2 -4.66741 -4.91865 -4.41617 g_qlogis -0.28446 -1.14192 0.57300 a.1 2.05925 1.86481 2.25369 b.1 0.06172 0.05062 0.07282 SD.log_k_JCZ38 0.81137 0.25296 1.36977 SD.log_k_J9Z38 0.83542 0.25395 1.41689 SD.log_k_JSE76 0.97903 0.30100 1.65707 SD.f_cyan_ilr_1 0.37878 0.13374 0.62382 SD.f_cyan_ilr_2 0.67274 0.10102 1.24446 SD.f_JCZ38_qlogis 1.35327 -0.42359 3.13012 SD.f_JSE76_qlogis 1.43956 -19.14972 22.02884 SD.log_k2 0.25329 0.07521 0.43138 SD.g_qlogis 0.95167 0.35149 1.55184 Correlation: cyan_0 l__JCZ3 l__J9Z3 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 f_JSE76 log_k_JCZ38 -0.0265 log_k_J9Z38 -0.0392 0.0024 log_k_JSE76 0.0011 0.1220 -0.0016 f_cyan_ilr_1 -0.0161 0.0217 -0.0552 0.0034 f_cyan_ilr_2 -0.4718 0.0829 0.1102 0.0042 0.0095 f_JCZ38_qlogis 0.1609 -0.1318 -0.0277 0.0081 -0.1040 -0.4559 f_JSE76_qlogis -0.1289 0.1494 0.0219 0.0012 0.1004 0.4309 -0.8543 log_k1 0.2618 -0.0739 -0.0167 -0.0148 -0.0444 -0.2768 0.3518 -0.3818 log_k2 0.0603 -0.0217 0.0174 -0.0058 -0.0197 -0.0533 0.0923 -0.1281 g_qlogis 0.0362 0.0115 -0.0111 0.0040 0.0095 -0.0116 -0.0439 0.0651 log_k1 log_k2 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 0.3269 g_qlogis -0.1656 -0.0928 Random effects: est. lower upper SD.log_k_JCZ38 0.8114 0.25296 1.3698 SD.log_k_J9Z38 0.8354 0.25395 1.4169 SD.log_k_JSE76 0.9790 0.30100 1.6571 SD.f_cyan_ilr_1 0.3788 0.13374 0.6238 SD.f_cyan_ilr_2 0.6727 0.10102 1.2445 SD.f_JCZ38_qlogis 1.3533 -0.42359 3.1301 SD.f_JSE76_qlogis 1.4396 -19.14972 22.0288 SD.log_k2 0.2533 0.07521 0.4314 SD.g_qlogis 0.9517 0.35149 1.5518 Variance model: est. lower upper a.1 2.05925 1.86481 2.25369 b.1 0.06172 0.05062 0.07282 Backtransformed parameters: est. lower upper cyan_0 1.013e+02 9.915e+01 103.36331 k_JCZ38 7.762e-02 3.580e-02 0.16828 k_J9Z38 6.276e-03 2.868e-03 0.01373 k_JSE76 3.859e-02 1.536e-02 0.09695 f_cyan_to_JCZ38 6.520e-01 NA NA f_cyan_to_J9Z38 2.418e-01 NA NA f_JCZ38_to_JSE76 9.727e-01 5.150e-01 0.99917 f_JSE76_to_JCZ38 9.895e-01 7.052e-04 1.00000 k1 9.236e-02 8.075e-02 0.10565 k2 9.397e-03 7.309e-03 0.01208 g 4.294e-01 2.420e-01 0.63945 Resulting formation fractions: ff cyan_JCZ38 0.65203 cyan_J9Z38 0.24181 cyan_sink 0.10616 JCZ38_JSE76 0.97274 JCZ38_sink 0.02726 JSE76_JCZ38 0.98953 JSE76_sink 0.01047 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 cyan 24.26 185.34 55.79 7.504 73.77 JCZ38 8.93 29.66 NA NA NA J9Z38 110.45 366.89 NA NA NA JSE76 17.96 59.66 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:55:26 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * cyan_free + k_cyan_bound_free * cyan_bound d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * cyan_bound d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 542.162 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_free_0 log_k_cyan_free log_k_cyan_free_bound 102.4395 -2.7673 -2.8942 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 -3.6201 -2.3107 -5.3123 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 -3.7120 0.6754 1.1448 f_JCZ38_qlogis f_JSE76_qlogis 14.8408 15.4734 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_free_0 log_k_cyan_free log_k_cyan_free_bound cyan_free_0 4.589 0.0000 0.00 log_k_cyan_free 0.000 0.4849 0.00 log_k_cyan_free_bound 0.000 0.0000 1.62 log_k_cyan_bound_free 0.000 0.0000 0.00 log_k_JCZ38 0.000 0.0000 0.00 log_k_J9Z38 0.000 0.0000 0.00 log_k_JSE76 0.000 0.0000 0.00 f_cyan_ilr_1 0.000 0.0000 0.00 f_cyan_ilr_2 0.000 0.0000 0.00 f_JCZ38_qlogis 0.000 0.0000 0.00 f_JSE76_qlogis 0.000 0.0000 0.00 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 cyan_free_0 0.000 0.0000 0.000 0.0 log_k_cyan_free 0.000 0.0000 0.000 0.0 log_k_cyan_free_bound 0.000 0.0000 0.000 0.0 log_k_cyan_bound_free 1.197 0.0000 0.000 0.0 log_k_JCZ38 0.000 0.7966 0.000 0.0 log_k_J9Z38 0.000 0.0000 1.561 0.0 log_k_JSE76 0.000 0.0000 0.000 0.8 f_cyan_ilr_1 0.000 0.0000 0.000 0.0 f_cyan_ilr_2 0.000 0.0000 0.000 0.0 f_JCZ38_qlogis 0.000 0.0000 0.000 0.0 f_JSE76_qlogis 0.000 0.0000 0.000 0.0 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis cyan_free_0 0.0000 0.000 0.0 0.00 log_k_cyan_free 0.0000 0.000 0.0 0.00 log_k_cyan_free_bound 0.0000 0.000 0.0 0.00 log_k_cyan_bound_free 0.0000 0.000 0.0 0.00 log_k_JCZ38 0.0000 0.000 0.0 0.00 log_k_J9Z38 0.0000 0.000 0.0 0.00 log_k_JSE76 0.0000 0.000 0.0 0.00 f_cyan_ilr_1 0.6349 0.000 0.0 0.00 f_cyan_ilr_2 0.0000 1.797 0.0 0.00 f_JCZ38_qlogis 0.0000 0.000 15.6 0.00 f_JSE76_qlogis 0.0000 0.000 0.0 17.52 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2283 2275 -1120 Optimised parameters: est. lower upper cyan_free_0 102.6517 101.40815 103.8952 log_k_cyan_free -2.8729 -3.18649 -2.5593 log_k_cyan_free_bound -2.7803 -3.60525 -1.9552 log_k_cyan_bound_free -3.5845 -4.16644 -3.0026 log_k_JCZ38 -2.3411 -2.89698 -1.7852 log_k_J9Z38 -5.2487 -6.01271 -4.4847 log_k_JSE76 -3.0259 -4.28274 -1.7690 f_cyan_ilr_1 0.7289 0.38214 1.0756 f_cyan_ilr_2 0.6891 0.18277 1.1954 f_JCZ38_qlogis 4.2162 0.47015 7.9622 f_JSE76_qlogis 5.8911 -20.19088 31.9730 a.1 2.7159 2.52587 2.9060 SD.log_k_cyan_free 0.3354 0.10979 0.5610 SD.log_k_cyan_free_bound 0.9061 0.30969 1.5025 SD.log_k_cyan_bound_free 0.6376 0.21229 1.0628 SD.log_k_JCZ38 0.5499 0.14533 0.9545 SD.log_k_J9Z38 0.7457 0.15106 1.3404 SD.log_k_JSE76 1.3822 0.47329 2.2912 SD.f_cyan_ilr_1 0.3820 0.13280 0.6313 SD.f_cyan_ilr_2 0.4317 0.06803 0.7953 SD.f_JCZ38_qlogis 1.8258 -0.25423 3.9059 SD.f_JSE76_qlogis 2.2348 -83.33679 87.8065 Correlation: cyn_f_0 lg_k_c_ lg_k_cyn_f_ lg_k_cyn_b_ l__JCZ3 l__J9Z3 log_k_cyan_free 0.1944 log_k_cyan_free_bound 0.0815 0.0814 log_k_cyan_bound_free 0.0106 0.0426 0.0585 log_k_JCZ38 -0.0231 -0.0106 -0.0089 -0.0051 log_k_J9Z38 -0.0457 -0.0108 0.0019 0.0129 0.0032 log_k_JSE76 -0.0054 -0.0024 -0.0017 -0.0005 0.1108 0.0009 f_cyan_ilr_1 0.0051 -0.0005 -0.0035 -0.0056 0.0131 -0.0967 f_cyan_ilr_2 -0.3182 -0.0771 -0.0309 -0.0038 0.0680 0.1643 f_JCZ38_qlogis 0.0834 0.0369 0.0302 0.0172 -0.1145 -0.0204 f_JSE76_qlogis -0.0553 -0.0365 -0.0441 -0.0414 0.1579 0.0175 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 log_k_cyan_free log_k_cyan_free_bound log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 -0.0002 f_cyan_ilr_2 0.0020 -0.0415 f_JCZ38_qlogis 0.0052 -0.0665 -0.3437 f_JSE76_qlogis 0.0066 0.0635 0.3491 -0.7487 Random effects: est. lower upper SD.log_k_cyan_free 0.3354 0.10979 0.5610 SD.log_k_cyan_free_bound 0.9061 0.30969 1.5025 SD.log_k_cyan_bound_free 0.6376 0.21229 1.0628 SD.log_k_JCZ38 0.5499 0.14533 0.9545 SD.log_k_J9Z38 0.7457 0.15106 1.3404 SD.log_k_JSE76 1.3822 0.47329 2.2912 SD.f_cyan_ilr_1 0.3820 0.13280 0.6313 SD.f_cyan_ilr_2 0.4317 0.06803 0.7953 SD.f_JCZ38_qlogis 1.8258 -0.25423 3.9059 SD.f_JSE76_qlogis 2.2348 -83.33679 87.8065 Variance model: est. lower upper a.1 2.716 2.526 2.906 Backtransformed parameters: est. lower upper cyan_free_0 1.027e+02 1.014e+02 103.89517 k_cyan_free 5.654e-02 4.132e-02 0.07736 k_cyan_free_bound 6.202e-02 2.718e-02 0.14153 k_cyan_bound_free 2.775e-02 1.551e-02 0.04966 k_JCZ38 9.622e-02 5.519e-02 0.16777 k_J9Z38 5.254e-03 2.447e-03 0.01128 k_JSE76 4.852e-02 1.380e-02 0.17051 f_cyan_free_to_JCZ38 6.197e-01 5.643e-01 0.84429 f_cyan_free_to_J9Z38 2.211e-01 5.643e-01 0.84429 f_JCZ38_to_JSE76 9.855e-01 6.154e-01 0.99965 f_JSE76_to_JCZ38 9.972e-01 1.703e-09 1.00000 Estimated Eigenvalues of SFORB model(s): cyan_b1 cyan_b2 cyan_g 0.13466 0.01165 0.36490 Resulting formation fractions: ff cyan_free_JCZ38 0.619745 cyan_free_J9Z38 0.221083 cyan_free_sink 0.159172 cyan_free 1.000000 JCZ38_JSE76 0.985460 JCZ38_sink 0.014540 JSE76_JCZ38 0.997244 JSE76_sink 0.002756 Estimated disappearance times: DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 cyan 23.293 158.67 47.77 5.147 59.5 JCZ38 7.203 23.93 NA NA NA J9Z38 131.918 438.22 NA NA NA JSE76 14.287 47.46 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 07:58:06 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * cyan_free + k_cyan_bound_free * cyan_bound d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * cyan_bound d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 701.582 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_free_0 log_k_cyan_free log_k_cyan_free_bound 101.7511 -2.8370 -3.0162 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 -3.6600 -2.2988 -5.3129 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 -3.6991 0.6722 4.8596 f_JCZ38_qlogis f_JSE76_qlogis 13.4678 14.2149 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_free_0 log_k_cyan_free log_k_cyan_free_bound cyan_free_0 5.629 0.000 0.000 log_k_cyan_free 0.000 0.446 0.000 log_k_cyan_free_bound 0.000 0.000 1.449 log_k_cyan_bound_free 0.000 0.000 0.000 log_k_JCZ38 0.000 0.000 0.000 log_k_J9Z38 0.000 0.000 0.000 log_k_JSE76 0.000 0.000 0.000 f_cyan_ilr_1 0.000 0.000 0.000 f_cyan_ilr_2 0.000 0.000 0.000 f_JCZ38_qlogis 0.000 0.000 0.000 f_JSE76_qlogis 0.000 0.000 0.000 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 cyan_free_0 0.000 0.0000 0.000 0.0000 log_k_cyan_free 0.000 0.0000 0.000 0.0000 log_k_cyan_free_bound 0.000 0.0000 0.000 0.0000 log_k_cyan_bound_free 1.213 0.0000 0.000 0.0000 log_k_JCZ38 0.000 0.7801 0.000 0.0000 log_k_J9Z38 0.000 0.0000 1.575 0.0000 log_k_JSE76 0.000 0.0000 0.000 0.8078 f_cyan_ilr_1 0.000 0.0000 0.000 0.0000 f_cyan_ilr_2 0.000 0.0000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.0000 0.000 0.0000 f_JSE76_qlogis 0.000 0.0000 0.000 0.0000 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis cyan_free_0 0.0000 0.000 0.00 0.00 log_k_cyan_free 0.0000 0.000 0.00 0.00 log_k_cyan_free_bound 0.0000 0.000 0.00 0.00 log_k_cyan_bound_free 0.0000 0.000 0.00 0.00 log_k_JCZ38 0.0000 0.000 0.00 0.00 log_k_J9Z38 0.0000 0.000 0.00 0.00 log_k_JSE76 0.0000 0.000 0.00 0.00 f_cyan_ilr_1 0.6518 0.000 0.00 0.00 f_cyan_ilr_2 0.0000 9.981 0.00 0.00 f_JCZ38_qlogis 0.0000 0.000 14.26 0.00 f_JSE76_qlogis 0.0000 0.000 0.00 16.17 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2240 2231 -1098 Optimised parameters: est. lower upper cyan_free_0 100.73014 9.873e+01 1.027e+02 log_k_cyan_free -3.19634 -3.641e+00 -2.752e+00 log_k_cyan_free_bound -3.43533 -3.674e+00 -3.197e+00 log_k_cyan_bound_free -3.83282 -4.163e+00 -3.503e+00 log_k_JCZ38 -2.51065 -3.225e+00 -1.796e+00 log_k_J9Z38 -5.02539 -5.825e+00 -4.226e+00 log_k_JSE76 -3.24777 -4.163e+00 -2.333e+00 f_cyan_ilr_1 0.70640 3.562e-01 1.057e+00 f_cyan_ilr_2 1.42704 3.170e-01 2.537e+00 f_JCZ38_qlogis 2.84779 1.042e+00 4.654e+00 f_JSE76_qlogis 8.63674 -6.407e+02 6.580e+02 a.1 2.07082 1.877e+00 2.265e+00 b.1 0.06227 5.098e-02 7.355e-02 SD.log_k_cyan_free 0.49674 1.865e-01 8.069e-01 SD.log_k_cyan_bound_free 0.28537 6.809e-02 5.027e-01 SD.log_k_JCZ38 0.74846 2.305e-01 1.266e+00 SD.log_k_J9Z38 0.86077 2.713e-01 1.450e+00 SD.log_k_JSE76 0.97613 3.030e-01 1.649e+00 SD.f_cyan_ilr_1 0.38994 1.382e-01 6.417e-01 SD.f_cyan_ilr_2 0.82869 3.917e-02 1.618e+00 SD.f_JCZ38_qlogis 1.05000 -2.808e-02 2.128e+00 SD.f_JSE76_qlogis 0.44681 -3.985e+05 3.985e+05 Correlation: cyn_f_0 lg_k_c_ lg_k_cyn_f_ lg_k_cyn_b_ l__JCZ3 l__J9Z3 log_k_cyan_free 0.0936 log_k_cyan_free_bound 0.1302 0.1627 log_k_cyan_bound_free 0.0029 0.0525 0.5181 log_k_JCZ38 -0.0116 -0.0077 -0.0430 -0.0236 log_k_J9Z38 -0.0192 -0.0077 -0.0048 0.0229 -0.0005 log_k_JSE76 0.0007 -0.0020 -0.0134 -0.0072 0.1225 -0.0016 f_cyan_ilr_1 -0.0118 -0.0027 -0.0132 -0.0118 0.0127 -0.0505 f_cyan_ilr_2 -0.4643 -0.0762 -0.1245 0.0137 0.0497 0.1003 f_JCZ38_qlogis 0.0710 0.0371 0.1826 0.0925 -0.0869 -0.0130 f_JSE76_qlogis -0.0367 -0.0270 -0.2274 -0.1865 0.1244 0.0098 l__JSE7 f_cy__1 f_cy__2 f_JCZ38 log_k_cyan_free log_k_cyan_free_bound log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 0.0036 f_cyan_ilr_2 0.0050 -0.0201 f_JCZ38_qlogis 0.0142 -0.0529 -0.2698 f_JSE76_qlogis 0.0064 0.0345 0.2015 -0.7058 Random effects: est. lower upper SD.log_k_cyan_free 0.4967 1.865e-01 8.069e-01 SD.log_k_cyan_bound_free 0.2854 6.809e-02 5.027e-01 SD.log_k_JCZ38 0.7485 2.305e-01 1.266e+00 SD.log_k_J9Z38 0.8608 2.713e-01 1.450e+00 SD.log_k_JSE76 0.9761 3.030e-01 1.649e+00 SD.f_cyan_ilr_1 0.3899 1.382e-01 6.417e-01 SD.f_cyan_ilr_2 0.8287 3.917e-02 1.618e+00 SD.f_JCZ38_qlogis 1.0500 -2.808e-02 2.128e+00 SD.f_JSE76_qlogis 0.4468 -3.985e+05 3.985e+05 Variance model: est. lower upper a.1 2.07082 1.87680 2.26483 b.1 0.06227 0.05098 0.07355 Backtransformed parameters: est. lower upper cyan_free_0 1.007e+02 9.873e+01 102.72898 k_cyan_free 4.091e-02 2.623e-02 0.06382 k_cyan_free_bound 3.221e-02 2.537e-02 0.04090 k_cyan_bound_free 2.165e-02 1.557e-02 0.03011 k_JCZ38 8.122e-02 3.975e-02 0.16594 k_J9Z38 6.569e-03 2.954e-03 0.01461 k_JSE76 3.886e-02 1.556e-02 0.09703 f_cyan_free_to_JCZ38 6.785e-01 6.102e-01 0.97309 f_cyan_free_to_J9Z38 2.498e-01 6.102e-01 0.97309 f_JCZ38_to_JSE76 9.452e-01 7.392e-01 0.99056 f_JSE76_to_JCZ38 9.998e-01 5.580e-279 1.00000 Estimated Eigenvalues of SFORB model(s): cyan_b1 cyan_b2 cyan_g 0.08426 0.01051 0.41220 Resulting formation fractions: ff cyan_free_JCZ38 0.6784541 cyan_free_J9Z38 0.2498405 cyan_free_sink 0.0717054 cyan_free 1.0000000 JCZ38_JSE76 0.9452043 JCZ38_sink 0.0547957 JSE76_JCZ38 0.9998226 JSE76_sink 0.0001774 Estimated disappearance times: DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 cyan 25.237 168.51 50.73 8.226 65.95 JCZ38 8.535 28.35 NA NA NA J9Z38 105.517 350.52 NA NA NA JSE76 17.837 59.25 NA NA NA"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"pathway-2-refined-fits","dir":"Articles > Prebuilt","previous_headings":"Appendix > Hierarchical fit listings","what":"Pathway 2, refined fits","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"Hierarchical FOMC path 2 fit reduced random effects, two-component error Hierarchical DFOP path 2 fit reduced random effects, constant variance Hierarchical DFOP path 2 fit reduced random effects, two-component error Hierarchical SFORB path 2 fit reduced random effects, constant variance Hierarchical SFORB path 2 fit reduced random effects, two-component error","code":"saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:11:01 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - (alpha/beta) * 1/((time/beta) + 1) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * (alpha/beta) * 1/((time/beta) + 1) * cyan - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_to_J9Z38 * (alpha/beta) * 1/((time/beta) + 1) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 773.693 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 102.4477 -1.8631 -5.1087 -2.5114 0.6826 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta 4.7944 15.9616 13.1566 -0.1564 2.9781 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 7.701 0.000 0.000 0.000 0.0000 log_k_JCZ38 0.000 1.448 0.000 0.000 0.0000 log_k_J9Z38 0.000 0.000 1.724 0.000 0.0000 log_k_JSE76 0.000 0.000 0.000 3.659 0.0000 f_cyan_ilr_1 0.000 0.000 0.000 0.000 0.6356 f_cyan_ilr_2 0.000 0.000 0.000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.000 0.000 0.000 0.0000 f_JSE76_qlogis 0.000 0.000 0.000 0.000 0.0000 log_alpha 0.000 0.000 0.000 0.000 0.0000 log_beta 0.000 0.000 0.000 0.000 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_alpha log_beta cyan_0 0.00 0.00 0.00 0.0000 0.0000 log_k_JCZ38 0.00 0.00 0.00 0.0000 0.0000 log_k_J9Z38 0.00 0.00 0.00 0.0000 0.0000 log_k_JSE76 0.00 0.00 0.00 0.0000 0.0000 f_cyan_ilr_1 0.00 0.00 0.00 0.0000 0.0000 f_cyan_ilr_2 10.32 0.00 0.00 0.0000 0.0000 f_JCZ38_qlogis 0.00 12.23 0.00 0.0000 0.0000 f_JSE76_qlogis 0.00 0.00 14.99 0.0000 0.0000 log_alpha 0.00 0.00 0.00 0.3924 0.0000 log_beta 0.00 0.00 0.00 0.0000 0.5639 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2249 2242 -1106 Optimised parameters: est. lower upper cyan_0 101.24524 NA NA log_k_JCZ38 -2.85375 NA NA log_k_J9Z38 -5.07729 NA NA log_k_JSE76 -3.53511 NA NA f_cyan_ilr_1 0.67478 NA NA f_cyan_ilr_2 0.97152 NA NA f_JCZ38_qlogis 213.48001 NA NA f_JSE76_qlogis 2.02040 NA NA log_alpha -0.11041 NA NA log_beta 3.06575 NA NA a.1 2.05279 1.85495 2.2506 b.1 0.07116 0.05912 0.0832 SD.log_k_JCZ38 1.21713 0.44160 1.9927 SD.log_k_J9Z38 0.88268 0.27541 1.4900 SD.log_k_JSE76 0.59452 0.15005 1.0390 SD.f_cyan_ilr_1 0.35370 0.12409 0.5833 SD.f_cyan_ilr_2 0.78186 0.18547 1.3782 SD.log_alpha 0.27781 0.08168 0.4739 SD.log_beta 0.32608 0.06490 0.5873 Correlation is not available Random effects: est. lower upper SD.log_k_JCZ38 1.2171 0.44160 1.9927 SD.log_k_J9Z38 0.8827 0.27541 1.4900 SD.log_k_JSE76 0.5945 0.15005 1.0390 SD.f_cyan_ilr_1 0.3537 0.12409 0.5833 SD.f_cyan_ilr_2 0.7819 0.18547 1.3782 SD.log_alpha 0.2778 0.08168 0.4739 SD.log_beta 0.3261 0.06490 0.5873 Variance model: est. lower upper a.1 2.05279 1.85495 2.2506 b.1 0.07116 0.05912 0.0832 Backtransformed parameters: est. lower upper cyan_0 1.012e+02 NA NA k_JCZ38 5.763e-02 NA NA k_J9Z38 6.237e-03 NA NA k_JSE76 2.916e-02 NA NA f_cyan_to_JCZ38 6.354e-01 NA NA f_cyan_to_J9Z38 2.447e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 NA NA f_JSE76_to_JCZ38 8.829e-01 NA NA alpha 8.955e-01 NA NA beta 2.145e+01 NA NA Resulting formation fractions: ff cyan_JCZ38 0.6354 cyan_J9Z38 0.2447 cyan_sink 0.1200 JCZ38_JSE76 1.0000 JCZ38_sink 0.0000 JSE76_JCZ38 0.8829 JSE76_sink 0.1171 Estimated disappearance times: DT50 DT90 DT50back cyan 25.07 259.21 78.03 JCZ38 12.03 39.96 NA J9Z38 111.14 369.19 NA JSE76 23.77 78.98 NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:12:27 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 859.906 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 102.4380 -2.3107 -5.3123 -3.7120 0.6757 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 1.1439 13.1194 12.3492 -1.9317 -4.4557 g_qlogis -0.5644 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 4.591 0.0000 0.000 0.0 0.0000 log_k_JCZ38 0.000 0.7966 0.000 0.0 0.0000 log_k_J9Z38 0.000 0.0000 1.561 0.0 0.0000 log_k_JSE76 0.000 0.0000 0.000 0.8 0.0000 f_cyan_ilr_1 0.000 0.0000 0.000 0.0 0.6349 f_cyan_ilr_2 0.000 0.0000 0.000 0.0 0.0000 f_JCZ38_qlogis 0.000 0.0000 0.000 0.0 0.0000 f_JSE76_qlogis 0.000 0.0000 0.000 0.0 0.0000 log_k1 0.000 0.0000 0.000 0.0 0.0000 log_k2 0.000 0.0000 0.000 0.0 0.0000 g_qlogis 0.000 0.0000 0.000 0.0 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 cyan_0 0.000 0.00 0.00 0.000 0.0000 log_k_JCZ38 0.000 0.00 0.00 0.000 0.0000 log_k_J9Z38 0.000 0.00 0.00 0.000 0.0000 log_k_JSE76 0.000 0.00 0.00 0.000 0.0000 f_cyan_ilr_1 0.000 0.00 0.00 0.000 0.0000 f_cyan_ilr_2 1.797 0.00 0.00 0.000 0.0000 f_JCZ38_qlogis 0.000 13.86 0.00 0.000 0.0000 f_JSE76_qlogis 0.000 0.00 13.91 0.000 0.0000 log_k1 0.000 0.00 0.00 1.106 0.0000 log_k2 0.000 0.00 0.00 0.000 0.6141 g_qlogis 0.000 0.00 0.00 0.000 0.0000 g_qlogis cyan_0 0.000 log_k_JCZ38 0.000 log_k_J9Z38 0.000 log_k_JSE76 0.000 f_cyan_ilr_1 0.000 f_cyan_ilr_2 0.000 f_JCZ38_qlogis 0.000 f_JSE76_qlogis 0.000 log_k1 0.000 log_k2 0.000 g_qlogis 1.595 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2282 2274 -1121 Optimised parameters: est. lower upper cyan_0 102.6036 NA NA log_k_JCZ38 -2.9348 NA NA log_k_J9Z38 -5.1617 NA NA log_k_JSE76 -3.6396 NA NA f_cyan_ilr_1 0.6991 NA NA f_cyan_ilr_2 0.6341 NA NA f_JCZ38_qlogis 4232.3011 NA NA f_JSE76_qlogis 1.9658 NA NA log_k1 -1.9503 NA NA log_k2 -4.4745 NA NA g_qlogis -0.4967 NA NA a.1 2.7461 2.59274 2.8994 SD.log_k_JCZ38 1.3178 0.47602 2.1596 SD.log_k_J9Z38 0.7022 0.15061 1.2538 SD.log_k_JSE76 0.6566 0.15613 1.1570 SD.f_cyan_ilr_1 0.3409 0.11666 0.5652 SD.f_cyan_ilr_2 0.4385 0.09482 0.7821 SD.log_k1 0.7381 0.25599 1.2202 SD.log_k2 0.5133 0.18152 0.8450 SD.g_qlogis 0.9866 0.35681 1.6164 Correlation is not available Random effects: est. lower upper SD.log_k_JCZ38 1.3178 0.47602 2.1596 SD.log_k_J9Z38 0.7022 0.15061 1.2538 SD.log_k_JSE76 0.6566 0.15613 1.1570 SD.f_cyan_ilr_1 0.3409 0.11666 0.5652 SD.f_cyan_ilr_2 0.4385 0.09482 0.7821 SD.log_k1 0.7381 0.25599 1.2202 SD.log_k2 0.5133 0.18152 0.8450 SD.g_qlogis 0.9866 0.35681 1.6164 Variance model: est. lower upper a.1 2.746 2.593 2.899 Backtransformed parameters: est. lower upper cyan_0 1.026e+02 NA NA k_JCZ38 5.314e-02 NA NA k_J9Z38 5.732e-03 NA NA k_JSE76 2.626e-02 NA NA f_cyan_to_JCZ38 6.051e-01 NA NA f_cyan_to_J9Z38 2.251e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 NA NA f_JSE76_to_JCZ38 8.772e-01 NA NA k1 1.422e-01 NA NA k2 1.140e-02 NA NA g 3.783e-01 NA NA Resulting formation fractions: ff cyan_JCZ38 0.6051 cyan_J9Z38 0.2251 cyan_sink 0.1698 JCZ38_JSE76 1.0000 JCZ38_sink 0.0000 JSE76_JCZ38 0.8772 JSE76_sink 0.1228 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 cyan 22.05 160.35 48.27 4.873 60.83 JCZ38 13.04 43.33 NA NA NA J9Z38 120.93 401.73 NA NA NA JSE76 26.39 87.68 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:12:54 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan d_JCZ38/dt = + f_cyan_to_JCZ38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_to_J9Z38 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * cyan - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 886.298 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 101.7393 -1.4493 -5.0118 -2.1269 0.6720 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 7.3362 13.4423 13.2659 -2.0061 -4.5527 g_qlogis -0.5806 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_0 log_k_JCZ38 log_k_J9Z38 log_k_JSE76 f_cyan_ilr_1 cyan_0 5.604 0.00 0.000 0.000 0.0000 log_k_JCZ38 0.000 2.77 0.000 0.000 0.0000 log_k_J9Z38 0.000 0.00 1.662 0.000 0.0000 log_k_JSE76 0.000 0.00 0.000 5.021 0.0000 f_cyan_ilr_1 0.000 0.00 0.000 0.000 0.6519 f_cyan_ilr_2 0.000 0.00 0.000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.00 0.000 0.000 0.0000 f_JSE76_qlogis 0.000 0.00 0.000 0.000 0.0000 log_k1 0.000 0.00 0.000 0.000 0.0000 log_k2 0.000 0.00 0.000 0.000 0.0000 g_qlogis 0.000 0.00 0.000 0.000 0.0000 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis log_k1 log_k2 cyan_0 0.00 0.00 0.00 0.0000 0.0000 log_k_JCZ38 0.00 0.00 0.00 0.0000 0.0000 log_k_J9Z38 0.00 0.00 0.00 0.0000 0.0000 log_k_JSE76 0.00 0.00 0.00 0.0000 0.0000 f_cyan_ilr_1 0.00 0.00 0.00 0.0000 0.0000 f_cyan_ilr_2 13.37 0.00 0.00 0.0000 0.0000 f_JCZ38_qlogis 0.00 14.21 0.00 0.0000 0.0000 f_JSE76_qlogis 0.00 0.00 14.58 0.0000 0.0000 log_k1 0.00 0.00 0.00 0.8453 0.0000 log_k2 0.00 0.00 0.00 0.0000 0.5969 g_qlogis 0.00 0.00 0.00 0.0000 0.0000 g_qlogis cyan_0 0.00 log_k_JCZ38 0.00 log_k_J9Z38 0.00 log_k_JSE76 0.00 f_cyan_ilr_1 0.00 f_cyan_ilr_2 0.00 f_JCZ38_qlogis 0.00 f_JSE76_qlogis 0.00 log_k1 0.00 log_k2 0.00 g_qlogis 1.69 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2237 2229 -1099 Optimised parameters: est. lower upper cyan_0 101.00243 NA NA log_k_JCZ38 -2.80828 NA NA log_k_J9Z38 -5.04449 NA NA log_k_JSE76 -3.66981 NA NA f_cyan_ilr_1 0.72564 NA NA f_cyan_ilr_2 1.37978 NA NA f_JCZ38_qlogis 1.98726 NA NA f_JSE76_qlogis 414.80884 NA NA log_k1 -2.38601 NA NA log_k2 -4.63632 NA NA g_qlogis -0.33920 NA NA a.1 2.10837 1.91261 2.30413 b.1 0.06223 0.05085 0.07361 SD.log_k_JCZ38 1.30902 0.48128 2.13675 SD.log_k_J9Z38 0.83882 0.25790 1.41974 SD.log_k_JSE76 0.58104 0.14201 1.02008 SD.f_cyan_ilr_1 0.35421 0.12398 0.58443 SD.f_cyan_ilr_2 0.79373 0.12007 1.46739 SD.log_k2 0.27476 0.08557 0.46394 SD.g_qlogis 0.96170 0.35463 1.56878 Correlation is not available Random effects: est. lower upper SD.log_k_JCZ38 1.3090 0.48128 2.1367 SD.log_k_J9Z38 0.8388 0.25790 1.4197 SD.log_k_JSE76 0.5810 0.14201 1.0201 SD.f_cyan_ilr_1 0.3542 0.12398 0.5844 SD.f_cyan_ilr_2 0.7937 0.12007 1.4674 SD.log_k2 0.2748 0.08557 0.4639 SD.g_qlogis 0.9617 0.35463 1.5688 Variance model: est. lower upper a.1 2.10837 1.91261 2.30413 b.1 0.06223 0.05085 0.07361 Backtransformed parameters: est. lower upper cyan_0 1.010e+02 NA NA k_JCZ38 6.031e-02 NA NA k_J9Z38 6.445e-03 NA NA k_JSE76 2.548e-02 NA NA f_cyan_to_JCZ38 6.808e-01 NA NA f_cyan_to_J9Z38 2.440e-01 NA NA f_JCZ38_to_JSE76 8.795e-01 NA NA f_JSE76_to_JCZ38 1.000e+00 NA NA k1 9.200e-02 NA NA k2 9.693e-03 NA NA g 4.160e-01 NA NA Resulting formation fractions: ff cyan_JCZ38 0.68081 cyan_J9Z38 0.24398 cyan_sink 0.07521 JCZ38_JSE76 0.87945 JCZ38_sink 0.12055 JSE76_JCZ38 1.00000 JSE76_sink 0.00000 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 cyan 25.00 182.05 54.8 7.535 71.51 JCZ38 11.49 38.18 NA NA NA J9Z38 107.55 357.28 NA NA NA JSE76 27.20 90.36 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:12:32 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * cyan_free + k_cyan_bound_free * cyan_bound d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * cyan_bound d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 865.121 s Using 300, 100 iterations and 10 chains Variance model: Constant variance Starting values for degradation parameters: cyan_free_0 log_k_cyan_free log_k_cyan_free_bound 102.4395 -2.7673 -2.8942 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 -3.6201 -2.3107 -5.3123 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 -3.7120 0.6754 1.1448 f_JCZ38_qlogis f_JSE76_qlogis 14.8408 15.4734 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_free_0 log_k_cyan_free log_k_cyan_free_bound cyan_free_0 4.589 0.0000 0.00 log_k_cyan_free 0.000 0.4849 0.00 log_k_cyan_free_bound 0.000 0.0000 1.62 log_k_cyan_bound_free 0.000 0.0000 0.00 log_k_JCZ38 0.000 0.0000 0.00 log_k_J9Z38 0.000 0.0000 0.00 log_k_JSE76 0.000 0.0000 0.00 f_cyan_ilr_1 0.000 0.0000 0.00 f_cyan_ilr_2 0.000 0.0000 0.00 f_JCZ38_qlogis 0.000 0.0000 0.00 f_JSE76_qlogis 0.000 0.0000 0.00 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 cyan_free_0 0.000 0.0000 0.000 0.0 log_k_cyan_free 0.000 0.0000 0.000 0.0 log_k_cyan_free_bound 0.000 0.0000 0.000 0.0 log_k_cyan_bound_free 1.197 0.0000 0.000 0.0 log_k_JCZ38 0.000 0.7966 0.000 0.0 log_k_J9Z38 0.000 0.0000 1.561 0.0 log_k_JSE76 0.000 0.0000 0.000 0.8 f_cyan_ilr_1 0.000 0.0000 0.000 0.0 f_cyan_ilr_2 0.000 0.0000 0.000 0.0 f_JCZ38_qlogis 0.000 0.0000 0.000 0.0 f_JSE76_qlogis 0.000 0.0000 0.000 0.0 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis cyan_free_0 0.0000 0.000 0.0 0.00 log_k_cyan_free 0.0000 0.000 0.0 0.00 log_k_cyan_free_bound 0.0000 0.000 0.0 0.00 log_k_cyan_bound_free 0.0000 0.000 0.0 0.00 log_k_JCZ38 0.0000 0.000 0.0 0.00 log_k_J9Z38 0.0000 0.000 0.0 0.00 log_k_JSE76 0.0000 0.000 0.0 0.00 f_cyan_ilr_1 0.6349 0.000 0.0 0.00 f_cyan_ilr_2 0.0000 1.797 0.0 0.00 f_JCZ38_qlogis 0.0000 0.000 15.6 0.00 f_JSE76_qlogis 0.0000 0.000 0.0 17.52 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2280 2272 -1120 Optimised parameters: est. lower upper cyan_free_0 102.6532 NA NA log_k_cyan_free -2.8547 NA NA log_k_cyan_free_bound -2.7004 NA NA log_k_cyan_bound_free -3.5078 NA NA log_k_JCZ38 -2.9255 NA NA log_k_J9Z38 -5.1089 NA NA log_k_JSE76 -3.6263 NA NA f_cyan_ilr_1 0.6873 NA NA f_cyan_ilr_2 0.6498 NA NA f_JCZ38_qlogis 3624.2149 NA NA f_JSE76_qlogis 1.9991 NA NA a.1 2.7472 2.55559 2.9388 SD.log_k_cyan_free 0.3227 0.10296 0.5423 SD.log_k_cyan_free_bound 0.8757 0.29525 1.4562 SD.log_k_cyan_bound_free 0.6128 0.20220 1.0233 SD.log_k_JCZ38 1.3431 0.48474 2.2014 SD.log_k_J9Z38 0.6881 0.14714 1.2291 SD.log_k_JSE76 0.6461 0.15321 1.1390 SD.f_cyan_ilr_1 0.3361 0.11376 0.5585 SD.f_cyan_ilr_2 0.4286 0.08419 0.7730 Correlation is not available Random effects: est. lower upper SD.log_k_cyan_free 0.3227 0.10296 0.5423 SD.log_k_cyan_free_bound 0.8757 0.29525 1.4562 SD.log_k_cyan_bound_free 0.6128 0.20220 1.0233 SD.log_k_JCZ38 1.3431 0.48474 2.2014 SD.log_k_J9Z38 0.6881 0.14714 1.2291 SD.log_k_JSE76 0.6461 0.15321 1.1390 SD.f_cyan_ilr_1 0.3361 0.11376 0.5585 SD.f_cyan_ilr_2 0.4286 0.08419 0.7730 Variance model: est. lower upper a.1 2.747 2.556 2.939 Backtransformed parameters: est. lower upper cyan_free_0 1.027e+02 NA NA k_cyan_free 5.758e-02 NA NA k_cyan_free_bound 6.718e-02 NA NA k_cyan_bound_free 2.996e-02 NA NA k_JCZ38 5.364e-02 NA NA k_J9Z38 6.042e-03 NA NA k_JSE76 2.662e-02 NA NA f_cyan_free_to_JCZ38 6.039e-01 NA NA f_cyan_free_to_J9Z38 2.285e-01 NA NA f_JCZ38_to_JSE76 1.000e+00 NA NA f_JSE76_to_JCZ38 8.807e-01 NA NA Estimated Eigenvalues of SFORB model(s): cyan_b1 cyan_b2 cyan_g 0.1426 0.0121 0.3484 Resulting formation fractions: ff cyan_free_JCZ38 0.6039 cyan_free_J9Z38 0.2285 cyan_free_sink 0.1676 cyan_free 1.0000 JCZ38_JSE76 1.0000 JCZ38_sink 0.0000 JSE76_JCZ38 0.8807 JSE76_sink 0.1193 Estimated disappearance times: DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 cyan 23.84 154.95 46.65 4.86 57.31 JCZ38 12.92 42.93 NA NA NA J9Z38 114.71 381.07 NA NA NA JSE76 26.04 86.51 NA NA NA saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:12:36 2025 Date of summary: Fri Feb 14 08:12:55 2025 Equations: d_cyan_free/dt = - k_cyan_free * cyan_free - k_cyan_free_bound * cyan_free + k_cyan_bound_free * cyan_bound d_cyan_bound/dt = + k_cyan_free_bound * cyan_free - k_cyan_bound_free * cyan_bound d_JCZ38/dt = + f_cyan_free_to_JCZ38 * k_cyan_free * cyan_free - k_JCZ38 * JCZ38 + f_JSE76_to_JCZ38 * k_JSE76 * JSE76 d_J9Z38/dt = + f_cyan_free_to_J9Z38 * k_cyan_free * cyan_free - k_J9Z38 * J9Z38 d_JSE76/dt = + f_JCZ38_to_JSE76 * k_JCZ38 * JCZ38 - k_JSE76 * JSE76 Data: 433 observations of 4 variable(s) grouped in 5 datasets Model predictions using solution type deSolve Fitted in 868.952 s Using 300, 100 iterations and 10 chains Variance model: Two-component variance function Starting values for degradation parameters: cyan_free_0 log_k_cyan_free log_k_cyan_free_bound 101.7511 -2.8370 -3.0162 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 -3.6600 -2.2988 -5.3129 log_k_JSE76 f_cyan_ilr_1 f_cyan_ilr_2 -3.6991 0.6722 4.8596 f_JCZ38_qlogis f_JSE76_qlogis 13.4678 14.2149 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): cyan_free_0 log_k_cyan_free log_k_cyan_free_bound cyan_free_0 5.629 0.000 0.000 log_k_cyan_free 0.000 0.446 0.000 log_k_cyan_free_bound 0.000 0.000 1.449 log_k_cyan_bound_free 0.000 0.000 0.000 log_k_JCZ38 0.000 0.000 0.000 log_k_J9Z38 0.000 0.000 0.000 log_k_JSE76 0.000 0.000 0.000 f_cyan_ilr_1 0.000 0.000 0.000 f_cyan_ilr_2 0.000 0.000 0.000 f_JCZ38_qlogis 0.000 0.000 0.000 f_JSE76_qlogis 0.000 0.000 0.000 log_k_cyan_bound_free log_k_JCZ38 log_k_J9Z38 log_k_JSE76 cyan_free_0 0.000 0.0000 0.000 0.0000 log_k_cyan_free 0.000 0.0000 0.000 0.0000 log_k_cyan_free_bound 0.000 0.0000 0.000 0.0000 log_k_cyan_bound_free 1.213 0.0000 0.000 0.0000 log_k_JCZ38 0.000 0.7801 0.000 0.0000 log_k_J9Z38 0.000 0.0000 1.575 0.0000 log_k_JSE76 0.000 0.0000 0.000 0.8078 f_cyan_ilr_1 0.000 0.0000 0.000 0.0000 f_cyan_ilr_2 0.000 0.0000 0.000 0.0000 f_JCZ38_qlogis 0.000 0.0000 0.000 0.0000 f_JSE76_qlogis 0.000 0.0000 0.000 0.0000 f_cyan_ilr_1 f_cyan_ilr_2 f_JCZ38_qlogis f_JSE76_qlogis cyan_free_0 0.0000 0.000 0.00 0.00 log_k_cyan_free 0.0000 0.000 0.00 0.00 log_k_cyan_free_bound 0.0000 0.000 0.00 0.00 log_k_cyan_bound_free 0.0000 0.000 0.00 0.00 log_k_JCZ38 0.0000 0.000 0.00 0.00 log_k_J9Z38 0.0000 0.000 0.00 0.00 log_k_JSE76 0.0000 0.000 0.00 0.00 f_cyan_ilr_1 0.6518 0.000 0.00 0.00 f_cyan_ilr_2 0.0000 9.981 0.00 0.00 f_JCZ38_qlogis 0.0000 0.000 14.26 0.00 f_JSE76_qlogis 0.0000 0.000 0.00 16.17 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 2241 2233 -1101 Optimised parameters: est. lower upper cyan_free_0 100.95469 NA NA log_k_cyan_free -3.18706 NA NA log_k_cyan_free_bound -3.38455 NA NA log_k_cyan_bound_free -3.75788 NA NA log_k_JCZ38 -2.77024 NA NA log_k_J9Z38 -5.03665 NA NA log_k_JSE76 -3.60289 NA NA f_cyan_ilr_1 0.72263 NA NA f_cyan_ilr_2 1.45352 NA NA f_JCZ38_qlogis 2.00778 NA NA f_JSE76_qlogis 941.58570 NA NA a.1 2.11130 1.91479 2.30780 b.1 0.06299 0.05152 0.07445 SD.log_k_cyan_free 0.50098 0.18805 0.81390 SD.log_k_cyan_bound_free 0.31671 0.08467 0.54875 SD.log_k_JCZ38 1.25865 0.45932 2.05798 SD.log_k_J9Z38 0.86833 0.27222 1.46444 SD.log_k_JSE76 0.59325 0.14711 1.03940 SD.f_cyan_ilr_1 0.35705 0.12521 0.58890 SD.f_cyan_ilr_2 0.88541 0.13797 1.63286 Correlation is not available Random effects: est. lower upper SD.log_k_cyan_free 0.5010 0.18805 0.8139 SD.log_k_cyan_bound_free 0.3167 0.08467 0.5487 SD.log_k_JCZ38 1.2587 0.45932 2.0580 SD.log_k_J9Z38 0.8683 0.27222 1.4644 SD.log_k_JSE76 0.5933 0.14711 1.0394 SD.f_cyan_ilr_1 0.3571 0.12521 0.5889 SD.f_cyan_ilr_2 0.8854 0.13797 1.6329 Variance model: est. lower upper a.1 2.11130 1.91479 2.30780 b.1 0.06299 0.05152 0.07445 Backtransformed parameters: est. lower upper cyan_free_0 1.010e+02 NA NA k_cyan_free 4.129e-02 NA NA k_cyan_free_bound 3.389e-02 NA NA k_cyan_bound_free 2.333e-02 NA NA k_JCZ38 6.265e-02 NA NA k_J9Z38 6.495e-03 NA NA k_JSE76 2.724e-02 NA NA f_cyan_free_to_JCZ38 6.844e-01 NA NA f_cyan_free_to_J9Z38 2.463e-01 NA NA f_JCZ38_to_JSE76 8.816e-01 NA NA f_JSE76_to_JCZ38 1.000e+00 NA NA Estimated Eigenvalues of SFORB model(s): cyan_b1 cyan_b2 cyan_g 0.08751 0.01101 0.39586 Resulting formation fractions: ff cyan_free_JCZ38 0.68444 cyan_free_J9Z38 0.24633 cyan_free_sink 0.06923 cyan_free 1.00000 JCZ38_JSE76 0.88161 JCZ38_sink 0.11839 JSE76_JCZ38 1.00000 JSE76_sink 0.00000 Estimated disappearance times: DT50 DT90 DT50back DT50_cyan_b1 DT50_cyan_b2 cyan 25.36 163.36 49.18 7.921 62.95 JCZ38 11.06 36.75 NA NA NA J9Z38 106.71 354.49 NA NA NA JSE76 25.44 84.51 NA NA NA"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"session-info","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Session info","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"","code":"R version 4.4.2 (2024-10-31) Platform: x86_64-pc-linux-gnu Running under: Debian GNU/Linux 12 (bookworm) Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 locale: [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8 [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C time zone: Europe/Berlin tzcode source: system (glibc) attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] rmarkdown_2.29 nvimcom_0.9-167 saemix_3.3 npde_3.5 [5] knitr_1.49 mkin_1.2.10 loaded via a namespace (and not attached): [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3 lattice_0.22-6 [5] digest_0.6.37 magrittr_2.0.3 evaluate_1.0.1 grid_4.4.2 [9] fastmap_1.2.0 cellranger_1.1.0 jsonlite_1.8.9 processx_3.8.4 [13] pkgbuild_1.4.5 deSolve_1.40 mclust_6.1.1 ps_1.8.1 [17] gridExtra_2.3 fansi_1.0.6 scales_1.3.0 codetools_0.2-20 [21] textshaping_0.4.1 jquerylib_0.1.4 cli_3.6.3 rlang_1.1.4 [25] munsell_0.5.1 cachem_1.1.0 yaml_2.3.10 inline_0.3.20 [29] tools_4.4.2 dplyr_1.1.4 colorspace_2.1-1 ggplot2_3.5.1 [33] vctrs_0.6.5 R6_2.5.1 zoo_1.8-12 lifecycle_1.0.4 [37] fs_1.6.5 htmlwidgets_1.6.4 MASS_7.3-61 ragg_1.3.3 [41] callr_3.7.6 pkgconfig_2.0.3 desc_1.4.3 pkgdown_2.1.1 [45] pillar_1.9.0 bslib_0.8.0 gtable_0.3.6 glue_1.8.0 [49] systemfonts_1.1.0 xfun_0.49 tibble_3.2.1 lmtest_0.9-40 [53] tidyselect_1.2.1 htmltools_0.5.8.1 nlme_3.1-166 compiler_4.4.2 [57] readxl_1.4.3"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html","id":"hardware-info","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Hardware info","title":"Testing hierarchical pathway kinetics with residue data on cyantraniliprole","text":"","code":"CPU model: AMD Ryzen 9 7950X 16-Core Processor MemTotal: 64927788 kB"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"introduction","dir":"Articles > Prebuilt","previous_headings":"","what":"Introduction","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"purpose document demonstrate nonlinear hierarchical models (NLHM) based parent degradation models SFO, FOMC, DFOP HS can fitted mkin package. assembled course work package 1.1 Project Number 173340 (Application nonlinear hierarchical models kinetic evaluation chemical degradation data) German Environment Agency carried 2022 2023. mkin package used version 1.2.10. contains test data functions used evaluations. saemix package used backend fitting NLHM, also loaded make convergence plot function available. document processed knitr package, also provides kable function used improve display tabular data R markdown documents. parallel processing, parallel package used.","code":"library(mkin) library(knitr) library(saemix) library(parallel) n_cores <- detectCores() if (Sys.info()[\"sysname\"] == \"Windows\") { cl <- makePSOCKcluster(n_cores) } else { cl <- makeForkCluster(n_cores) }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"data","dir":"Articles > Prebuilt","previous_headings":"","what":"Data","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"test data available mkin package object class mkindsg (mkin dataset group) identifier dimethenamid_2018. following preprocessing steps still necessary: data available enantiomer dimethenamid-P (DMTAP) renamed substance name data racemic mixture dimethenamid (DMTA). reason difference degradation behaviour identified EU risk assessment. data transformation products unnecessary columns discarded observation times dataset multiplied corresponding normalisation factor also available dataset, order make possible describe datasets single set parameters independent temperature Finally, datasets observed soil (Elliot 1 Elliot 2) combined, resulting dimethenamid (DMTA) data six soils. following commented R code performs preprocessing. following tables show 6 datasets. Dataset Calke Dataset Borstel Dataset Flaach Dataset BBA 2.2 Dataset BBA 2.3 Dataset Elliot","code":"# Apply a function to each of the seven datasets in the mkindsg object to create a list dmta_ds <- lapply(1:7, function(i) { ds_i <- dimethenamid_2018$ds[[i]]$data # Get a dataset ds_i[ds_i$name == \"DMTAP\", \"name\"] <- \"DMTA\" # Rename DMTAP to DMTA ds_i <- subset(ds_i, name == \"DMTA\", c(\"name\", \"time\", \"value\")) # Select data ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i] # Normalise time ds_i # Return the dataset }) # Use dataset titles as names for the list elements names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title) # Combine data for Elliot soil to obtain a named list with six elements dmta_ds[[\"Elliot\"]] <- rbind(dmta_ds[[\"Elliot 1\"]], dmta_ds[[\"Elliot 2\"]]) # dmta_ds[[\"Elliot 1\"]] <- NULL dmta_ds[[\"Elliot 2\"]] <- NULL for (ds_name in names(dmta_ds)) { print(kable(mkin_long_to_wide(dmta_ds[[ds_name]]), caption = paste(\"Dataset\", ds_name), label = paste0(\"tab:\", ds_name), booktabs = TRUE)) cat(\"\\n\\\\clearpage\\n\") }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"separate-evaluations","dir":"Articles > Prebuilt","previous_headings":"","what":"Separate evaluations","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"order obtain suitable starting parameters NLHM fits, separate fits four models data soil generated using mmkin function mkin package. first step, constant variance assumed. Convergence checked status function. table , OK indicates convergence, C indicates failure converge. separate fits constant variance converged, sole exception HS fit BBA 2.2 data. prepare fitting NLHM using two-component error model, separate fits updated assuming two-component error. Using two-component error model, one fit converge constant variance converge, non-SFO fits failed converge.","code":"deg_mods <- c(\"SFO\", \"FOMC\", \"DFOP\", \"HS\") f_sep_const <- mmkin( deg_mods, dmta_ds, error_model = \"const\", quiet = TRUE) status(f_sep_const) |> kable() f_sep_tc <- update(f_sep_const, error_model = \"tc\") status(f_sep_tc) |> kable()"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"hierarchichal-model-fits","dir":"Articles > Prebuilt","previous_headings":"","what":"Hierarchichal model fits","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"following code fits eight versions hierarchical models data, using SFO, FOMC, DFOP HS parent compound, using either constant variance two-component error error model. default parameter distribution model mkin allows variation degradation parameters across assumed population soils. words, degradation parameter associated random effect first step. mhmkin function makes possible fit eight versions parallel (given sufficient number computing cores available) save execution time. Convergence plots summaries fits shown appendix. output status function shows fits terminated successfully. AIC BIC values show biphasic models DFOP HS give best fits. DFOP model preferred , better mechanistic basis batch experiments constant incubation conditions. Also, shows lowest AIC BIC values first set fits combined two-component error model. Therefore, DFOP model selected refinements fits aim make model fully identifiable.","code":"f_saem <- mhmkin(list(f_sep_const, f_sep_tc), transformations = \"saemix\") status(f_saem) |> kable() anova(f_saem) |> kable(digits = 1)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"parameter-identifiability-based-on-the-fisher-information-matrix","dir":"Articles > Prebuilt","previous_headings":"Hierarchichal model fits","what":"Parameter identifiability based on the Fisher Information Matrix","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"Using illparms function, ill-defined statistical model parameters standard deviations degradation parameters population error model parameters can found. According illparms function, fitted standard deviation second kinetic rate constant k2 ill-defined DFOP fits. suggests different values obtained standard deviation using different starting values. thus identified overparameterisation addressed removing random effect k2 parameter model. resulting fit, checked whether still ill-defined parameters, case. , refined model compared previous best model. model without random effect k2 reduced version previous model. Therefore, models nested can compared using likelihood ratio test. achieved argument test = TRUE anova function. AIC BIC criteria lower removal ill-defined random effect k2. p value likelihood ratio test much greater 0.05, indicating model higher likelihood (model random effects degradation parameters f_saem[[\"DFOP\", \"tc\"]]) fit significantly better model lower likelihood (reduced model f_saem_dfop_tc_no_ranef_k2). Therefore, AIC, BIC likelihood ratio test suggest use reduced model. convergence fit checked visually. Convergence plot NLHM DFOP fit two-component error without random effect ‘k2’ parameters appear converged satisfactory degree. final fit plotted using plot method mkin package. Plot final NLHM DFOP fit Finally, summary report fit produced.","code":"illparms(f_saem) |> kable() f_saem_dfop_tc_no_ranef_k2 <- update(f_saem[[\"DFOP\", \"tc\"]], no_random_effect = \"k2\") illparms(f_saem_dfop_tc_no_ranef_k2) anova(f_saem[[\"DFOP\", \"tc\"]], f_saem_dfop_tc_no_ranef_k2, test = TRUE) |> kable(format.args = list(digits = 4)) plot(f_saem_dfop_tc_no_ranef_k2) summary(f_saem_dfop_tc_no_ranef_k2) saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:19 2025 Date of summary: Fri Feb 14 08:13:19 2025 Equations: d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 4.154 s Using 300, 100 iterations and 9 chains Variance model: Two-component variance function Starting values for degradation parameters: DMTA_0 k1 k2 g 98.71186 0.08675 0.01374 0.93491 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 k1 k2 g DMTA_0 98.71 0 0 0 k1 0.00 1 0 0 k2 0.00 0 1 0 g 0.00 0 0 1 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 663.7 661.8 -322.9 Optimised parameters: est. lower upper DMTA_0 98.256267 96.286112 100.22642 k1 0.064037 0.033281 0.09479 k2 0.008469 0.006002 0.01094 g 0.954167 0.914460 0.99387 a.1 1.061795 0.878608 1.24498 b.1 0.029550 0.022593 0.03651 SD.DMTA_0 2.068581 0.427178 3.70998 SD.k1 0.598285 0.258235 0.93833 SD.g 1.016689 0.360061 1.67332 Correlation: DMTA_0 k1 k2 k1 0.0213 k2 0.0541 0.0344 g -0.0521 -0.0286 -0.2744 Random effects: est. lower upper SD.DMTA_0 2.0686 0.4272 3.7100 SD.k1 0.5983 0.2582 0.9383 SD.g 1.0167 0.3601 1.6733 Variance model: est. lower upper a.1 1.06180 0.87861 1.24498 b.1 0.02955 0.02259 0.03651 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 DMTA 11.45 41.32 12.44 10.82 81.85"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"alternative-check-of-parameter-identifiability","dir":"Articles > Prebuilt","previous_headings":"Hierarchichal model fits","what":"Alternative check of parameter identifiability","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"parameter check used illparms function based quadratic approximation likelihood surface near optimum, calculated using Fisher Information Matrix (FIM). alternative way check parameter identifiability (Duchesne et al. 2021) based multistart approach recently implemented mkin. graph shows boxplots parameters obtained 50 runs saem algorithm different parameter combinations, sampled range parameters obtained individual datasets fitted separately using nonlinear regression. Scaled parameters multistart runs, full model graph clearly confirms lack identifiability variance k2 full model. overparameterisation model also indicates lack identifiability variance parameter g. parameter boxplots multistart runs reduced model shown indicate runs give similar results, regardless starting parameters. Scaled parameters multistart runs, reduced model parameters top 25% fits shown (based feature introduced mkin 1.2.2 currently development), scatter even less shown . Scaled parameters multistart runs, reduced model, fits top 25% likelihood values","code":"f_saem_dfop_tc_multi <- multistart(f_saem[[\"DFOP\", \"tc\"]], n = 50, cores = 15) par(mar = c(6.1, 4.1, 2.1, 2.1)) parplot(f_saem_dfop_tc_multi, lpos = \"bottomright\", ylim = c(0.3, 10), las = 2) f_saem_dfop_tc_no_ranef_k2_multi <- multistart(f_saem_dfop_tc_no_ranef_k2, n = 50, cores = 15) par(mar = c(6.1, 4.1, 2.1, 2.1)) parplot(f_saem_dfop_tc_no_ranef_k2_multi, ylim = c(0.5, 2), las = 2, lpos = \"bottomright\") par(mar = c(6.1, 4.1, 2.1, 2.1)) parplot(f_saem_dfop_tc_no_ranef_k2_multi, ylim = c(0.5, 2), las = 2, llquant = 0.25, lpos = \"bottomright\")"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"conclusions","dir":"Articles > Prebuilt","previous_headings":"","what":"Conclusions","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"Fitting four parent degradation models SFO, FOMC, DFOP HS part hierarchical model fits two different error models normal distributions transformed degradation parameters works without technical problems. biphasic models DFOP HS gave best fit data, default parameter distribution model fully identifiable. Removing random effect second kinetic rate constant DFOP model resulted reduced model fully identifiable showed lowest values model selection criteria AIC BIC. reliability identification model parameters confirmed using multiple starting values.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"acknowledgements","dir":"Articles > Prebuilt","previous_headings":"","what":"Acknowledgements","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"helpful comments Janina Wöltjen German Environment Agency gratefully acknowledged.","code":""},{"path":[]},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"hierarchical-model-fit-listings","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Hierarchical model fit listings","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"Hierarchical mkin fit SFO model error model const Hierarchical mkin fit SFO model error model tc Hierarchical mkin fit FOMC model error model const Hierarchical mkin fit FOMC model error model tc Hierarchical mkin fit DFOP model error model const Hierarchical mkin fit DFOP model error model tc Hierarchical mkin fit HS model error model const Hierarchical mkin fit HS model error model tc","code":"saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:11 2025 Date of summary: Fri Feb 14 08:14:22 2025 Equations: d_DMTA/dt = - k_DMTA * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 0.869 s Using 300, 100 iterations and 9 chains Variance model: Constant variance Starting values for degradation parameters: DMTA_0 k_DMTA 97.2953 0.0566 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 k_DMTA DMTA_0 97.3 0 k_DMTA 0.0 1 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 796.3 795.3 -393.2 Optimised parameters: est. lower upper DMTA_0 97.28130 95.71113 98.8515 k_DMTA 0.05665 0.02909 0.0842 a.1 2.66442 2.35579 2.9731 SD.DMTA_0 1.54776 0.15447 2.9411 SD.k_DMTA 0.60690 0.26248 0.9513 Correlation: DMTA_0 k_DMTA 0.0168 Random effects: est. lower upper SD.DMTA_0 1.5478 0.1545 2.9411 SD.k_DMTA 0.6069 0.2625 0.9513 Variance model: est. lower upper a.1 2.664 2.356 2.973 Estimated disappearance times: DT50 DT90 DMTA 12.24 40.65 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:13 2025 Date of summary: Fri Feb 14 08:14:22 2025 Equations: d_DMTA/dt = - k_DMTA * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 2.423 s Using 300, 100 iterations and 9 chains Variance model: Two-component variance function Starting values for degradation parameters: DMTA_0 k_DMTA 96.99175 0.05603 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 k_DMTA DMTA_0 96.99 0 k_DMTA 0.00 1 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 798.3 797.1 -393.2 Optimised parameters: est. lower upper DMTA_0 97.271822 95.70316 98.84049 k_DMTA 0.056638 0.02911 0.08417 a.1 2.660081 2.27492 3.04525 b.1 0.001665 -0.14451 0.14784 SD.DMTA_0 1.545520 0.14301 2.94803 SD.k_DMTA 0.606422 0.26227 0.95057 Correlation: DMTA_0 k_DMTA 0.0169 Random effects: est. lower upper SD.DMTA_0 1.5455 0.1430 2.9480 SD.k_DMTA 0.6064 0.2623 0.9506 Variance model: est. lower upper a.1 2.660081 2.2749 3.0452 b.1 0.001665 -0.1445 0.1478 Estimated disappearance times: DT50 DT90 DMTA 12.24 40.65 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:11 2025 Date of summary: Fri Feb 14 08:14:22 2025 Equations: d_DMTA/dt = - (alpha/beta) * 1/((time/beta) + 1) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 1.228 s Using 300, 100 iterations and 9 chains Variance model: Constant variance Starting values for degradation parameters: DMTA_0 alpha beta 98.292 9.909 156.341 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 alpha beta DMTA_0 98.29 0 0 alpha 0.00 1 0 beta 0.00 0 1 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 734.2 732.7 -360.1 Optimised parameters: est. lower upper DMTA_0 98.3435 96.9033 99.784 alpha 7.2007 2.5889 11.812 beta 112.8745 34.8816 190.867 a.1 2.0459 1.8054 2.286 SD.DMTA_0 1.4795 0.2717 2.687 SD.alpha 0.6396 0.1509 1.128 SD.beta 0.6874 0.1587 1.216 Correlation: DMTA_0 alpha alpha -0.1125 beta -0.1227 0.3632 Random effects: est. lower upper SD.DMTA_0 1.4795 0.2717 2.687 SD.alpha 0.6396 0.1509 1.128 SD.beta 0.6874 0.1587 1.216 Variance model: est. lower upper a.1 2.046 1.805 2.286 Estimated disappearance times: DT50 DT90 DT50back DMTA 11.41 42.53 12.8 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:13 2025 Date of summary: Fri Feb 14 08:14:22 2025 Equations: d_DMTA/dt = - (alpha/beta) * 1/((time/beta) + 1) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 2.87 s Using 300, 100 iterations and 9 chains Variance model: Two-component variance function Starting values for degradation parameters: DMTA_0 alpha beta 98.772 4.663 92.597 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 alpha beta DMTA_0 98.77 0 0 alpha 0.00 1 0 beta 0.00 0 1 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 720.7 719.1 -352.4 Optimised parameters: est. lower upper DMTA_0 99.10577 97.33296 100.87859 alpha 5.46260 2.52199 8.40321 beta 81.66080 30.46664 132.85497 a.1 1.50219 1.25801 1.74636 b.1 0.02893 0.02048 0.03739 SD.DMTA_0 1.61887 -0.03843 3.27618 SD.alpha 0.58145 0.17364 0.98925 SD.beta 0.68205 0.21108 1.15302 Correlation: DMTA_0 alpha alpha -0.1321 beta -0.1430 0.2467 Random effects: est. lower upper SD.DMTA_0 1.6189 -0.03843 3.2762 SD.alpha 0.5814 0.17364 0.9892 SD.beta 0.6821 0.21108 1.1530 Variance model: est. lower upper a.1 1.50219 1.25801 1.74636 b.1 0.02893 0.02048 0.03739 Estimated disappearance times: DT50 DT90 DT50back DMTA 11.05 42.81 12.89 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:12 2025 Date of summary: Fri Feb 14 08:14:22 2025 Equations: d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 1.843 s Using 300, 100 iterations and 9 chains Variance model: Constant variance Starting values for degradation parameters: DMTA_0 k1 k2 g 98.64383 0.09211 0.02999 0.76814 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 k1 k2 g DMTA_0 98.64 0 0 0 k1 0.00 1 0 0 k2 0.00 0 1 0 g 0.00 0 0 1 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 711.8 710 -346.9 Optimised parameters: est. lower upper DMTA_0 98.092481 96.573899 99.61106 k1 0.062499 0.030336 0.09466 k2 0.009065 -0.005133 0.02326 g 0.948967 0.862080 1.03586 a.1 1.821671 1.604774 2.03857 SD.DMTA_0 1.677785 0.472066 2.88350 SD.k1 0.634962 0.270788 0.99914 SD.k2 1.033498 -0.205994 2.27299 SD.g 1.710046 0.428642 2.99145 Correlation: DMTA_0 k1 k2 k1 0.0246 k2 0.0491 0.0953 g -0.0552 -0.0889 -0.4795 Random effects: est. lower upper SD.DMTA_0 1.678 0.4721 2.8835 SD.k1 0.635 0.2708 0.9991 SD.k2 1.033 -0.2060 2.2730 SD.g 1.710 0.4286 2.9914 Variance model: est. lower upper a.1 1.822 1.605 2.039 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 DMTA 11.79 42.8 12.88 11.09 76.46 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:14 2025 Date of summary: Fri Feb 14 08:14:22 2025 Equations: d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 3.469 s Using 300, 100 iterations and 9 chains Variance model: Two-component variance function Starting values for degradation parameters: DMTA_0 k1 k2 g 98.71186 0.08675 0.01374 0.93491 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 k1 k2 g DMTA_0 98.71 0 0 0 k1 0.00 1 0 0 k2 0.00 0 1 0 g 0.00 0 0 1 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 665.7 663.6 -322.9 Optimised parameters: est. lower upper DMTA_0 98.347470 96.380815 100.31413 k1 0.064524 0.034279 0.09477 k2 0.008304 0.005843 0.01076 g 0.952128 0.909578 0.99468 a.1 1.068907 0.883665 1.25415 b.1 0.029265 0.022318 0.03621 SD.DMTA_0 2.065796 0.427951 3.70364 SD.k1 0.583703 0.251796 0.91561 SD.k2 0.004167 -7.831228 7.83956 SD.g 1.064450 0.397479 1.73142 Correlation: DMTA_0 k1 k2 k1 0.0223 k2 0.0568 0.0394 g -0.0464 -0.0269 -0.2713 Random effects: est. lower upper SD.DMTA_0 2.065796 0.4280 3.7036 SD.k1 0.583703 0.2518 0.9156 SD.k2 0.004167 -7.8312 7.8396 SD.g 1.064450 0.3975 1.7314 Variance model: est. lower upper a.1 1.06891 0.88367 1.25415 b.1 0.02927 0.02232 0.03621 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 DMTA 11.39 41.36 12.45 10.74 83.48 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:12 2025 Date of summary: Fri Feb 14 08:14:22 2025 Equations: d_DMTA/dt = - ifelse(time <= tb, k1, k2) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 1.698 s Using 300, 100 iterations and 9 chains Variance model: Constant variance Starting values for degradation parameters: DMTA_0 k1 k2 tb 97.82176 0.06931 0.02997 11.13945 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 k1 k2 tb DMTA_0 97.82 0 0 0 k1 0.00 1 0 0 k2 0.00 0 1 0 tb 0.00 0 0 1 Starting values for error model parameters: a.1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 714 712.1 -348 Optimised parameters: est. lower upper DMTA_0 98.16102 96.47747 99.84456 k1 0.07876 0.05261 0.10491 k2 0.02227 0.01706 0.02747 tb 13.99089 -7.40049 35.38228 a.1 1.82305 1.60700 2.03910 SD.DMTA_0 1.88413 0.56204 3.20622 SD.k1 0.34292 0.10482 0.58102 SD.k2 0.19851 0.01718 0.37985 SD.tb 1.68168 0.58064 2.78272 Correlation: DMTA_0 k1 k2 k1 0.0142 k2 0.0001 -0.0025 tb 0.0165 -0.1256 -0.0301 Random effects: est. lower upper SD.DMTA_0 1.8841 0.56204 3.2062 SD.k1 0.3429 0.10482 0.5810 SD.k2 0.1985 0.01718 0.3798 SD.tb 1.6817 0.58064 2.7827 Variance model: est. lower upper a.1 1.823 1.607 2.039 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 DMTA 8.801 67.91 20.44 8.801 31.13 saemix version used for fitting: 3.3 mkin version used for pre-fitting: 1.2.10 R version used for fitting: 4.4.2 Date of fit: Fri Feb 14 08:13:13 2025 Date of summary: Fri Feb 14 08:14:22 2025 Equations: d_DMTA/dt = - ifelse(time <= tb, k1, k2) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Model predictions using solution type analytical Fitted in 3.307 s Using 300, 100 iterations and 9 chains Variance model: Two-component variance function Starting values for degradation parameters: DMTA_0 k1 k2 tb 98.45190 0.07525 0.02576 19.19375 Fixed degradation parameter values: None Starting values for random effects (square root of initial entries in omega): DMTA_0 k1 k2 tb DMTA_0 98.45 0 0 0 k1 0.00 1 0 0 k2 0.00 0 1 0 tb 0.00 0 0 1 Starting values for error model parameters: a.1 b.1 1 1 Results: Likelihood computed by importance sampling AIC BIC logLik 667.1 665 -323.6 Optimised parameters: est. lower upper DMTA_0 97.76571 95.81350 99.71791 k1 0.05855 0.03080 0.08630 k2 0.02337 0.01664 0.03010 tb 31.09638 29.38289 32.80987 a.1 1.08835 0.90059 1.27611 b.1 0.02964 0.02261 0.03667 SD.DMTA_0 2.04877 0.42553 3.67200 SD.k1 0.59166 0.25621 0.92711 SD.k2 0.30698 0.09561 0.51835 SD.tb 0.01274 -0.10915 0.13464 Correlation: DMTA_0 k1 k2 k1 0.0160 k2 -0.0070 -0.0024 tb -0.0668 -0.0103 -0.2013 Random effects: est. lower upper SD.DMTA_0 2.04877 0.42553 3.6720 SD.k1 0.59166 0.25621 0.9271 SD.k2 0.30698 0.09561 0.5183 SD.tb 0.01274 -0.10915 0.1346 Variance model: est. lower upper a.1 1.08835 0.90059 1.27611 b.1 0.02964 0.02261 0.03667 Estimated disappearance times: DT50 DT90 DT50back DT50_k1 DT50_k2 DMTA 11.84 51.71 15.57 11.84 29.66"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"hierarchical-model-convergence-plots","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Hierarchical model convergence plots","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"Convergence plot NLHM SFO fit constant variance Convergence plot NLHM SFO fit two-component error Convergence plot NLHM FOMC fit constant variance Convergence plot NLHM FOMC fit two-component error Convergence plot NLHM DFOP fit constant variance Convergence plot NLHM DFOP fit two-component error Convergence plot NLHM HS fit constant variance Convergence plot NLHM HS fit two-component error","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"session-info","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Session info","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"","code":"R version 4.4.2 (2024-10-31) Platform: x86_64-pc-linux-gnu Running under: Debian GNU/Linux 12 (bookworm) Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 locale: [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8 [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C time zone: Europe/Berlin tzcode source: system (glibc) attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] rmarkdown_2.29 nvimcom_0.9-167 saemix_3.3 npde_3.5 [5] knitr_1.49 mkin_1.2.10 loaded via a namespace (and not attached): [1] gtable_0.3.6 jsonlite_1.8.9 dplyr_1.1.4 compiler_4.4.2 [5] tidyselect_1.2.1 gridExtra_2.3 jquerylib_0.1.4 systemfonts_1.1.0 [9] scales_1.3.0 textshaping_0.4.1 yaml_2.3.10 fastmap_1.2.0 [13] lattice_0.22-6 ggplot2_3.5.1 R6_2.5.1 generics_0.1.3 [17] lmtest_0.9-40 MASS_7.3-61 htmlwidgets_1.6.4 tibble_3.2.1 [21] desc_1.4.3 munsell_0.5.1 bslib_0.8.0 pillar_1.9.0 [25] rlang_1.1.4 utf8_1.2.4 cachem_1.1.0 xfun_0.49 [29] fs_1.6.5 sass_0.4.9 cli_3.6.3 pkgdown_2.1.1 [33] magrittr_2.0.3 digest_0.6.37 grid_4.4.2 mclust_6.1.1 [37] lifecycle_1.0.4 nlme_3.1-166 vctrs_0.6.5 evaluate_1.0.1 [41] glue_1.8.0 codetools_0.2-20 ragg_1.3.3 zoo_1.8-12 [45] fansi_1.0.6 colorspace_2.1-1 pkgconfig_2.0.3 tools_4.4.2 [49] htmltools_0.5.8.1"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html","id":"hardware-info","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Hardware info","title":"Testing hierarchical parent degradation kinetics with residue data on dimethenamid and dimethenamid-P","text":"","code":"CPU model: AMD Ryzen 9 7950X 16-Core Processor MemTotal: 64927788 kB"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"introduction","dir":"Articles > Prebuilt","previous_headings":"","what":"Introduction","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"purpose document test demonstrate nonlinear hierarchical models (NLHM) based parent degradation models SFO, FOMC, DFOP HS, parallel formation two metabolites can fitted mkin package. assembled course work package 1.2 Project Number 173340 (Application nonlinear hierarchical models kinetic evaluation chemical degradation data) German Environment Agency carried 2022 2023. mkin package used version 1.2.10, currently development. contains test data, functions used evaluations. saemix package used backend fitting NLHM, also loaded make convergence plot function available. document processed knitr package, also provides kable function used improve display tabular data R markdown documents. parallel processing, parallel package used.","code":"library(mkin) library(knitr) library(saemix) library(parallel) n_cores <- detectCores() # We need to start a new cluster after defining a compiled model that is # saved as a DLL to the user directory, therefore we define a function # This is used again after defining the pathway model start_cluster <- function(n_cores) { if (Sys.info()[\"sysname\"] == \"Windows\") { ret <- makePSOCKcluster(n_cores) } else { ret <- makeForkCluster(n_cores) } return(ret) }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"data","dir":"Articles > Prebuilt","previous_headings":"","what":"Data","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"test data available mkin package object class mkindsg (mkin dataset group) identifier dimethenamid_2018. following preprocessing steps done document. data available enantiomer dimethenamid-P (DMTAP) renamed substance name data racemic mixture dimethenamid (DMTA). reason difference degradation behaviour identified EU risk assessment. Unnecessary columns discarded observation times dataset multiplied corresponding normalisation factor also available dataset, order make possible describe datasets single set parameters independent temperature Finally, datasets observed soil (Elliot 1 Elliot 2) combined, resulting dimethenamid (DMTA) data six soils. following commented R code performs preprocessing. following tables show 6 datasets. Dataset Calke Dataset Borstel Dataset Flaach Dataset BBA 2.2 Dataset BBA 2.3 Dataset Elliot","code":"# Apply a function to each of the seven datasets in the mkindsg object to create a list dmta_ds <- lapply(1:7, function(i) { ds_i <- dimethenamid_2018$ds[[i]]$data # Get a dataset ds_i[ds_i$name == \"DMTAP\", \"name\"] <- \"DMTA\" # Rename DMTAP to DMTA ds_i <- subset(ds_i, select = c(\"name\", \"time\", \"value\")) # Select data ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i] # Normalise time ds_i # Return the dataset }) # Use dataset titles as names for the list elements names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title) # Combine data for Elliot soil to obtain a named list with six elements dmta_ds[[\"Elliot\"]] <- rbind(dmta_ds[[\"Elliot 1\"]], dmta_ds[[\"Elliot 2\"]]) # dmta_ds[[\"Elliot 1\"]] <- NULL dmta_ds[[\"Elliot 2\"]] <- NULL for (ds_name in names(dmta_ds)) { print( kable(mkin_long_to_wide(dmta_ds[[ds_name]]), caption = paste(\"Dataset\", ds_name), booktabs = TRUE, row.names = FALSE)) cat(\"\\n\\\\clearpage\\n\") }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"separate-evaluations","dir":"Articles > Prebuilt","previous_headings":"","what":"Separate evaluations","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"first step obtain suitable starting parameters NLHM fits, separate fits several variants pathway model used previously (Ranke et al. 2021), varying kinetic model parent compound. SFORB model often provides faster convergence DFOP model, can sometimes fitted DFOP model results errors, included set parent models tested . separate pathway fits SFO FOMC parent constant variance converged (status OK). fits DFOP SFORB parent converged well. fits HS parent converge default settings. two-component error model, set fits convergence problems slightly different, convergence problems appearing different data sets applying DFOP SFORB model additional convergence problems using FOMC model parent.","code":"if (!dir.exists(\"dmta_dlls\")) dir.create(\"dmta_dlls\") m_sfo_path_1 <- mkinmod( DMTA = mkinsub(\"SFO\", c(\"M23\", \"M27\", \"M31\")), M23 = mkinsub(\"SFO\"), M27 = mkinsub(\"SFO\"), M31 = mkinsub(\"SFO\", \"M27\", sink = FALSE), name = \"m_sfo_path\", dll_dir = \"dmta_dlls\", unload = TRUE, overwrite = TRUE, quiet = TRUE ) m_fomc_path_1 <- mkinmod( DMTA = mkinsub(\"FOMC\", c(\"M23\", \"M27\", \"M31\")), M23 = mkinsub(\"SFO\"), M27 = mkinsub(\"SFO\"), M31 = mkinsub(\"SFO\", \"M27\", sink = FALSE), name = \"m_fomc_path\", dll_dir = \"dmta_dlls\", unload = TRUE, overwrite = TRUE, quiet = TRUE ) m_dfop_path_1 <- mkinmod( DMTA = mkinsub(\"DFOP\", c(\"M23\", \"M27\", \"M31\")), M23 = mkinsub(\"SFO\"), M27 = mkinsub(\"SFO\"), M31 = mkinsub(\"SFO\", \"M27\", sink = FALSE), name = \"m_dfop_path\", dll_dir = \"dmta_dlls\", unload = TRUE, overwrite = TRUE, quiet = TRUE ) m_sforb_path_1 <- mkinmod( DMTA = mkinsub(\"SFORB\", c(\"M23\", \"M27\", \"M31\")), M23 = mkinsub(\"SFO\"), M27 = mkinsub(\"SFO\"), M31 = mkinsub(\"SFO\", \"M27\", sink = FALSE), name = \"m_sforb_path\", dll_dir = \"dmta_dlls\", unload = TRUE, overwrite = TRUE, quiet = TRUE ) m_hs_path_1 <- mkinmod( DMTA = mkinsub(\"HS\", c(\"M23\", \"M27\", \"M31\")), M23 = mkinsub(\"SFO\"), M27 = mkinsub(\"SFO\"), M31 = mkinsub(\"SFO\", \"M27\", sink = FALSE), name = \"m_hs_path\", dll_dir = \"dmta_dlls\", unload = TRUE, overwrite = TRUE, quiet = TRUE ) cl <- start_cluster(n_cores) deg_mods_1 <- list( sfo_path_1 = m_sfo_path_1, fomc_path_1 = m_fomc_path_1, dfop_path_1 = m_dfop_path_1, sforb_path_1 = m_sforb_path_1, hs_path_1 = m_hs_path_1) sep_1_const <- mmkin( deg_mods_1, dmta_ds, error_model = \"const\", quiet = TRUE) status(sep_1_const) |> kable() sep_1_tc <- update(sep_1_const, error_model = \"tc\") status(sep_1_tc) |> kable()"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"hierarchichal-model-fits","dir":"Articles > Prebuilt","previous_headings":"","what":"Hierarchichal model fits","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"following code fits two sets corresponding hierarchical models data, one assuming constant variance, one assuming two-component error. run time fits around two hours five year old hardware. recent hardware upgrade fits complete less twenty minutes. According status function, fits terminated successfully. goodness--fit models compared, warning obtained, indicating likelihood pathway fit SFORB parent compound constant variance calculated importance sampling (method ‘’). default method AIC BIC comparisons based, variant included model comparison table. Comparing goodness--fit remaining models, HS model model two-component error provides best fit. However, batch experiments performed constant conditions experiments evaluated , reason assume discontinuity, SFORB model preferable mechanistic viewpoint. addition, information criteria AIC BIC similar HS SFORB. Therefore, SFORB model selected refinements.","code":"saem_1 <- mhmkin(list(sep_1_const, sep_1_tc)) status(saem_1) |> kable() anova(saem_1) |> kable(digits = 1)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"parameter-identifiability-based-on-the-fisher-information-matrix","dir":"Articles > Prebuilt","previous_headings":"Hierarchichal model fits","what":"Parameter identifiability based on the Fisher Information Matrix","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"Using illparms function, ill-defined statistical model parameters standard deviations degradation parameters population error model parameters can found. using constant variance, ill-defined variance parameters identified illparms function degradation models. using two-component error model, one ill-defined variance parameter variants except variant using DFOP parent compound. selected combination SFORB pathway model two-component error, random effect rate constant reversibly bound DMTA free DMTA (k_DMTA_bound_free) well-defined. Therefore, fit updated without assuming random effect parameter. expected, ill-defined parameters remain. model comparison shows reduced model preferable. convergence plot refined fit shown . parameters, example f_DMTA_ilr_1 f_DMTA_ilr_2, .e. two parameters determining formation fractions parallel formation three metabolites, movement parameters still visible second phase algorithm. However, amplitude movement range amplitude towards end first phase. Therefore, likely increase iterations improve parameter estimates much, proposed fit acceptable. numeric convergence criterion implemented saemix.","code":"illparms(saem_1) |> kable() saem_sforb_path_1_tc_reduced <- update(saem_1[[\"sforb_path_1\", \"tc\"]], no_random_effect = \"log_k_DMTA_bound_free\") illparms(saem_sforb_path_1_tc_reduced) anova(saem_1[[\"sforb_path_1\", \"tc\"]], saem_sforb_path_1_tc_reduced) |> kable(digits = 1) plot(saem_sforb_path_1_tc_reduced$so, plot.type = \"convergence\")"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"alternative-check-of-parameter-identifiability","dir":"Articles > Prebuilt","previous_headings":"Hierarchichal model fits","what":"Alternative check of parameter identifiability","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"alternative check parameter identifiability (Duchesne et al. 2021), multistart runs performed basis refined fit shown . 32 fits initiated, 17 terminated without error. reason wide variation starting parameters combination parameter variation used SAEM algorithm leads parameter combinations degradation model numerical integration routine cope . variation initial parameters, model fits take two times time original fit. Parameter boxplots multistart runs succeeded However, visual analysis boxplot parameters obtained successful fits confirms results sufficiently independent starting parameters, remaining ill-defined parameters.","code":"saem_sforb_path_1_tc_reduced_multi <- multistart(saem_sforb_path_1_tc_reduced, n = 32, cores = 10) (subscript) logical subscript too long print(saem_sforb_path_1_tc_reduced_multi) <multistart> object with 32 fits: E OK 7 25 OK: Fit terminated successfully E: Error par(mar = c(12.1, 4.1, 2.1, 2.1)) parplot(saem_sforb_path_1_tc_reduced_multi, ylim = c(0.5, 2), las = 2)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"plots-of-selected-fits","dir":"Articles > Prebuilt","previous_headings":"","what":"Plots of selected fits","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"SFORB pathway fits full reduced parameter distribution model shown . SFORB pathway fit two-component error SFORB pathway fit two-component error, reduced parameter model Plots remaining fits listings successful fits shown Appendix.","code":"plot(saem_1[[\"sforb_path_1\", \"tc\"]]) plot(saem_sforb_path_1_tc_reduced) stopCluster(cl)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"conclusions","dir":"Articles > Prebuilt","previous_headings":"","what":"Conclusions","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"Pathway fits SFO, FOMC, DFOP, SFORB HS models parent compound successfully performed.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"acknowledgements","dir":"Articles > Prebuilt","previous_headings":"","what":"Acknowledgements","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"helpful comments Janina Wöltjen German Environment Agency earlier versions document gratefully acknowledged.","code":""},{"path":[]},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"plots-of-hierarchical-fits-not-selected-for-refinement","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Plots of hierarchical fits not selected for refinement","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"SFO pathway fit two-component error FOMC pathway fit two-component error HS pathway fit two-component error","code":"plot(saem_1[[\"sfo_path_1\", \"tc\"]]) plot(saem_1[[\"fomc_path_1\", \"tc\"]]) plot(saem_1[[\"sforb_path_1\", \"tc\"]])"},{"path":[]},{"path":[]},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"session-info","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Session info","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"","code":"R version 4.4.2 (2024-10-31) Platform: x86_64-pc-linux-gnu Running under: Debian GNU/Linux 12 (bookworm) Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 locale: [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8 [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C time zone: Europe/Berlin tzcode source: system (glibc) attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] rmarkdown_2.29 nvimcom_0.9-167 saemix_3.3 npde_3.5 [5] knitr_1.49 mkin_1.2.10 loaded via a namespace (and not attached): [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3 lattice_0.22-6 [5] digest_0.6.37 magrittr_2.0.3 evaluate_1.0.1 grid_4.4.2 [9] fastmap_1.2.0 jsonlite_1.8.9 processx_3.8.4 pkgbuild_1.4.5 [13] deSolve_1.40 mclust_6.1.1 ps_1.8.1 gridExtra_2.3 [17] fansi_1.0.6 scales_1.3.0 codetools_0.2-20 textshaping_0.4.1 [21] jquerylib_0.1.4 cli_3.6.3 rlang_1.1.4 munsell_0.5.1 [25] cachem_1.1.0 yaml_2.3.10 inline_0.3.20 tools_4.4.2 [29] dplyr_1.1.4 colorspace_2.1-1 ggplot2_3.5.1 vctrs_0.6.5 [33] R6_2.5.1 zoo_1.8-12 lifecycle_1.0.4 fs_1.6.5 [37] htmlwidgets_1.6.4 MASS_7.3-61 ragg_1.3.3 pkgconfig_2.0.3 [41] desc_1.4.3 callr_3.7.6 pkgdown_2.1.1 pillar_1.9.0 [45] bslib_0.8.0 gtable_0.3.6 glue_1.8.0 systemfonts_1.1.0 [49] xfun_0.49 tibble_3.2.1 lmtest_0.9-40 tidyselect_1.2.1 [53] htmltools_0.5.8.1 nlme_3.1-166 compiler_4.4.2"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html","id":"hardware-info","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Hardware info","title":"Testing hierarchical pathway kinetics with residue data on dimethenamid and dimethenamid-P","text":"","code":"CPU model: AMD Ryzen 9 7950X 16-Core Processor MemTotal: 64927788 kB"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"introduction","dir":"Articles > Prebuilt","previous_headings":"","what":"Introduction","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"purpose document test demonstrate nonlinear hierarchical models (NLHM) based parent degradation models SFO, FOMC, DFOP HS can fitted mkin package, also considering influence covariates like soil pH different degradation parameters. case studies, SFORB parameterisation biexponential decline shown advantages DFOP parameterisation, SFORB included list tested models well. mkin package used version 1.2.10, contains functions used evaluations. saemix package used backend fitting NLHM, also loaded make convergence plot function available. document processed knitr package, also provides kable function used improve display tabular data R markdown documents. parallel processing, parallel package used.","code":"library(mkin) library(knitr) library(saemix) library(parallel) n_cores <- detectCores() if (Sys.info()[\"sysname\"] == \"Windows\") { cl <- makePSOCKcluster(n_cores) } else { cl <- makeForkCluster(n_cores) }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"test-data","dir":"Articles > Prebuilt","previous_headings":"Introduction","what":"Test data","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"following tables show covariate data 18 datasets read spreadsheet file. Covariate data Dataset Richmond Dataset Richmond 2 Dataset ERTC Dataset Toulouse Dataset Picket Piece Dataset 721 Dataset 722 Dataset 723 Dataset 724 Dataset 725 Dataset 727 Dataset 728 Dataset 729 Dataset 730 Dataset 731 Dataset 732 Dataset 741 Dataset 742","code":"data_file <- system.file( \"testdata\", \"mesotrione_soil_efsa_2016.xlsx\", package = \"mkin\") meso_ds <- read_spreadsheet(data_file, parent_only = TRUE) pH <- attr(meso_ds, \"covariates\") kable(pH, caption = \"Covariate data\") for (ds_name in names(meso_ds)) { print( kable(mkin_long_to_wide(meso_ds[[ds_name]]), caption = paste(\"Dataset\", ds_name), booktabs = TRUE, row.names = FALSE)) }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"separate-evaluations","dir":"Articles > Prebuilt","previous_headings":"","what":"Separate evaluations","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"order obtain suitable starting parameters NLHM fits, separate fits five models data soil generated using mmkin function mkin package. first step, constant variance assumed. Convergence checked status function. tables , OK indicates convergence C indicates failure converge. separate fits constant variance converged, exception two FOMC fits, one SFORB fit one HS fit. two-component error model, set fits converge larger, convergence problems appearing number non-SFO fits.","code":"deg_mods <- c(\"SFO\", \"FOMC\", \"DFOP\", \"SFORB\", \"HS\") f_sep_const <- mmkin( deg_mods, meso_ds, error_model = \"const\", cluster = cl, quiet = TRUE) status(f_sep_const[, 1:5]) |> kable() status(f_sep_const[, 6:18]) |> kable() f_sep_tc <- update(f_sep_const, error_model = \"tc\") status(f_sep_tc[, 1:5]) |> kable() status(f_sep_tc[, 6:18]) |> kable()"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"hierarchical-model-fits-without-covariate-effect","dir":"Articles > Prebuilt","previous_headings":"","what":"Hierarchical model fits without covariate effect","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"following code fits hierarchical kinetic models ten combinations five different degradation models two different error models parallel. fits terminate without errors (status OK). model comparisons show fits constant variance consistently preferable corresponding fits two-component error data. confirmed fact parameter b.1 (relative standard deviation fits obtained saemix package), ill-defined fits. obtaining fits well-defined random effects, update set fits, excluding random effects ill-defined according illparms function. updated fits terminate without errors. ill-defined errors remain fits constant variance.","code":"f_saem_1 <- mhmkin(list(f_sep_const, f_sep_tc), cluster = cl) status(f_saem_1) |> kable() anova(f_saem_1) |> kable(digits = 1) illparms(f_saem_1) |> kable() f_saem_2 <- update(f_saem_1, no_random_effect = illparms(f_saem_1)) status(f_saem_2) |> kable() illparms(f_saem_2) |> kable()"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"hierarchical-model-fits-with-covariate-effect","dir":"Articles > Prebuilt","previous_headings":"","what":"Hierarchical model fits with covariate effect","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"following sections, hierarchical fits including model influence pH selected degradation parameters shown parent models. Constant variance selected error model based fits without covariate effects. Random effects ill-defined fits without pH influence excluded. potential influence soil pH included parameters well-defined random effect, experience shown parameters significant pH effect found.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"sfo","dir":"Articles > Prebuilt","previous_headings":"Hierarchical model fits with covariate effect","what":"SFO","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"parameter showing pH influence table beta_pH(log_k_meso). confidence interval include zero, indicating influence soil pH log degradation rate constant significantly greater zero. comparison SFO fit without covariate effect confirms considering soil pH improves model, comparison AIC BIC likelihood ratio test. Endpoints model covariates default calculated median covariate values. quantile can adapted, specific covariate value can given shown .","code":"sfo_pH <- saem(f_sep_const[\"SFO\", ], no_random_effect = \"meso_0\", covariates = pH, covariate_models = list(log_k_meso ~ pH)) summary(sfo_pH)$confint_trans |> kable(digits = 2) anova(f_saem_2[[\"SFO\", \"const\"]], sfo_pH, test = TRUE) Data: 116 observations of 1 variable(s) grouped in 18 datasets npar AIC BIC Lik Chisq Df Pr(>Chisq) f_saem_2[[\"SFO\", \"const\"]] 4 797.56 801.12 -394.78 sfo_pH 5 783.09 787.54 -386.54 16.473 1 4.934e-05 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 plot(sfo_pH) endpoints(sfo_pH) $covariates pH 50% 5.75 $distimes DT50 DT90 meso 18.52069 61.52441 endpoints(sfo_pH, covariate_quantile = 0.9) $covariates pH 90% 7.13 $distimes DT50 DT90 meso 8.237019 27.36278 endpoints(sfo_pH, covariates = c(pH = 7.0)) $covariates pH User 7 $distimes DT50 DT90 meso 8.89035 29.5331"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"fomc","dir":"Articles > Prebuilt","previous_headings":"Hierarchical model fits with covariate effect","what":"FOMC","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"case SFO, confidence interval slope parameter (beta_pH(log_alpha)) quantifying influence soil pH include zero, model comparison clearly indicates model covariate influence preferable. However, random effect alpha well-defined inclusion covariate effect (confidence interval SD.log_alpha includes zero). Therefore, model updated without random effect, ill-defined parameters remain. Model comparison indicates including pH dependence significantly improves fit, reduced model covariate influence results preferable FOMC fit.","code":"fomc_pH <- saem(f_sep_const[\"FOMC\", ], no_random_effect = \"meso_0\", covariates = pH, covariate_models = list(log_alpha ~ pH)) summary(fomc_pH)$confint_trans |> kable(digits = 2) illparms(fomc_pH) [1] \"sd(log_alpha)\" fomc_pH_2 <- update(fomc_pH, no_random_effect = c(\"meso_0\", \"log_alpha\")) illparms(fomc_pH_2) anova(f_saem_2[[\"FOMC\", \"const\"]], fomc_pH, fomc_pH_2, test = TRUE) Data: 116 observations of 1 variable(s) grouped in 18 datasets npar AIC BIC Lik Chisq Df Pr(>Chisq) f_saem_2[[\"FOMC\", \"const\"]] 5 783.25 787.71 -386.63 fomc_pH_2 6 767.49 772.83 -377.75 17.762 1 2.503e-05 *** fomc_pH 7 770.07 776.30 -378.04 0.000 1 1 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 summary(fomc_pH_2)$confint_trans |> kable(digits = 2) plot(fomc_pH_2) endpoints(fomc_pH_2) $covariates pH 50% 5.75 $distimes DT50 DT90 DT50back meso 17.30248 82.91343 24.95943 endpoints(fomc_pH_2, covariates = c(pH = 7)) $covariates pH User 7 $distimes DT50 DT90 DT50back meso 6.986239 27.02927 8.136621"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"dfop","dir":"Articles > Prebuilt","previous_headings":"Hierarchical model fits with covariate effect","what":"DFOP","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"DFOP fits without covariate effects, random effects two degradation parameters (k2 g) identifiable. fit pH dependent degradation parameters obtained excluding random effects refined DFOP fit without covariate influence, including covariate models two identifiable parameters k2 g. corresponding parameters influence soil pH beta_pH(log_k2) influence soil pH k2, beta_pH(g_qlogis) influence g. Confidence intervals neither include zero, indicating significant difference zero. However, random effect g now ill-defined. fit updated without ill-defined random effect. Now, slope parameter pH effect g ill-defined. Therefore, another attempt made without corresponding covariate model. random effect g ill-defined, fit repeated without . ill-defined parameters remain, model comparison suggests previous model dfop_pH_2 two pH dependent parameters preferable, based information criteria well based likelihood ratio test. focussing parameter identifiability using test confidence interval includes zero, dfop_pH_4 still preferred model. However, kept mind parameter confidence intervals constructed using simple linearisation likelihood. confidence interval random effect g marginally includes zero, suggested acceptable, dfop_pH_2 can considered preferable model.","code":"summary(f_saem_2[[\"DFOP\", \"const\"]])$confint_trans |> kable(digits = 2) dfop_pH <- saem(f_sep_const[\"DFOP\", ], no_random_effect = c(\"meso_0\", \"log_k1\"), covariates = pH, covariate_models = list(log_k2 ~ pH, g_qlogis ~ pH)) summary(dfop_pH)$confint_trans |> kable(digits = 2) illparms(dfop_pH) [1] \"sd(g_qlogis)\" dfop_pH_2 <- update(dfop_pH, no_random_effect = c(\"meso_0\", \"log_k1\", \"g_qlogis\")) illparms(dfop_pH_2) [1] \"beta_pH(g_qlogis)\" dfop_pH_3 <- saem(f_sep_const[\"DFOP\", ], no_random_effect = c(\"meso_0\", \"log_k1\"), covariates = pH, covariate_models = list(log_k2 ~ pH)) illparms(dfop_pH_3) [1] \"sd(g_qlogis)\" dfop_pH_4 <- update(dfop_pH_3, no_random_effect = c(\"meso_0\", \"log_k1\", \"g_qlogis\")) illparms(dfop_pH_4) anova(f_saem_2[[\"DFOP\", \"const\"]], dfop_pH, dfop_pH_2, dfop_pH_3, dfop_pH_4) Data: 116 observations of 1 variable(s) grouped in 18 datasets npar AIC BIC Lik f_saem_2[[\"DFOP\", \"const\"]] 7 782.94 789.18 -384.47 dfop_pH_4 7 767.35 773.58 -376.68 dfop_pH_2 8 765.14 772.26 -374.57 dfop_pH_3 8 769.00 776.12 -376.50 dfop_pH 9 769.10 777.11 -375.55 anova(dfop_pH_2, dfop_pH_4, test = TRUE) Data: 116 observations of 1 variable(s) grouped in 18 datasets npar AIC BIC Lik Chisq Df Pr(>Chisq) dfop_pH_4 7 767.35 773.58 -376.68 dfop_pH_2 8 765.14 772.26 -374.57 4.2153 1 0.04006 * --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 plot(dfop_pH_2) endpoints(dfop_pH_2) $covariates pH 50% 5.75 $distimes DT50 DT90 DT50back DT50_k1 DT50_k2 meso 18.36876 73.51841 22.13125 4.191901 23.98672 endpoints(dfop_pH_2, covariates = c(pH = 7)) $covariates pH User 7 $distimes DT50 DT90 DT50back DT50_k1 DT50_k2 meso 8.346428 28.34437 8.532507 4.191901 8.753618"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"sforb","dir":"Articles > Prebuilt","previous_headings":"Hierarchical model fits with covariate effect","what":"SFORB","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"confidence interval beta_pH(log_k_meso_bound_free) includes zero, indicating influence soil pH k_meso_bound_free reliably quantified. Also, confidence interval random effect parameter (SD.log_k_meso_bound_free) includes zero. Using illparms function, ill-defined parameters can found conveniently. remove ill-defined parameters, second variant SFORB model pH influence fitted. ill-defined parameters remain. model comparison SFORB fits includes refined model without covariate effect, versions SFORB fit covariate effect. first model including pH influence preferable based information criteria likelihood ratio test. However, fully identifiable, second model selected.","code":"sforb_pH <- saem(f_sep_const[\"SFORB\", ], no_random_effect = c(\"meso_free_0\", \"log_k_meso_free_bound\"), covariates = pH, covariate_models = list(log_k_meso_free ~ pH, log_k_meso_bound_free ~ pH)) summary(sforb_pH)$confint_trans |> kable(digits = 2) illparms(sforb_pH) [1] \"sd(log_k_meso_bound_free)\" \"beta_pH(log_k_meso_bound_free)\" sforb_pH_2 <- update(sforb_pH, no_random_effect = c(\"meso_free_0\", \"log_k_meso_free_bound\", \"log_k_meso_bound_free\"), covariate_models = list(log_k_meso_free ~ pH)) illparms(sforb_pH_2) anova(f_saem_2[[\"SFORB\", \"const\"]], sforb_pH, sforb_pH_2, test = TRUE) Data: 116 observations of 1 variable(s) grouped in 18 datasets npar AIC BIC Lik Chisq Df Pr(>Chisq) f_saem_2[[\"SFORB\", \"const\"]] 7 783.40 789.63 -384.70 sforb_pH_2 7 770.94 777.17 -378.47 12.4616 0 sforb_pH 9 768.81 776.83 -375.41 6.1258 2 0.04675 * --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 summary(sforb_pH_2)$confint_trans |> kable(digits = 2) plot(sforb_pH_2) endpoints(sforb_pH_2) $covariates pH 50% 5.75 $ff meso_free 1 $SFORB meso_b1 meso_b2 meso_g 0.09735824 0.02631699 0.31602120 $distimes DT50 DT90 DT50back DT50_meso_b1 DT50_meso_b2 meso 16.86549 73.15824 22.02282 7.119554 26.33839 endpoints(sforb_pH_2, covariates = c(pH = 7)) $covariates pH User 7 $ff meso_free 1 $SFORB meso_b1 meso_b2 meso_g 0.13315233 0.03795988 0.61186191 $distimes DT50 DT90 DT50back DT50_meso_b1 DT50_meso_b2 meso 7.932495 36.93311 11.11797 5.205671 18.26"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"hs","dir":"Articles > Prebuilt","previous_headings":"Hierarchical model fits with covariate effect","what":"HS","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"According output illparms function, random effect break time tb reliably quantified, neither can influence soil pH tb. fit repeated without corresponding covariate model, ill-defined parameters remain. Model comparison confirms model preferable fit without covariate influence, also first version covariate influence.","code":"hs_pH <- saem(f_sep_const[\"HS\", ], no_random_effect = c(\"meso_0\"), covariates = pH, covariate_models = list(log_k1 ~ pH, log_k2 ~ pH, log_tb ~ pH)) summary(hs_pH)$confint_trans |> kable(digits = 2) illparms(hs_pH) [1] \"sd(log_tb)\" \"beta_pH(log_tb)\" hs_pH_2 <- update(hs_pH, covariate_models = list(log_k1 ~ pH, log_k2 ~ pH)) illparms(hs_pH_2) anova(f_saem_2[[\"HS\", \"const\"]], hs_pH, hs_pH_2, test = TRUE) Data: 116 observations of 1 variable(s) grouped in 18 datasets npar AIC BIC Lik Chisq Df Pr(>Chisq) f_saem_2[[\"HS\", \"const\"]] 8 780.08 787.20 -382.04 hs_pH_2 10 766.47 775.37 -373.23 17.606 2 0.0001503 *** hs_pH 11 769.80 779.59 -373.90 0.000 1 1.0000000 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 summary(hs_pH_2)$confint_trans |> kable(digits = 2) plot(hs_pH_2) endpoints(hs_pH_2) $covariates pH 50% 5.75 $distimes DT50 DT90 DT50back DT50_k1 DT50_k2 meso 14.68725 82.45287 24.82079 14.68725 29.29299 endpoints(hs_pH_2, covariates = c(pH = 7)) $covariates pH User 7 $distimes DT50 DT90 DT50back DT50_k1 DT50_k2 meso 8.298536 38.85371 11.69613 8.298536 15.71561"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"comparison-across-parent-models","dir":"Articles > Prebuilt","previous_headings":"Hierarchical model fits with covariate effect","what":"Comparison across parent models","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"model reduction models pH influence, compared . DFOP model pH influence k2 g random effect k2 finally selected best fit. endpoints resulting model listed . Please refer Appendix detailed listing.","code":"anova(sfo_pH, fomc_pH_2, dfop_pH_2, dfop_pH_4, sforb_pH_2, hs_pH_2) Data: 116 observations of 1 variable(s) grouped in 18 datasets npar AIC BIC Lik sfo_pH 5 783.09 787.54 -386.54 fomc_pH_2 6 767.49 772.83 -377.75 dfop_pH_4 7 767.35 773.58 -376.68 sforb_pH_2 7 770.94 777.17 -378.47 dfop_pH_2 8 765.14 772.26 -374.57 hs_pH_2 10 766.47 775.37 -373.23 endpoints(dfop_pH_2) $covariates pH 50% 5.75 $distimes DT50 DT90 DT50back DT50_k1 DT50_k2 meso 18.36876 73.51841 22.13125 4.191901 23.98672 endpoints(dfop_pH_2, covariates = c(pH = 7)) $covariates pH User 7 $distimes DT50 DT90 DT50back DT50_k1 DT50_k2 meso 8.346428 28.34437 8.532507 4.191901 8.753618"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"conclusions","dir":"Articles > Prebuilt","previous_headings":"","what":"Conclusions","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"evaluations demonstrate covariate effects can included types parent degradation models. models can refined make fully identifiable.","code":""},{"path":[]},{"path":[]},{"path":[]},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"session-info","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Session info","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"","code":"R version 4.4.2 (2024-10-31) Platform: x86_64-pc-linux-gnu Running under: Debian GNU/Linux 12 (bookworm) Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 locale: [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8 [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C time zone: Europe/Berlin tzcode source: system (glibc) attached base packages: [1] parallel stats graphics grDevices utils datasets methods [8] base other attached packages: [1] rmarkdown_2.29 nvimcom_0.9-167 saemix_3.3 npde_3.5 [5] knitr_1.49 mkin_1.2.10 loaded via a namespace (and not attached): [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3 lattice_0.22-6 [5] digest_0.6.37 magrittr_2.0.3 evaluate_1.0.1 grid_4.4.2 [9] fastmap_1.2.0 cellranger_1.1.0 jsonlite_1.8.9 mclust_6.1.1 [13] gridExtra_2.3 fansi_1.0.6 scales_1.3.0 codetools_0.2-20 [17] textshaping_0.4.1 jquerylib_0.1.4 cli_3.6.3 rlang_1.1.4 [21] munsell_0.5.1 cachem_1.1.0 yaml_2.3.10 tools_4.4.2 [25] dplyr_1.1.4 colorspace_2.1-1 ggplot2_3.5.1 vctrs_0.6.5 [29] R6_2.5.1 zoo_1.8-12 lifecycle_1.0.4 fs_1.6.5 [33] htmlwidgets_1.6.4 MASS_7.3-61 ragg_1.3.3 pkgconfig_2.0.3 [37] desc_1.4.3 pkgdown_2.1.1 pillar_1.9.0 bslib_0.8.0 [41] gtable_0.3.6 glue_1.8.0 systemfonts_1.1.0 xfun_0.49 [45] tibble_3.2.1 lmtest_0.9-40 tidyselect_1.2.1 htmltools_0.5.8.1 [49] nlme_3.1-166 compiler_4.4.2 readxl_1.4.3"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html","id":"hardware-info","dir":"Articles > Prebuilt","previous_headings":"Appendix","what":"Hardware info","title":"Testing covariate modelling in hierarchical parent degradation kinetics with residue data on mesotrione","text":"","code":"CPU model: AMD Ryzen 9 7950X 16-Core Processor MemTotal: 64927788 kB"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/FOCUS_Z.html","id":"the-data","dir":"Articles > Web_only","previous_headings":"","what":"The data","title":"Example evaluation of FOCUS dataset Z","text":"following code defines example dataset Appendix 7 FOCUS kinetics report (FOCUS Work Group Degradation Kinetics 2014, 354).","code":"library(mkin, quietly = TRUE) LOD = 0.5 FOCUS_2006_Z = data.frame( t = c(0, 0.04, 0.125, 0.29, 0.54, 1, 2, 3, 4, 7, 10, 14, 21, 42, 61, 96, 124), Z0 = c(100, 81.7, 70.4, 51.1, 41.2, 6.6, 4.6, 3.9, 4.6, 4.3, 6.8, 2.9, 3.5, 5.3, 4.4, 1.2, 0.7), Z1 = c(0, 18.3, 29.6, 46.3, 55.1, 65.7, 39.1, 36, 15.3, 5.6, 1.1, 1.6, 0.6, 0.5 * LOD, NA, NA, NA), Z2 = c(0, NA, 0.5 * LOD, 2.6, 3.8, 15.3, 37.2, 31.7, 35.6, 14.5, 0.8, 2.1, 1.9, 0.5 * LOD, NA, NA, NA), Z3 = c(0, NA, NA, NA, NA, 0.5 * LOD, 9.2, 13.1, 22.3, 28.4, 32.5, 25.2, 17.2, 4.8, 4.5, 2.8, 4.4)) FOCUS_2006_Z_mkin <- mkin_wide_to_long(FOCUS_2006_Z)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/FOCUS_Z.html","id":"parent-and-one-metabolite","dir":"Articles > Web_only","previous_headings":"","what":"Parent and one metabolite","title":"Example evaluation of FOCUS dataset Z","text":"next step set models used kinetic analysis. simultaneous fit parent first metabolite usually straightforward, Step 1 (SFO parent ) skipped . start model 2a, formation decline metabolite Z1 pathway parent directly sink included (default mkin). obvious parameter summary (component summary), kinetic rate constant parent compound Z sink small t-test parameter suggests significantly different zero. suggests, agreement analysis FOCUS kinetics report, simplify model removing pathway sink. similar result can obtained formation fractions used model formulation: , ilr transformed formation fraction fitted model takes large value, backtransformed formation fraction parent Z Z1 practically unity. , covariance matrix used calculation confidence intervals returned model overparameterised. simplified model obtained removing pathway sink. following, use parameterisation formation fractions order able compare results FOCUS guidance, makes easier use parameters obtained previous fit adding metabolite. one transformation product Z0 pathway sink, formation fraction internally fixed unity.","code":"Z.2a <- mkinmod(Z0 = mkinsub(\"SFO\", \"Z1\"), Z1 = mkinsub(\"SFO\")) ## Temporary DLL for differentials generated and loaded m.Z.2a <- mkinfit(Z.2a, FOCUS_2006_Z_mkin, quiet = TRUE) ## Warning in mkinfit(Z.2a, FOCUS_2006_Z_mkin, quiet = TRUE): Observations with ## value of zero were removed from the data plot_sep(m.Z.2a) summary(m.Z.2a, data = FALSE)$bpar ## Estimate se_notrans t value Pr(>t) Lower Upper ## Z0_0 97.01488 3.301084 29.3888 3.2971e-21 91.66556 102.3642 ## k_Z0 2.23601 0.207078 10.7979 3.3309e-11 1.95303 2.5600 ## k_Z1 0.48212 0.063265 7.6207 2.8154e-08 0.40341 0.5762 ## f_Z0_to_Z1 1.00000 0.094764 10.5525 5.3560e-11 0.00000 1.0000 ## sigma 4.80411 0.635638 7.5579 3.2592e-08 3.52677 6.0815 Z.2a.ff <- mkinmod(Z0 = mkinsub(\"SFO\", \"Z1\"), Z1 = mkinsub(\"SFO\"), use_of_ff = \"max\") ## Temporary DLL for differentials generated and loaded m.Z.2a.ff <- mkinfit(Z.2a.ff, FOCUS_2006_Z_mkin, quiet = TRUE) ## Warning in mkinfit(Z.2a.ff, FOCUS_2006_Z_mkin, quiet = TRUE): Observations with ## value of zero were removed from the data plot_sep(m.Z.2a.ff) summary(m.Z.2a.ff, data = FALSE)$bpar ## Estimate se_notrans t value Pr(>t) Lower Upper ## Z0_0 97.01488 3.301084 29.3888 3.2971e-21 91.66556 102.3642 ## k_Z0 2.23601 0.207078 10.7979 3.3309e-11 1.95303 2.5600 ## k_Z1 0.48212 0.063265 7.6207 2.8154e-08 0.40341 0.5762 ## f_Z0_to_Z1 1.00000 0.094764 10.5525 5.3560e-11 0.00000 1.0000 ## sigma 4.80411 0.635638 7.5579 3.2592e-08 3.52677 6.0815 Z.3 <- mkinmod(Z0 = mkinsub(\"SFO\", \"Z1\", sink = FALSE), Z1 = mkinsub(\"SFO\"), use_of_ff = \"max\") ## Temporary DLL for differentials generated and loaded m.Z.3 <- mkinfit(Z.3, FOCUS_2006_Z_mkin, quiet = TRUE) ## Warning in mkinfit(Z.3, FOCUS_2006_Z_mkin, quiet = TRUE): Observations with ## value of zero were removed from the data plot_sep(m.Z.3) summary(m.Z.3, data = FALSE)$bpar ## Estimate se_notrans t value Pr(>t) Lower Upper ## Z0_0 97.01488 2.597342 37.352 2.0106e-24 91.67597 102.3538 ## k_Z0 2.23601 0.146904 15.221 9.1477e-15 1.95354 2.5593 ## k_Z1 0.48212 0.041727 11.554 4.8268e-12 0.40355 0.5760 ## sigma 4.80411 0.620208 7.746 1.6110e-08 3.52925 6.0790"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/FOCUS_Z.html","id":"metabolites-z2-and-z3","dir":"Articles > Web_only","previous_headings":"","what":"Metabolites Z2 and Z3","title":"Example evaluation of FOCUS dataset Z","text":"suggested FOCUS report, pathway sink removed metabolite Z1 well next step. step appears questionable basis results, followed purpose comparison. Also, FOCUS report, assumed additional empirical evidence Z1 quickly exclusively hydrolyses Z2. Finally, metabolite Z3 added model. use optimised differential equation parameter values previous fit order accelerate optimization. fit corresponds final result chosen Appendix 7 FOCUS report. Confidence intervals returned mkin based internally transformed parameters, however.","code":"Z.5 <- mkinmod(Z0 = mkinsub(\"SFO\", \"Z1\", sink = FALSE), Z1 = mkinsub(\"SFO\", \"Z2\", sink = FALSE), Z2 = mkinsub(\"SFO\"), use_of_ff = \"max\") ## Temporary DLL for differentials generated and loaded m.Z.5 <- mkinfit(Z.5, FOCUS_2006_Z_mkin, quiet = TRUE) ## Warning in mkinfit(Z.5, FOCUS_2006_Z_mkin, quiet = TRUE): Observations with ## value of zero were removed from the data plot_sep(m.Z.5) Z.FOCUS <- mkinmod(Z0 = mkinsub(\"SFO\", \"Z1\", sink = FALSE), Z1 = mkinsub(\"SFO\", \"Z2\", sink = FALSE), Z2 = mkinsub(\"SFO\", \"Z3\"), Z3 = mkinsub(\"SFO\"), use_of_ff = \"max\") ## Temporary DLL for differentials generated and loaded m.Z.FOCUS <- mkinfit(Z.FOCUS, FOCUS_2006_Z_mkin, parms.ini = m.Z.5$bparms.ode, quiet = TRUE) ## Warning in mkinfit(Z.FOCUS, FOCUS_2006_Z_mkin, parms.ini = m.Z.5$bparms.ode, : ## Observations with value of zero were removed from the data ## Warning in mkinfit(Z.FOCUS, FOCUS_2006_Z_mkin, parms.ini = m.Z.5$bparms.ode, : Optimisation did not converge: ## false convergence (8) plot_sep(m.Z.FOCUS) summary(m.Z.FOCUS, data = FALSE)$bpar ## Estimate se_notrans t value Pr(>t) Lower Upper ## Z0_0 96.842440 1.994291 48.5598 4.0226e-42 92.830421 100.854459 ## k_Z0 2.215425 0.118457 18.7023 1.0404e-23 1.989490 2.467019 ## k_Z1 0.478307 0.028257 16.9272 6.2332e-22 0.424709 0.538669 ## k_Z2 0.451642 0.042139 10.7178 1.6304e-14 0.374348 0.544894 ## k_Z3 0.058692 0.015245 3.8499 1.7803e-04 0.034804 0.098975 ## f_Z2_to_Z3 0.471483 0.058348 8.0806 9.6585e-11 0.357720 0.588287 ## sigma 3.984431 0.383402 10.3923 4.5576e-14 3.213126 4.755737 endpoints(m.Z.FOCUS) ## $ff ## Z2_Z3 Z2_sink ## 0.47148 0.52852 ## ## $distimes ## DT50 DT90 ## Z0 0.31287 1.0393 ## Z1 1.44917 4.8140 ## Z2 1.53473 5.0983 ## Z3 11.80991 39.2317"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/FOCUS_Z.html","id":"using-the-sforb-model","dir":"Articles > Web_only","previous_headings":"","what":"Using the SFORB model","title":"Example evaluation of FOCUS dataset Z","text":"FOCUS report states, certain tailing time course metabolite Z3. Also, time course parent compound fitted well using SFO model, residues certain low level remain. Therefore, additional model offered , using single first-order reversible binding (SFORB) model metabolite Z3. expected, χ2\\chi^2 error level lower metabolite Z3 using model graphical fit Z3 improved. However, covariance matrix returned. Therefore, stepwise model building performed starting stage parent two metabolites, starting assumption model fit parent compound can improved using SFORB model. results much better representation behaviour parent compound Z0. Finally, Z3 added well. models appear overparameterised (covariance matrix returned) sink Z1 left models. error level fit, especially metabolite Z3, can improved SFORB model chosen metabolite, model capable representing tailing metabolite decline phase. summary view backtransformed parameters shows get confidence intervals due overparameterisation. optimized excessively small, seems reasonable fix zero. expected, residual plots Z0 Z3 random case SFO model shown . conclusion, model proposed best-fit model dataset Appendix 7 FOCUS report. graphical representation confidence intervals can finally obtained. endpoints obtained model clear degradation rate Z3 towards end experiment low DT50_Z3_b2 (second Eigenvalue system two differential equations representing SFORB system Z3, corresponding slower rate constant DFOP model) reported infinity. However, appears feature data.","code":"Z.mkin.1 <- mkinmod(Z0 = mkinsub(\"SFO\", \"Z1\", sink = FALSE), Z1 = mkinsub(\"SFO\", \"Z2\", sink = FALSE), Z2 = mkinsub(\"SFO\", \"Z3\"), Z3 = mkinsub(\"SFORB\")) ## Temporary DLL for differentials generated and loaded m.Z.mkin.1 <- mkinfit(Z.mkin.1, FOCUS_2006_Z_mkin, quiet = TRUE) ## Warning in mkinfit(Z.mkin.1, FOCUS_2006_Z_mkin, quiet = TRUE): Observations ## with value of zero were removed from the data plot_sep(m.Z.mkin.1) summary(m.Z.mkin.1, data = FALSE)$cov.unscaled ## NULL Z.mkin.3 <- mkinmod(Z0 = mkinsub(\"SFORB\", \"Z1\", sink = FALSE), Z1 = mkinsub(\"SFO\", \"Z2\", sink = FALSE), Z2 = mkinsub(\"SFO\")) ## Temporary DLL for differentials generated and loaded m.Z.mkin.3 <- mkinfit(Z.mkin.3, FOCUS_2006_Z_mkin, quiet = TRUE) ## Warning in mkinfit(Z.mkin.3, FOCUS_2006_Z_mkin, quiet = TRUE): Observations ## with value of zero were removed from the data plot_sep(m.Z.mkin.3) Z.mkin.4 <- mkinmod(Z0 = mkinsub(\"SFORB\", \"Z1\", sink = FALSE), Z1 = mkinsub(\"SFO\", \"Z2\", sink = FALSE), Z2 = mkinsub(\"SFO\", \"Z3\"), Z3 = mkinsub(\"SFO\")) ## Temporary DLL for differentials generated and loaded m.Z.mkin.4 <- mkinfit(Z.mkin.4, FOCUS_2006_Z_mkin, parms.ini = m.Z.mkin.3$bparms.ode, quiet = TRUE) ## Warning in mkinfit(Z.mkin.4, FOCUS_2006_Z_mkin, parms.ini = ## m.Z.mkin.3$bparms.ode, : Observations with value of zero were removed from the ## data plot_sep(m.Z.mkin.4) Z.mkin.5 <- mkinmod(Z0 = mkinsub(\"SFORB\", \"Z1\", sink = FALSE), Z1 = mkinsub(\"SFO\", \"Z2\", sink = FALSE), Z2 = mkinsub(\"SFO\", \"Z3\"), Z3 = mkinsub(\"SFORB\")) ## Temporary DLL for differentials generated and loaded m.Z.mkin.5 <- mkinfit(Z.mkin.5, FOCUS_2006_Z_mkin, parms.ini = m.Z.mkin.4$bparms.ode[1:4], quiet = TRUE) ## Warning in mkinfit(Z.mkin.5, FOCUS_2006_Z_mkin, parms.ini = ## m.Z.mkin.4$bparms.ode[1:4], : Observations with value of zero were removed from ## the data plot_sep(m.Z.mkin.5) m.Z.mkin.5a <- mkinfit(Z.mkin.5, FOCUS_2006_Z_mkin, parms.ini = c(m.Z.mkin.5$bparms.ode[1:7], k_Z3_bound_free = 0), fixed_parms = \"k_Z3_bound_free\", quiet = TRUE) ## Warning in mkinfit(Z.mkin.5, FOCUS_2006_Z_mkin, parms.ini = ## c(m.Z.mkin.5$bparms.ode[1:7], : Observations with value of zero were removed ## from the data plot_sep(m.Z.mkin.5a) mkinparplot(m.Z.mkin.5a) endpoints(m.Z.mkin.5a) ## $ff ## Z0_free Z2_Z3 Z2_sink Z3_free ## 1.00000 0.53656 0.46344 1.00000 ## ## $SFORB ## Z0_b1 Z0_b2 Z0_g Z3_b1 Z3_b2 Z3_g ## 2.4471342 0.0075124 0.9519866 0.0800071 0.0000000 0.9347816 ## ## $distimes ## DT50 DT90 DT50back DT50_Z0_b1 DT50_Z0_b2 DT50_Z3_b1 DT50_Z3_b2 ## Z0 0.3043 1.1848 0.35666 0.28325 92.267 NA NA ## Z1 1.5148 5.0320 NA NA NA NA NA ## Z2 1.6414 5.4526 NA NA NA NA NA ## Z3 NA NA NA NA NA 8.6636 Inf"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"introduction","dir":"Articles > Web_only","previous_headings":"","what":"Introduction","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"document, example evaluations provided Attachment 1 SOP US EPA using NAFTA guidance (US EPA 2015) repeated using mkin. original evaluations reported attachment performed using PestDF version 0.8.4. Note PestDF 0.8.13 version distributed US EPA website today (2019-02-26). datasets now distributed mkin package.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"examples-where-dfop-did-not-converge-with-pestdf-0-8-4","dir":"Articles > Web_only","previous_headings":"","what":"Examples where DFOP did not converge with PestDF 0.8.4","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"attachment 1, reported DFOP model converge datasets PestDF 0.8.4 used. four datasets, DFOP model can fitted mkin (see ). negative half-life given PestDF 0.8.4 fits appears result bug. results two models (SFO IORE) .","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-5-upper-panel","dir":"Articles > Web_only","previous_headings":"Examples where DFOP did not converge with PestDF 0.8.4","what":"Example on page 5, upper panel","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"","code":"p5a <- nafta(NAFTA_SOP_Attachment[[\"p5a\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p5a) print(p5a) ## Sums of squares: ## SFO IORE DFOP ## 465.21753 56.27506 32.06401 ## ## Critical sum of squares for checking the SFO model: ## [1] 64.4304 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 95.8401 4.67e-21 92.245 99.4357 ## k_parent 0.0102 3.92e-12 0.009 0.0117 ## sigma 4.8230 3.81e-06 3.214 6.4318 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 1.01e+02 NA 9.91e+01 1.02e+02 ## k__iore_parent 1.54e-05 NA 4.08e-06 5.84e-05 ## N_parent 2.57e+00 NA 2.25e+00 2.89e+00 ## sigma 1.68e+00 NA 1.12e+00 2.24e+00 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 9.99e+01 1.41e-26 98.8116 101.0810 ## k1 2.67e-02 5.05e-06 0.0243 0.0295 ## k2 3.41e-12 5.00e-01 0.0000 Inf ## g 6.47e-01 3.67e-06 0.6248 0.6677 ## sigma 1.27e+00 8.91e-06 0.8395 1.6929 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 67.7 2.25e+02 6.77e+01 ## IORE 58.2 1.07e+03 3.22e+02 ## DFOP 55.5 3.70e+11 2.03e+11 ## ## Representative half-life: ## [1] 321.51"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-5-lower-panel","dir":"Articles > Web_only","previous_headings":"Examples where DFOP did not converge with PestDF 0.8.4","what":"Example on page 5, lower panel","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"","code":"p5b <- nafta(NAFTA_SOP_Attachment[[\"p5b\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p5b) print(p5b) ## Sums of squares: ## SFO IORE DFOP ## 94.81123 10.10936 7.55871 ## ## Critical sum of squares for checking the SFO model: ## [1] 11.77879 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 96.497 2.32e-24 94.85271 98.14155 ## k_parent 0.008 3.42e-14 0.00737 0.00869 ## sigma 2.295 1.22e-05 1.47976 3.11036 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 9.85e+01 1.17e-28 9.79e+01 9.92e+01 ## k__iore_parent 1.53e-04 6.50e-03 7.21e-05 3.26e-04 ## N_parent 1.94e+00 5.88e-13 1.76e+00 2.12e+00 ## sigma 7.49e-01 1.63e-05 4.82e-01 1.02e+00 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 9.84e+01 1.24e-27 97.8078 98.9187 ## k1 1.55e-02 4.10e-04 0.0143 0.0167 ## k2 9.07e-12 5.00e-01 0.0000 Inf ## g 6.89e-01 2.92e-03 0.6626 0.7142 ## sigma 6.48e-01 2.38e-05 0.4147 0.8813 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 86.6 2.88e+02 8.66e+01 ## IORE 85.5 7.17e+02 2.16e+02 ## DFOP 83.6 1.25e+11 7.64e+10 ## ## Representative half-life: ## [1] 215.87"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-6","dir":"Articles > Web_only","previous_headings":"Examples where DFOP did not converge with PestDF 0.8.4","what":"Example on page 6","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"","code":"p6 <- nafta(NAFTA_SOP_Attachment[[\"p6\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p6) print(p6) ## Sums of squares: ## SFO IORE DFOP ## 188.45361 51.00699 42.46931 ## ## Critical sum of squares for checking the SFO model: ## [1] 58.39888 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 94.7759 7.29e-24 92.3478 97.2039 ## k_parent 0.0179 8.02e-16 0.0166 0.0194 ## sigma 3.0696 3.81e-06 2.0456 4.0936 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 97.12446 2.63e-26 95.62461 98.62431 ## k__iore_parent 0.00252 1.95e-03 0.00134 0.00472 ## N_parent 1.49587 4.07e-13 1.33896 1.65279 ## sigma 1.59698 5.05e-06 1.06169 2.13227 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 9.66e+01 1.57e-25 95.3476 97.8979 ## k1 2.55e-02 7.33e-06 0.0233 0.0278 ## k2 3.84e-11 5.00e-01 0.0000 Inf ## g 8.61e-01 7.55e-06 0.8314 0.8867 ## sigma 1.46e+00 6.93e-06 0.9661 1.9483 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 38.6 1.28e+02 3.86e+01 ## IORE 34.0 1.77e+02 5.32e+01 ## DFOP 34.1 8.50e+09 1.80e+10 ## ## Representative half-life: ## [1] 53.17"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-7","dir":"Articles > Web_only","previous_headings":"Examples where DFOP did not converge with PestDF 0.8.4","what":"Example on page 7","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"","code":"p7 <- nafta(NAFTA_SOP_Attachment[[\"p7\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p7) print(p7) ## Sums of squares: ## SFO IORE DFOP ## 3661.661 3195.030 3174.145 ## ## Critical sum of squares for checking the SFO model: ## [1] 3334.194 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 96.41796 4.80e-53 93.32245 99.51347 ## k_parent 0.00735 7.64e-21 0.00641 0.00843 ## sigma 7.94557 1.83e-15 6.46713 9.42401 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 9.92e+01 NA 9.55e+01 1.03e+02 ## k__iore_parent 1.60e-05 NA 1.45e-07 1.77e-03 ## N_parent 2.45e+00 NA 1.35e+00 3.54e+00 ## sigma 7.42e+00 NA 6.04e+00 8.80e+00 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 9.89e+01 9.44e-49 95.4640 102.2573 ## k1 1.81e-02 1.75e-01 0.0116 0.0281 ## k2 3.62e-10 5.00e-01 0.0000 Inf ## g 6.06e-01 2.19e-01 0.4826 0.7178 ## sigma 7.40e+00 2.97e-15 6.0201 8.7754 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 94.3 3.13e+02 9.43e+01 ## IORE 96.7 1.51e+03 4.55e+02 ## DFOP 96.4 3.79e+09 1.92e+09 ## ## Representative half-life: ## [1] 454.55"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-8","dir":"Articles > Web_only","previous_headings":"Examples where the representative half-life deviates from the observed DT50","what":"Example on page 8","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"dataset, IORE fit converge default starting values used mkin IORE model used. Therefore, lower value rate constant used .","code":"p8 <- nafta(NAFTA_SOP_Attachment[[\"p8\"]], parms.ini = c(k__iore_parent = 1e-3)) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p8) print(p8) ## Sums of squares: ## SFO IORE DFOP ## 1996.9408 444.9237 547.5616 ## ## Critical sum of squares for checking the SFO model: ## [1] 477.4924 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 88.16549 6.53e-29 83.37344 92.95754 ## k_parent 0.00803 1.67e-13 0.00674 0.00957 ## sigma 7.44786 4.17e-10 5.66209 9.23363 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 9.77e+01 7.03e-35 9.44e+01 1.01e+02 ## k__iore_parent 6.14e-05 3.20e-02 2.12e-05 1.78e-04 ## N_parent 2.27e+00 4.23e-18 2.00e+00 2.54e+00 ## sigma 3.52e+00 5.36e-10 2.67e+00 4.36e+00 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 95.70619 8.99e-32 91.87941 99.53298 ## k1 0.02500 5.25e-04 0.01422 0.04394 ## k2 0.00273 6.84e-03 0.00125 0.00597 ## g 0.58835 2.84e-06 0.36595 0.77970 ## sigma 3.90001 6.94e-10 2.96260 4.83741 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 86.3 287 86.3 ## IORE 53.4 668 201.0 ## DFOP 55.6 517 253.0 ## ## Representative half-life: ## [1] 201.03"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-9-upper-panel","dir":"Articles > Web_only","previous_headings":"Examples where SFO was not selected for an abiotic study","what":"Example on page 9, upper panel","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"example, residuals SFO indicate lack fit model, even abiotic experiment, data suggest simple exponential decline.","code":"p9a <- nafta(NAFTA_SOP_Attachment[[\"p9a\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p9a) print(p9a) ## Sums of squares: ## SFO IORE DFOP ## 839.35238 88.57064 9.93363 ## ## Critical sum of squares for checking the SFO model: ## [1] 105.5678 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 88.1933 3.06e-12 79.9447 96.4419 ## k_parent 0.0409 2.07e-07 0.0324 0.0516 ## sigma 7.2429 3.92e-05 4.4768 10.0090 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 9.89e+01 1.12e-16 9.54e+01 1.02e+02 ## k__iore_parent 1.93e-05 1.13e-01 3.49e-06 1.06e-04 ## N_parent 2.91e+00 1.45e-09 2.50e+00 3.32e+00 ## sigma 2.35e+00 5.31e-05 1.45e+00 3.26e+00 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 9.85e+01 2.54e-20 97.390 99.672 ## k1 1.38e-01 3.52e-05 0.131 0.146 ## k2 9.02e-13 5.00e-01 0.000 Inf ## g 6.52e-01 8.13e-06 0.642 0.661 ## sigma 7.88e-01 6.13e-02 0.481 1.095 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 16.9 5.63e+01 1.69e+01 ## IORE 11.6 3.37e+02 1.01e+02 ## DFOP 10.5 1.38e+12 7.68e+11 ## ## Representative half-life: ## [1] 101.43"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-9-lower-panel","dir":"Articles > Web_only","previous_headings":"Examples where SFO was not selected for an abiotic study","what":"Example on page 9, lower panel","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":", mkin gives longer slow DT50 DFOP model (17.8 days) PestDF (13.5 days). Presumably, related fact PestDF gives negative value proportion fast degradation 0 1, inclusive. parameter called f PestDF g mkin. mkin, restricted interval 0 1.","code":"p9b <- nafta(NAFTA_SOP_Attachment[[\"p9b\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p9b) print(p9b) ## Sums of squares: ## SFO IORE DFOP ## 35.64867 23.22334 35.64867 ## ## Critical sum of squares for checking the SFO model: ## [1] 28.54188 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 94.7123 2.15e-19 93.178 96.2464 ## k_parent 0.0389 4.47e-14 0.037 0.0408 ## sigma 1.5957 1.28e-04 0.932 2.2595 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 93.863 2.32e-18 92.4565 95.269 ## k__iore_parent 0.127 1.85e-02 0.0504 0.321 ## N_parent 0.711 1.88e-05 0.4843 0.937 ## sigma 1.288 1.76e-04 0.7456 1.830 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 94.7123 1.61e-16 93.1355 96.2891 ## k1 0.0389 1.08e-04 0.0266 0.0569 ## k2 0.0389 2.24e-04 0.0255 0.0592 ## g 0.5256 5.00e-01 0.0000 1.0000 ## sigma 1.5957 2.50e-04 0.9135 2.2779 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 17.8 59.2 17.8 ## IORE 18.4 49.2 14.8 ## DFOP 17.8 59.2 17.8 ## ## Representative half-life: ## [1] 14.8"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-10","dir":"Articles > Web_only","previous_headings":"Examples where SFO was not selected for an abiotic study","what":"Example on page 10","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":", value N given IORE model, data suggests faster decline towards end experiment, appears physically rather unlikely case photolysis study. seems PestDF constrain N values zero, thus slight difference IORE model parameters PestDF mkin.","code":"p10 <- nafta(NAFTA_SOP_Attachment[[\"p10\"]]) ## Warning in sqrt(diag(covar_notrans)): NaNs produced ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p10) print(p10) ## Sums of squares: ## SFO IORE DFOP ## 899.4089 336.4348 899.4089 ## ## Critical sum of squares for checking the SFO model: ## [1] 413.4841 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 101.7315 6.42e-11 91.9259 111.5371 ## k_parent 0.0495 1.70e-07 0.0404 0.0607 ## sigma 8.0152 1.28e-04 4.6813 11.3491 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 96.86 3.32e-12 90.848 102.863 ## k__iore_parent 2.96 7.91e-02 0.687 12.761 ## N_parent 0.00 5.00e-01 -0.372 0.372 ## sigma 4.90 1.77e-04 2.837 6.968 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 101.7315 1.41e-09 91.6534 111.810 ## k1 0.0495 3.04e-03 0.0188 0.131 ## k2 0.0495 4.92e-04 0.0197 0.124 ## g 0.4487 NaN 0.0000 1.000 ## sigma 8.0152 2.50e-04 4.5886 11.442 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 14.0 46.5 14.00 ## IORE 16.4 29.4 8.86 ## DFOP 14.0 46.5 14.00 ## ## Representative half-life: ## [1] 8.86"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-11","dir":"Articles > Web_only","previous_headings":"The DT50 was not observed during the study","what":"Example on page 11","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"case, DFOP fit reported PestDF resulted negative value slower rate constant, possible mkin. results agreement.","code":"p11 <- nafta(NAFTA_SOP_Attachment[[\"p11\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p11) print(p11) ## Sums of squares: ## SFO IORE DFOP ## 579.6805 204.7932 144.7783 ## ## Critical sum of squares for checking the SFO model: ## [1] 251.6944 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 96.15820 4.83e-13 90.24934 1.02e+02 ## k_parent 0.00321 4.71e-05 0.00222 4.64e-03 ## sigma 6.43473 1.28e-04 3.75822 9.11e+00 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 1.05e+02 NA 9.90e+01 1.10e+02 ## k__iore_parent 3.11e-17 NA 1.35e-20 7.18e-14 ## N_parent 8.36e+00 NA 6.62e+00 1.01e+01 ## sigma 3.82e+00 NA 2.21e+00 5.44e+00 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 1.05e+02 9.47e-13 99.9990 109.1224 ## k1 4.41e-02 5.95e-03 0.0296 0.0658 ## k2 9.94e-13 5.00e-01 0.0000 Inf ## g 3.22e-01 1.45e-03 0.2814 0.3650 ## sigma 3.22e+00 3.52e-04 1.8410 4.5906 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 2.16e+02 7.18e+02 2.16e+02 ## IORE 9.73e+02 1.37e+08 4.11e+07 ## DFOP 3.07e+11 1.93e+12 6.98e+11 ## ## Representative half-life: ## [1] 41148169"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"n-is-less-than-1-and-the-dfop-rate-constants-are-like-the-sfo-rate-constant","dir":"Articles > Web_only","previous_headings":"","what":"N is less than 1 and the DFOP rate constants are like the SFO rate constant","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"following three examples, results obtained mkin reported PestDF. case page 10, N values 1 deemed unrealistic appear result overparameterisation.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-12-upper-panel","dir":"Articles > Web_only","previous_headings":"N is less than 1 and the DFOP rate constants are like the SFO rate constant","what":"Example on page 12, upper panel","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"","code":"p12a <- nafta(NAFTA_SOP_Attachment[[\"p12a\"]]) ## Warning in summary.mkinfit(x): Could not calculate correlation; no covariance ## matrix ## Warning in sqrt(diag(covar_notrans)): NaNs produced ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p12a) print(p12a) ## Sums of squares: ## SFO IORE DFOP ## 695.4440 220.0685 695.4440 ## ## Critical sum of squares for checking the SFO model: ## [1] 270.4679 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 100.521 8.75e-12 92.461 108.581 ## k_parent 0.124 3.61e-08 0.104 0.148 ## sigma 7.048 1.28e-04 4.116 9.980 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 96.823 NA NA NA ## k__iore_parent 2.436 NA NA NA ## N_parent 0.263 NA NA NA ## sigma 3.965 NA NA NA ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 100.521 2.74e-10 92.2366 108.805 ## k1 0.124 2.53e-05 0.0908 0.170 ## k2 0.124 2.52e-02 0.0456 0.339 ## g 0.793 NaN 0.0000 1.000 ## sigma 7.048 2.50e-04 4.0349 10.061 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 5.58 18.5 5.58 ## IORE 6.49 13.2 3.99 ## DFOP 5.58 18.5 5.58 ## ## Representative half-life: ## [1] 3.99"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-12-lower-panel","dir":"Articles > Web_only","previous_headings":"N is less than 1 and the DFOP rate constants are like the SFO rate constant","what":"Example on page 12, lower panel","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"","code":"p12b <- nafta(NAFTA_SOP_Attachment[[\"p12b\"]]) ## Warning in sqrt(diag(covar)): NaNs produced ## Warning in qt(alpha/2, rdf): NaNs produced ## Warning in qt(1 - alpha/2, rdf): NaNs produced ## Warning in pt(abs(tval), rdf, lower.tail = FALSE): NaNs produced ## Warning in cov2cor(ans$covar): diag(V) had non-positive or NA entries; the ## non-finite result may be dubious ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p12b) print(p12b) ## Sums of squares: ## SFO IORE DFOP ## 58.90242 19.06353 58.90242 ## ## Critical sum of squares for checking the SFO model: ## [1] 51.51756 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 97.6840 0.00039 85.9388 109.4292 ## k_parent 0.0589 0.00261 0.0431 0.0805 ## sigma 3.4323 0.04356 -1.2377 8.1023 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 95.523 0.0055 74.539157 116.51 ## k__iore_parent 0.333 0.1433 0.000717 154.57 ## N_parent 0.568 0.0677 -0.989464 2.13 ## sigma 1.953 0.0975 -5.893100 9.80 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 97.6840 NaN NaN NaN ## k1 0.0589 NaN NA NA ## k2 0.0589 NaN NA NA ## g 0.6473 NaN NA NA ## sigma 3.4323 NaN NaN NaN ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 11.8 39.1 11.80 ## IORE 12.9 31.4 9.46 ## DFOP 11.8 39.1 11.80 ## ## Representative half-life: ## [1] 9.46"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"example-on-page-13","dir":"Articles > Web_only","previous_headings":"N is less than 1 and the DFOP rate constants are like the SFO rate constant","what":"Example on page 13","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"","code":"p13 <- nafta(NAFTA_SOP_Attachment[[\"p13\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p13) print(p13) ## Sums of squares: ## SFO IORE DFOP ## 174.5971 142.3951 174.5971 ## ## Critical sum of squares for checking the SFO model: ## [1] 172.131 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 92.73500 5.99e-17 89.61936 95.85065 ## k_parent 0.00258 2.42e-09 0.00223 0.00299 ## sigma 3.41172 7.07e-05 2.05455 4.76888 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 91.6016 6.34e-16 88.53086 94.672 ## k__iore_parent 0.0396 2.36e-01 0.00207 0.759 ## N_parent 0.3541 1.46e-01 -0.35153 1.060 ## sigma 3.0811 9.64e-05 1.84296 4.319 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 92.73500 NA 8.95e+01 95.92118 ## k1 0.00258 NA 4.18e-04 0.01592 ## k2 0.00258 NA 1.75e-03 0.00381 ## g 0.16452 NA 0.00e+00 1.00000 ## sigma 3.41172 NA 2.02e+00 4.79960 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 269 892 269 ## IORE 261 560 169 ## DFOP 269 892 269 ## ## Representative half-life: ## [1] 168.51"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"dt50-not-observed-in-the-study-and-dfop-problems-in-pestdf","dir":"Articles > Web_only","previous_headings":"","what":"DT50 not observed in the study and DFOP problems in PestDF","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"slower rate constant reported PestDF negative, physically realistic, possible mkin. fits give results mkin PestDF.","code":"p14 <- nafta(NAFTA_SOP_Attachment[[\"p14\"]]) ## Warning in sqrt(diag(covar)): NaNs produced ## Warning in cov2cor(ans$covar): diag(V) had non-positive or NA entries; the ## non-finite result may be dubious ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p14) print(p14) ## Sums of squares: ## SFO IORE DFOP ## 48.43249 28.67746 27.26248 ## ## Critical sum of squares for checking the SFO model: ## [1] 32.83337 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 99.47124 2.06e-30 98.42254 1.01e+02 ## k_parent 0.00279 3.75e-15 0.00256 3.04e-03 ## sigma 1.55616 3.81e-06 1.03704 2.08e+00 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 1.00e+02 NA NaN NaN ## k__iore_parent 9.44e-08 NA NaN NaN ## N_parent 3.31e+00 NA NaN NaN ## sigma 1.20e+00 NA 0.796 1.6 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 1.00e+02 2.96e-28 99.40280 101.2768 ## k1 9.53e-03 1.20e-01 0.00638 0.0143 ## k2 5.21e-12 5.00e-01 0.00000 Inf ## g 3.98e-01 2.19e-01 0.30481 0.4998 ## sigma 1.17e+00 7.68e-06 0.77406 1.5610 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 2.48e+02 8.25e+02 2.48e+02 ## IORE 4.34e+02 2.22e+04 6.70e+03 ## DFOP 3.55e+10 3.44e+11 1.33e+11 ## ## Representative half-life: ## [1] 6697.44"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"n-is-less-than-1-and-dfop-fraction-parameter-is-below-zero","dir":"Articles > Web_only","previous_headings":"","what":"N is less than 1 and DFOP fraction parameter is below zero","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"mkin, IORE fit affected (deemed unrealistic), fraction parameter DFOP model restricted interval 0 1 mkin. SFO fits give results mkin PestDF.","code":"p15a <- nafta(NAFTA_SOP_Attachment[[\"p15a\"]]) ## Warning in sqrt(diag(covar)): NaNs produced ## Warning in cov2cor(ans$covar): diag(V) had non-positive or NA entries; the ## non-finite result may be dubious ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p15a) print(p15a) ## Sums of squares: ## SFO IORE DFOP ## 245.5248 135.0132 245.5248 ## ## Critical sum of squares for checking the SFO model: ## [1] 165.9335 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 97.96751 2.00e-15 94.32049 101.615 ## k_parent 0.00952 4.93e-09 0.00824 0.011 ## sigma 4.18778 1.28e-04 2.44588 5.930 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 95.874 2.94e-15 92.937 98.811 ## k__iore_parent 0.629 2.11e-01 0.044 8.982 ## N_parent 0.000 5.00e-01 -0.642 0.642 ## sigma 3.105 1.78e-04 1.795 4.416 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 97.96751 2.85e-13 94.21913 101.7159 ## k1 0.00952 6.28e-02 0.00260 0.0349 ## k2 0.00952 1.27e-04 0.00652 0.0139 ## g 0.21241 5.00e-01 NA NA ## sigma 4.18778 2.50e-04 2.39747 5.9781 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 72.8 242 72.8 ## IORE 76.3 137 41.3 ## DFOP 72.8 242 72.8 ## ## Representative half-life: ## [1] 41.33 p15b <- nafta(NAFTA_SOP_Attachment[[\"p15b\"]]) ## Warning in summary.mkinfit(x): Could not calculate correlation; no covariance ## matrix ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The half-life obtained from the IORE model may be used plot(p15b) print(p15b) ## Sums of squares: ## SFO IORE DFOP ## 106.91629 68.55574 106.91629 ## ## Critical sum of squares for checking the SFO model: ## [1] 84.25618 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 1.01e+02 3.06e-17 98.31594 1.03e+02 ## k_parent 4.86e-03 2.48e-10 0.00435 5.42e-03 ## sigma 2.76e+00 1.28e-04 1.61402 3.91e+00 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 99.83 1.81e-16 97.51348 102.14 ## k__iore_parent 0.38 3.22e-01 0.00352 41.05 ## N_parent 0.00 5.00e-01 -1.07696 1.08 ## sigma 2.21 2.57e-04 1.23245 3.19 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 1.01e+02 NA NA NA ## k1 4.86e-03 NA NA NA ## k2 4.86e-03 NA NA NA ## g 1.88e-01 NA NA NA ## sigma 2.76e+00 NA NA NA ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 143 474 143.0 ## IORE 131 236 71.2 ## DFOP 143 474 143.0 ## ## Representative half-life: ## [1] 71.18"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"the-dfop-fraction-parameter-is-greater-than-1","dir":"Articles > Web_only","previous_headings":"","what":"The DFOP fraction parameter is greater than 1","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"PestDF, DFOP fit seems stuck local minimum, mkin finds solution much lower χ2\\chi^2 error level. half-life slower rate constant DFOP model larger IORE derived half-life, NAFTA recommendation obtained mkin use DFOP representative half-life 8.9 days.","code":"p16 <- nafta(NAFTA_SOP_Attachment[[\"p16\"]]) ## The SFO model is rejected as S_SFO is equal or higher than the critical value S_c ## The representative half-life of the IORE model is longer than the one corresponding ## to the terminal degradation rate found with the DFOP model. ## The representative half-life obtained from the DFOP model may be used plot(p16) print(p16) ## Sums of squares: ## SFO IORE DFOP ## 3831.804 2062.008 1550.980 ## ## Critical sum of squares for checking the SFO model: ## [1] 2247.348 ## ## Parameters: ## $SFO ## Estimate Pr(>t) Lower Upper ## parent_0 71.953 2.33e-13 60.509 83.40 ## k_parent 0.159 4.86e-05 0.102 0.25 ## sigma 11.302 1.25e-08 8.308 14.30 ## ## $IORE ## Estimate Pr(>t) Lower Upper ## parent_0 8.74e+01 2.48e-16 7.72e+01 97.52972 ## k__iore_parent 4.55e-04 2.16e-01 3.48e-05 0.00595 ## N_parent 2.70e+00 1.21e-08 1.99e+00 3.40046 ## sigma 8.29e+00 1.61e-08 6.09e+00 10.49062 ## ## $DFOP ## Estimate Pr(>t) Lower Upper ## parent_0 88.5333 7.40e-18 79.9836 97.083 ## k1 18.8461 5.00e-01 0.0000 Inf ## k2 0.0776 1.41e-05 0.0518 0.116 ## g 0.4733 1.41e-09 0.3674 0.582 ## sigma 7.1902 2.11e-08 5.2785 9.102 ## ## ## DTx values: ## DT50 DT90 DT50_rep ## SFO 4.35 14.4 4.35 ## IORE 1.48 32.1 9.67 ## DFOP 0.67 21.4 8.93 ## ## Representative half-life: ## [1] 8.93"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html","id":"conclusions","dir":"Articles > Web_only","previous_headings":"","what":"Conclusions","title":"Evaluation of example datasets from Attachment 1 to the US EPA SOP for the NAFTA guidance","text":"results obtained mkin deviate results obtained PestDF either cases one interpretive rules apply, .e. IORE parameter N less one DFOP k values obtained PestDF equal SFO k values, cases DFOP model converge, often lead negative rate constants returned PestDF. Therefore, mkin appears suitable kinetic evaluations according NAFTA guidance.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/benchmarks.html","id":"test-cases","dir":"Articles > Web_only","previous_headings":"","what":"Test cases","title":"Benchmark timings for mkin","text":"Parent : One metabolite: Two metabolites, synthetic data:","code":"FOCUS_C <- FOCUS_2006_C FOCUS_D <- subset(FOCUS_2006_D, value != 0) parent_datasets <- list(FOCUS_C, FOCUS_D) t1 <- system.time(mmkin_bench(c(\"SFO\", \"FOMC\", \"DFOP\", \"HS\"), parent_datasets))[[\"elapsed\"]] t2 <- system.time(mmkin_bench(c(\"SFO\", \"FOMC\", \"DFOP\", \"HS\"), parent_datasets, error_model = \"tc\"))[[\"elapsed\"]] SFO_SFO <- mkinmod( parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\")) FOMC_SFO <- mkinmod( parent = mkinsub(\"FOMC\", \"m1\"), m1 = mkinsub(\"SFO\")) DFOP_SFO <- mkinmod( parent = mkinsub(\"FOMC\", \"m1\"), # erroneously used FOMC twice, not fixed for consistency m1 = mkinsub(\"SFO\")) t3 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D)))[[\"elapsed\"]] t4 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D), error_model = \"tc\"))[[\"elapsed\"]] t5 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D), error_model = \"obs\"))[[\"elapsed\"]] m_synth_SFO_lin <- mkinmod(parent = mkinsub(\"SFO\", \"M1\"), M1 = mkinsub(\"SFO\", \"M2\"), M2 = mkinsub(\"SFO\"), use_of_ff = \"max\", quiet = TRUE) m_synth_DFOP_par <- mkinmod(parent = mkinsub(\"DFOP\", c(\"M1\", \"M2\")), M1 = mkinsub(\"SFO\"), M2 = mkinsub(\"SFO\"), use_of_ff = \"max\", quiet = TRUE) SFO_lin_a <- synthetic_data_for_UBA_2014[[1]]$data DFOP_par_c <- synthetic_data_for_UBA_2014[[12]]$data t6 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a)))[[\"elapsed\"]] t7 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c)))[[\"elapsed\"]] t8 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a), error_model = \"tc\"))[[\"elapsed\"]] t9 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c), error_model = \"tc\"))[[\"elapsed\"]] t10 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a), error_model = \"obs\"))[[\"elapsed\"]] t11 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c), error_model = \"obs\"))[[\"elapsed\"]]"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/benchmarks.html","id":"results","dir":"Articles > Web_only","previous_headings":"","what":"Results","title":"Benchmark timings for mkin","text":"Benchmarks available error models shown. intended improving mkin, comparing CPUs operating systems. trademarks belong respective owners.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/benchmarks.html","id":"parent-only","dir":"Articles > Web_only","previous_headings":"Results","what":"Parent only","title":"Benchmark timings for mkin","text":"Constant variance (t1) two-component error model (t2) four models fitted two datasets, .e. eight fits test.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/benchmarks.html","id":"one-metabolite","dir":"Articles > Web_only","previous_headings":"Results","what":"One metabolite","title":"Benchmark timings for mkin","text":"Constant variance (t3), two-component error model (t4), variance variable (t5) three models fitted one dataset, .e. three fits test.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/benchmarks.html","id":"two-metabolites","dir":"Articles > Web_only","previous_headings":"Results","what":"Two metabolites","title":"Benchmark timings for mkin","text":"Constant variance (t6 t7), two-component error model (t8 t9), variance variable (t10 t11) one model fitted one dataset, .e. one fit test.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/compiled_models.html","id":"how-to-benefit-from-compiled-models","dir":"Articles > Web_only","previous_headings":"","what":"How to benefit from compiled models","title":"Performance benefit by using compiled model definitions in mkin","text":"using mkin version equal greater 0.9-36 C compiler available, see message model compiled autogenerated C code defining model using mkinmod. Starting version 0.9.49.9, mkinmod() function checks presence compiler using previous versions, used Sys.(\"gcc\") check. Linux, need essential build tools like make gcc clang installed. Debian based linux distributions, pulled installing build-essential package. MacOS, use personally, reports compiler available default. Windows, need install Rtools path bin directory PATH variable. need modify PATH variable installing Rtools. Instead, recommend put line .Rprofile startup file. just text file R code executed R session starts. named .Rprofile located home directory, generally Documents folder. can check location home directory used R issuing","code":"pkgbuild::has_compiler() Sys.setenv(PATH = paste(\"C:/Rtools/bin\", Sys.getenv(\"PATH\"), sep=\";\")) Sys.getenv(\"HOME\")"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/compiled_models.html","id":"comparison-with-other-solution-methods","dir":"Articles > Web_only","previous_headings":"","what":"Comparison with other solution methods","title":"Performance benefit by using compiled model definitions in mkin","text":"First, build simple degradation model parent compound one metabolite, remove zero values dataset. can compare performance Eigenvalue based solution compiled version R implementation differential equations using benchmark package. output code, warnings zero removed FOCUS D dataset suppressed. Since mkin version 0.9.49.11, analytical solution also implemented, included tests . see using compiled model factor 10 faster using deSolve without compiled code.","code":"library(\"mkin\", quietly = TRUE) SFO_SFO <- mkinmod( parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\")) ## Temporary DLL for differentials generated and loaded FOCUS_D <- subset(FOCUS_2006_D, value != 0) if (require(rbenchmark)) { b.1 <- benchmark( \"deSolve, not compiled\" = mkinfit(SFO_SFO, FOCUS_D, solution_type = \"deSolve\", use_compiled = FALSE, quiet = TRUE), \"Eigenvalue based\" = mkinfit(SFO_SFO, FOCUS_D, solution_type = \"eigen\", quiet = TRUE), \"deSolve, compiled\" = mkinfit(SFO_SFO, FOCUS_D, solution_type = \"deSolve\", quiet = TRUE), \"analytical\" = mkinfit(SFO_SFO, FOCUS_D, solution_type = \"analytical\", use_compiled = FALSE, quiet = TRUE), replications = 1, order = \"relative\", columns = c(\"test\", \"replications\", \"relative\", \"elapsed\")) print(b.1) } else { print(\"R package rbenchmark is not available\") } ## test replications relative elapsed ## 4 analytical 1 1.000 0.102 ## 3 deSolve, compiled 1 1.324 0.135 ## 2 Eigenvalue based 1 1.706 0.174 ## 1 deSolve, not compiled 1 22.627 2.308"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/compiled_models.html","id":"model-without-analytical-solution","dir":"Articles > Web_only","previous_headings":"","what":"Model without analytical solution","title":"Performance benefit by using compiled model definitions in mkin","text":"evaluation also taken example section mkinfit. analytical solution available system, now Eigenvalue based solution possible, deSolve using without compiled code available. get performance benefit factor 24 using version differential equation model compiled C code! vignette built mkin 1.2.10 ","code":"if (require(rbenchmark)) { FOMC_SFO <- mkinmod( parent = mkinsub(\"FOMC\", \"m1\"), m1 = mkinsub( \"SFO\")) b.2 <- benchmark( \"deSolve, not compiled\" = mkinfit(FOMC_SFO, FOCUS_D, use_compiled = FALSE, quiet = TRUE), \"deSolve, compiled\" = mkinfit(FOMC_SFO, FOCUS_D, quiet = TRUE), replications = 1, order = \"relative\", columns = c(\"test\", \"replications\", \"relative\", \"elapsed\")) print(b.2) factor_FOMC_SFO <- round(b.2[\"1\", \"relative\"]) } else { factor_FOMC_SFO <- NA print(\"R package benchmark is not available\") } ## Temporary DLL for differentials generated and loaded ## test replications relative elapsed ## 2 deSolve, compiled 1 1.000 0.170 ## 1 deSolve, not compiled 1 23.865 4.057 ## R version 4.4.2 (2024-10-31) ## Platform: x86_64-pc-linux-gnu ## Running under: Debian GNU/Linux 12 (bookworm) ## CPU model: AMD Ryzen 9 7950X 16-Core Processor"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"introduction","dir":"Articles > Web_only","previous_headings":"","what":"Introduction","title":"Example evaluations of the dimethenamid data from 2018","text":"first analysis data analysed presented recent journal article nonlinear mixed-effects models degradation kinetics (Ranke et al. 2021). analysis based nlme package development version saemix package unpublished time. Meanwhile, version 3.0 saemix package available CRAN repository. Also, turned error handling Borstel data mkin package time, leading duplication data points soil. dataset mkin package corrected, interface saemix mkin package updated use released version. vignette intended present date analysis data, using corrected dataset released versions mkin saemix.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"data","dir":"Articles > Web_only","previous_headings":"","what":"Data","title":"Example evaluations of the dimethenamid data from 2018","text":"Residue data forming basis endpoints derived conclusion peer review pesticide risk assessment dimethenamid-P published European Food Safety Authority (EFSA) 2018 (EFSA 2018) transcribed risk assessment report (Rapporteur Member State Germany, Co-Rapporteur Member State Bulgaria 2018) can downloaded Open EFSA repository https://open.efsa.europa.eu/study-inventory/EFSA-Q-2014-00716. data available mkin package. following code (hidden default, please use button right show ) treats data available racemic mixture dimethenamid (DMTA) enantiomer dimethenamid-P (DMTAP) way, difference degradation behaviour identified EU risk assessment. observation times dataset multiplied corresponding normalisation factor also available dataset, order make possible describe datasets single set parameters. Also, datasets observed soil merged, resulting dimethenamid (DMTA) data six soils.","code":"library(mkin, quietly = TRUE) dmta_ds <- lapply(1:7, function(i) { ds_i <- dimethenamid_2018$ds[[i]]$data ds_i[ds_i$name == \"DMTAP\", \"name\"] <- \"DMTA\" ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i] ds_i }) names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title) dmta_ds[[\"Elliot\"]] <- rbind(dmta_ds[[\"Elliot 1\"]], dmta_ds[[\"Elliot 2\"]]) dmta_ds[[\"Elliot 1\"]] <- NULL dmta_ds[[\"Elliot 2\"]] <- NULL"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"parent-degradation","dir":"Articles > Web_only","previous_headings":"","what":"Parent degradation","title":"Example evaluations of the dimethenamid data from 2018","text":"evaluate observed degradation parent compound using simple exponential decline (SFO) biexponential decline (DFOP), using constant variance (const) two-component variance (tc) error models.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"separate-evaluations","dir":"Articles > Web_only","previous_headings":"Parent degradation","what":"Separate evaluations","title":"Example evaluations of the dimethenamid data from 2018","text":"first step, get visual impression fit different models, separate evaluations soil using mmkin function mkin package: plot individual SFO fits shown suggests least datasets degradation slows towards later time points, scatter residuals error smaller smaller values (panel right): Using biexponential decline (DFOP) results slightly random scatter residuals: population curve (bold line) plot results taking mean individual transformed parameters, .e. log k1 log k2, well logit g parameter DFOP model). , procedure result parameters represent degradation well, datasets fitted value k2 extremely close zero, leading log k2 value dominates average. alleviated rate constants pass t-test significant difference zero (untransformed scale) considered averaging: visually much satisfactory, average procedure introduce bias, results individual fits enter population curve weight. nonlinear mixed-effects models can help treating datasets equally fitting parameter distribution model together degradation model error model (see ). remaining trend residuals higher higher predicted residues reduced using two-component error model: However, note case using error model, fits Flaach BBA 2.3 datasets appear ill-defined, indicated fact converge:","code":"f_parent_mkin_const <- mmkin(c(\"SFO\", \"DFOP\"), dmta_ds, error_model = \"const\", quiet = TRUE) f_parent_mkin_tc <- mmkin(c(\"SFO\", \"DFOP\"), dmta_ds, error_model = \"tc\", quiet = TRUE) plot(mixed(f_parent_mkin_const[\"SFO\", ])) plot(mixed(f_parent_mkin_const[\"DFOP\", ])) plot(mixed(f_parent_mkin_const[\"DFOP\", ]), test_log_parms = TRUE) plot(mixed(f_parent_mkin_tc[\"DFOP\", ]), test_log_parms = TRUE) print(f_parent_mkin_tc[\"DFOP\", ]) <mmkin> object Status of individual fits: dataset model Calke Borstel Flaach BBA 2.2 BBA 2.3 Elliot DFOP OK OK OK OK C OK C: Optimisation did not converge: iteration limit reached without convergence (10) OK: No warnings"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"nonlinear-mixed-effects-models","dir":"Articles > Web_only","previous_headings":"Parent degradation","what":"Nonlinear mixed-effects models","title":"Example evaluations of the dimethenamid data from 2018","text":"Instead taking model selection decision individual fits, fit nonlinear mixed-effects models (using different fitting algorithms implemented different packages) model selection using available data time. order make sure decisions unduly influenced type algorithm used, implementation details use wrong control parameters, compare model selection results obtained different R packages, different algorithms checking control parameters.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"nlme","dir":"Articles > Web_only","previous_headings":"Parent degradation > Nonlinear mixed-effects models","what":"nlme","title":"Example evaluations of the dimethenamid data from 2018","text":"nlme package first R extension providing facilities fit nonlinear mixed-effects models. like model selection four combinations degradation models error models based AIC. However, fitting DFOP model constant variance using default control parameters results error, signalling maximum number 50 iterations reached, potentially indicating overparameterisation. Nevertheless, algorithm converges two-component error model used combination DFOP model. can explained fact smaller residues observed later sampling times get weight using two-component error model counteract tendency algorithm try parameter combinations unsuitable fitting data. Note certain degree overparameterisation also indicated warning obtained fitting DFOP two-component error model (‘false convergence’ ‘LME step’ iteration 3). However, warning occur later iterations, specifically last 5 iterations, can ignore warning. model comparison function nlme package can directly applied fits showing much lower AIC DFOP model fitted two-component error model. Also, likelihood ratio test indicates difference significant p-value 0.0001. addition fits, attempts also made include correlations random effects using log Cholesky parameterisation matrix specifying . code used attempts can made visible . SFO variants converge fast, additional parameters introduced lead convergence warnings DFOP model. model comparison clearly show adding correlations random effects improve fits. selected model (DFOP two-component error) fitted data assuming correlations random effects shown .","code":"library(nlme) f_parent_nlme_sfo_const <- nlme(f_parent_mkin_const[\"SFO\", ]) # f_parent_nlme_dfop_const <- nlme(f_parent_mkin_const[\"DFOP\", ]) f_parent_nlme_sfo_tc <- nlme(f_parent_mkin_tc[\"SFO\", ]) f_parent_nlme_dfop_tc <- nlme(f_parent_mkin_tc[\"DFOP\", ]) anova( f_parent_nlme_sfo_const, f_parent_nlme_sfo_tc, f_parent_nlme_dfop_tc ) Model df AIC BIC logLik Test L.Ratio p-value f_parent_nlme_sfo_const 1 5 796.60 811.82 -393.30 f_parent_nlme_sfo_tc 2 6 798.60 816.86 -393.30 1 vs 2 0.00 0.998 f_parent_nlme_dfop_tc 3 10 671.91 702.34 -325.95 2 vs 3 134.69 <.0001 f_parent_nlme_sfo_const_logchol <- nlme(f_parent_mkin_const[\"SFO\", ], random = nlme::pdLogChol(list(DMTA_0 ~ 1, log_k_DMTA ~ 1))) anova(f_parent_nlme_sfo_const, f_parent_nlme_sfo_const_logchol) f_parent_nlme_sfo_tc_logchol <- nlme(f_parent_mkin_tc[\"SFO\", ], random = nlme::pdLogChol(list(DMTA_0 ~ 1, log_k_DMTA ~ 1))) anova(f_parent_nlme_sfo_tc, f_parent_nlme_sfo_tc_logchol) f_parent_nlme_dfop_tc_logchol <- nlme(f_parent_mkin_const[\"DFOP\", ], random = nlme::pdLogChol(list(DMTA_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1))) anova(f_parent_nlme_dfop_tc, f_parent_nlme_dfop_tc_logchol) plot(f_parent_nlme_dfop_tc)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"saemix","dir":"Articles > Web_only","previous_headings":"Parent degradation > Nonlinear mixed-effects models","what":"saemix","title":"Example evaluations of the dimethenamid data from 2018","text":"saemix package provided first Open Source implementation Stochastic Approximation Expectation Maximisation (SAEM) algorithm. SAEM fits degradation models can conveniently performed using interface saemix package available current development versions mkin package. corresponding SAEM fits four combinations degradation error models fitted . convergence criterion implemented saemix package, convergence plots need manually checked every fit. define control settings work well parent data fits shown vignette. convergence plot SFO model using constant variance shown . Obviously selected number iterations sufficient reach convergence. can also said SFO fit using two-component error model. fitting DFOP model constant variance (see ), parameter convergence unambiguous. parameters converge credible values, variance k2 (omega2.k2) converges small value. printout saem.mmkin model shows estimated standard deviation k2 across population soils (SD.k2) ill-defined, indicating overparameterisation model. DFOP model fitted two-component error model, also observe estimated variance k2 becomes small, ill-defined, illustrated excessive confidence interval SD.k2. Doubling number iterations first phase algorithm leads slightly lower likelihood, therefore slightly higher AIC BIC values. even iterations, algorithm stops error message. related variance k2 approximating zero submitted bug saemix package, algorithm converge case. alternative way fit DFOP combination two-component error model use model formulation transformed parameters used per default mkin. using option, convergence slower, eventually algorithm stops well error message. four combinations (SFO/const, SFO/tc, DFOP/const DFOP/tc) version increased iterations can compared using model comparison function saemix package: order check influence likelihood calculation algorithms implemented saemix, likelihood Gaussian quadrature added best fit, AIC values obtained three methods compared. AIC values based importance sampling Gaussian quadrature similar. Using linearisation known less accurate, still gives similar value. order illustrate comparison three method depends degree convergence obtained fit, comparison shown fit using defaults number iterations number MCMC chains. using OpenBlas linear algebra, large difference values obtained Gaussian quadrature, larger number iterations makes lot difference. using LAPACK version coming Debian Bullseye, AIC based Gaussian quadrature almost one obtained methods, also using defaults fit.","code":"library(saemix) saemix_control <- saemixControl(nbiter.saemix = c(800, 300), nb.chains = 15, print = FALSE, save = FALSE, save.graphs = FALSE, displayProgress = FALSE) saemix_control_moreiter <- saemixControl(nbiter.saemix = c(1600, 300), nb.chains = 15, print = FALSE, save = FALSE, save.graphs = FALSE, displayProgress = FALSE) saemix_control_10k <- saemixControl(nbiter.saemix = c(10000, 300), nb.chains = 15, print = FALSE, save = FALSE, save.graphs = FALSE, displayProgress = FALSE) f_parent_saemix_sfo_const <- mkin::saem(f_parent_mkin_const[\"SFO\", ], quiet = TRUE, control = saemix_control, transformations = \"saemix\") plot(f_parent_saemix_sfo_const$so, plot.type = \"convergence\") f_parent_saemix_sfo_tc <- mkin::saem(f_parent_mkin_tc[\"SFO\", ], quiet = TRUE, control = saemix_control, transformations = \"saemix\") plot(f_parent_saemix_sfo_tc$so, plot.type = \"convergence\") f_parent_saemix_dfop_const <- mkin::saem(f_parent_mkin_const[\"DFOP\", ], quiet = TRUE, control = saemix_control, transformations = \"saemix\") plot(f_parent_saemix_dfop_const$so, plot.type = \"convergence\") print(f_parent_saemix_dfop_const) Kinetic nonlinear mixed-effects model fit by SAEM Structural model: d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Likelihood computed by importance sampling AIC BIC logLik 706 704 -344 Fitted parameters: estimate lower upper DMTA_0 97.99583 96.50079 99.4909 k1 0.06377 0.03432 0.0932 k2 0.00848 0.00444 0.0125 g 0.95701 0.91313 1.0009 a.1 1.82141 1.60516 2.0377 SD.DMTA_0 1.64787 0.45729 2.8384 SD.k1 0.57439 0.24731 0.9015 SD.k2 0.03296 -2.50524 2.5712 SD.g 1.10266 0.32354 1.8818 f_parent_saemix_dfop_tc <- mkin::saem(f_parent_mkin_tc[\"DFOP\", ], quiet = TRUE, control = saemix_control, transformations = \"saemix\") f_parent_saemix_dfop_tc_moreiter <- mkin::saem(f_parent_mkin_tc[\"DFOP\", ], quiet = TRUE, control = saemix_control_moreiter, transformations = \"saemix\") plot(f_parent_saemix_dfop_tc$so, plot.type = \"convergence\") print(f_parent_saemix_dfop_tc) Kinetic nonlinear mixed-effects model fit by SAEM Structural model: d_DMTA/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) * DMTA Data: 155 observations of 1 variable(s) grouped in 6 datasets Likelihood computed by importance sampling AIC BIC logLik 666 664 -323 Fitted parameters: estimate lower upper DMTA_0 98.24165 96.29190 100.1914 k1 0.06421 0.03352 0.0949 k2 0.00866 0.00617 0.0111 g 0.95340 0.91218 0.9946 a.1 1.06463 0.87979 1.2495 b.1 0.02964 0.02266 0.0366 SD.DMTA_0 2.03611 0.40361 3.6686 SD.k1 0.59534 0.25692 0.9338 SD.k2 0.00042 -73.00540 73.0062 SD.g 1.04234 0.37189 1.7128 AIC_parent_saemix <- saemix::compare.saemix( f_parent_saemix_sfo_const$so, f_parent_saemix_sfo_tc$so, f_parent_saemix_dfop_const$so, f_parent_saemix_dfop_tc$so, f_parent_saemix_dfop_tc_moreiter$so) Likelihoods calculated by importance sampling rownames(AIC_parent_saemix) <- c( \"SFO const\", \"SFO tc\", \"DFOP const\", \"DFOP tc\", \"DFOP tc more iterations\") print(AIC_parent_saemix) AIC BIC SFO const 796.38 795.34 SFO tc 798.38 797.13 DFOP const 705.75 703.88 DFOP tc 665.67 663.59 DFOP tc more iterations 665.85 663.76 f_parent_saemix_dfop_tc$so <- saemix::llgq.saemix(f_parent_saemix_dfop_tc$so) AIC_parent_saemix_methods <- c( is = AIC(f_parent_saemix_dfop_tc$so, method = \"is\"), gq = AIC(f_parent_saemix_dfop_tc$so, method = \"gq\"), lin = AIC(f_parent_saemix_dfop_tc$so, method = \"lin\") ) print(AIC_parent_saemix_methods) is gq lin 665.67 665.74 665.13 f_parent_saemix_dfop_tc_defaults <- mkin::saem(f_parent_mkin_tc[\"DFOP\", ]) f_parent_saemix_dfop_tc_defaults$so <- saemix::llgq.saemix(f_parent_saemix_dfop_tc_defaults$so) AIC_parent_saemix_methods_defaults <- c( is = AIC(f_parent_saemix_dfop_tc_defaults$so, method = \"is\"), gq = AIC(f_parent_saemix_dfop_tc_defaults$so, method = \"gq\"), lin = AIC(f_parent_saemix_dfop_tc_defaults$so, method = \"lin\") ) print(AIC_parent_saemix_methods_defaults) is gq lin 670.09 669.37 671.29"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"comparison","dir":"Articles > Web_only","previous_headings":"Parent degradation","what":"Comparison","title":"Example evaluations of the dimethenamid data from 2018","text":"following table gives AIC values obtained backend packages using control parameters (800 iterations burn-, 300 iterations second phase, 15 chains).","code":"AIC_all <- data.frame( check.names = FALSE, \"Degradation model\" = c(\"SFO\", \"SFO\", \"DFOP\", \"DFOP\"), \"Error model\" = c(\"const\", \"tc\", \"const\", \"tc\"), nlme = c(AIC(f_parent_nlme_sfo_const), AIC(f_parent_nlme_sfo_tc), NA, AIC(f_parent_nlme_dfop_tc)), saemix_lin = sapply(list(f_parent_saemix_sfo_const$so, f_parent_saemix_sfo_tc$so, f_parent_saemix_dfop_const$so, f_parent_saemix_dfop_tc$so), AIC, method = \"lin\"), saemix_is = sapply(list(f_parent_saemix_sfo_const$so, f_parent_saemix_sfo_tc$so, f_parent_saemix_dfop_const$so, f_parent_saemix_dfop_tc$so), AIC, method = \"is\") ) kable(AIC_all)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"conclusion","dir":"Articles > Web_only","previous_headings":"","what":"Conclusion","title":"Example evaluations of the dimethenamid data from 2018","text":"detailed analysis dimethenamid dataset confirmed DFOP model provides appropriate description decline parent compound data. hand, closer inspection results revealed variability k2 parameter across population soils ill-defined. coincides observation parameter robustly quantified soils. Regarding regulatory use data, claimed improved characterisation mean parameter values across population obtained using nonlinear mixed-effects models presented . However, attempts quantify variability slower rate constant biphasic decline dimethenamid indicate data sufficient characterise variability satisfactory precision.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html","id":"session-info","dir":"Articles > Web_only","previous_headings":"","what":"Session Info","title":"Example evaluations of the dimethenamid data from 2018","text":"","code":"sessionInfo() R version 4.4.2 (2024-10-31) Platform: x86_64-pc-linux-gnu Running under: Debian GNU/Linux 12 (bookworm) Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0 locale: [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C [3] LC_TIME=C LC_COLLATE=de_DE.UTF-8 [5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C time zone: Europe/Berlin tzcode source: system (glibc) attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] saemix_3.3 npde_3.5 nlme_3.1-166 mkin_1.2.10 knitr_1.49 loaded via a namespace (and not attached): [1] gtable_0.3.6 jsonlite_1.8.9 dplyr_1.1.4 compiler_4.4.2 [5] tidyselect_1.2.1 parallel_4.4.2 gridExtra_2.3 jquerylib_0.1.4 [9] systemfonts_1.1.0 scales_1.3.0 textshaping_0.4.1 yaml_2.3.10 [13] fastmap_1.2.0 lattice_0.22-6 ggplot2_3.5.1 R6_2.5.1 [17] generics_0.1.3 lmtest_0.9-40 MASS_7.3-61 htmlwidgets_1.6.4 [21] tibble_3.2.1 desc_1.4.3 munsell_0.5.1 bslib_0.8.0 [25] pillar_1.9.0 rlang_1.1.4 utf8_1.2.4 cachem_1.1.0 [29] xfun_0.49 fs_1.6.5 sass_0.4.9 cli_3.6.3 [33] pkgdown_2.1.1 magrittr_2.0.3 digest_0.6.37 grid_4.4.2 [37] mclust_6.1.1 lifecycle_1.0.4 vctrs_0.6.5 evaluate_1.0.1 [41] glue_1.8.0 codetools_0.2-20 ragg_1.3.3 zoo_1.8-12 [45] fansi_1.0.6 colorspace_2.1-1 rmarkdown_2.29 pkgconfig_2.0.3 [49] tools_4.4.2 htmltools_0.5.8.1"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html","id":"test-data","dir":"Articles > Web_only","previous_headings":"","what":"Test data","title":"Benchmark timings for saem.mmkin","text":"Please refer vignette dimethenamid_2018 explanation following preprocessing.","code":"dmta_ds <- lapply(1:7, function(i) { ds_i <- dimethenamid_2018$ds[[i]]$data ds_i[ds_i$name == \"DMTAP\", \"name\"] <- \"DMTA\" ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i] ds_i }) names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title) dmta_ds[[\"Elliot\"]] <- rbind(dmta_ds[[\"Elliot 1\"]], dmta_ds[[\"Elliot 2\"]]) dmta_ds[[\"Elliot 1\"]] <- NULL dmta_ds[[\"Elliot 2\"]] <- NULL"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html","id":"parent-only","dir":"Articles > Web_only","previous_headings":"Test cases","what":"Parent only","title":"Benchmark timings for saem.mmkin","text":"model comparison suggests use SFORB model two-component error. comparison, keep DFOP model two-component error, competes SFORB biphasic curves. two models, random effects transformed parameters k2 k_DMTA_bound_free quantified.","code":"parent_mods <- c(\"SFO\", \"DFOP\", \"SFORB\", \"HS\") parent_sep_const <- mmkin(parent_mods, dmta_ds, quiet = TRUE, cores = n_cores) parent_sep_tc <- update(parent_sep_const, error_model = \"tc\") t1 <- system.time(sfo_const <- saem(parent_sep_const[\"SFO\", ]))[[\"elapsed\"]] t2 <- system.time(dfop_const <- saem(parent_sep_const[\"DFOP\", ]))[[\"elapsed\"]] t3 <- system.time(sforb_const <- saem(parent_sep_const[\"SFORB\", ]))[[\"elapsed\"]] t4 <- system.time(hs_const <- saem(parent_sep_const[\"HS\", ]))[[\"elapsed\"]] t5 <- system.time(sfo_tc <- saem(parent_sep_tc[\"SFO\", ]))[[\"elapsed\"]] t6 <- system.time(dfop_tc <- saem(parent_sep_tc[\"DFOP\", ]))[[\"elapsed\"]] t7 <- system.time(sforb_tc <- saem(parent_sep_tc[\"SFORB\", ]))[[\"elapsed\"]] t8 <- system.time(hs_tc <- saem(parent_sep_tc[\"HS\", ]))[[\"elapsed\"]] anova( sfo_const, dfop_const, sforb_const, hs_const, sfo_tc, dfop_tc, sforb_tc, hs_tc) |> kable(, digits = 1) illparms(dfop_tc) ## [1] \"sd(log_k2)\" illparms(sforb_tc) ## [1] \"sd(log_k_DMTA_bound_free)\""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html","id":"one-metabolite","dir":"Articles > Web_only","previous_headings":"Test cases","what":"One metabolite","title":"Benchmark timings for saem.mmkin","text":"remove parameters found ill-defined parent fits.","code":"one_met_mods <- list( DFOP_SFO = mkinmod( DMTA = mkinsub(\"DFOP\", \"M23\"), M23 = mkinsub(\"SFO\")), SFORB_SFO = mkinmod( DMTA = mkinsub(\"SFORB\", \"M23\"), M23 = mkinsub(\"SFO\"))) one_met_sep_const <- mmkin(one_met_mods, dmta_ds, error_model = \"const\", cores = n_cores, quiet = TRUE) one_met_sep_tc <- mmkin(one_met_mods, dmta_ds, error_model = \"tc\", cores = n_cores, quiet = TRUE) t9 <- system.time(dfop_sfo_tc <- saem(one_met_sep_tc[\"DFOP_SFO\", ], no_random_effect = \"log_k2\"))[[\"elapsed\"]] t10 <- system.time(sforb_sfo_tc <- saem(one_met_sep_tc[\"SFORB_SFO\", ], no_random_effect = \"log_k_DMTA_bound_free\"))[[\"elapsed\"]]"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html","id":"three-metabolites","dir":"Articles > Web_only","previous_headings":"Test cases","what":"Three metabolites","title":"Benchmark timings for saem.mmkin","text":"case three metabolites, keep SFORB model order limit time compiling vignette, fitting parallel may disturb benchmark. , include random effects ill-defined previous fits subsets degradation model.","code":"illparms(sforb_sfo_tc) three_met_mods <- list( SFORB_SFO3_plus = mkinmod( DMTA = mkinsub(\"SFORB\", c(\"M23\", \"M27\", \"M31\")), M23 = mkinsub(\"SFO\"), M27 = mkinsub(\"SFO\"), M31 = mkinsub(\"SFO\", \"M27\", sink = FALSE))) three_met_sep_tc <- mmkin(three_met_mods, dmta_ds, error_model = \"tc\", cores = n_cores, quiet = TRUE) t11 <- system.time(sforb_sfo3_plus_const <- saem(three_met_sep_tc[\"SFORB_SFO3_plus\", ], no_random_effect = \"log_k_DMTA_bound_free\"))[[\"elapsed\"]]"},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html","id":"results","dir":"Articles > Web_only","previous_headings":"","what":"Results","title":"Benchmark timings for saem.mmkin","text":"Benchmarks available error models shown. intended improving mkin, comparing CPUs operating systems. trademarks belong respective owners.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html","id":"parent-only-1","dir":"Articles > Web_only","previous_headings":"Results","what":"Parent only","title":"Benchmark timings for saem.mmkin","text":"Constant variance SFO, DFOP, SFORB HS. Two-component error fits SFO, DFOP, SFORB HS.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html","id":"one-metabolite-1","dir":"Articles > Web_only","previous_headings":"Results","what":"One metabolite","title":"Benchmark timings for saem.mmkin","text":"Two-component error DFOP-SFO SFORB-SFO.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html","id":"three-metabolites-1","dir":"Articles > Web_only","previous_headings":"Results","what":"Three metabolites","title":"Benchmark timings for saem.mmkin","text":"Two-component error SFORB-SFO3-plus","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Johannes Ranke. Author, maintainer, copyright holder. Katrin Lindenberger. Contributor. contributed mkinresplot() René Lehmann. Contributor. ilr() invilr() Eurofins Regulatory AG. Copyright holder. copyright contributions JR 2012-2014","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Ranke J (2025). mkin: Kinetic Evaluation Chemical Degradation Data. R package version 1.2.10, https://pkgdown.jrwb.de/mkin/.","code":"@Manual{, title = {mkin: Kinetic Evaluation of Chemical Degradation Data}, author = {Johannes Ranke}, year = {2025}, note = {R package version 1.2.10}, url = {https://pkgdown.jrwb.de/mkin/}, }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"mkin","dir":"","previous_headings":"","what":"Kinetic Evaluation of Chemical Degradation Data","title":"Kinetic Evaluation of Chemical Degradation Data","text":"R package mkin provides calculation routines analysis chemical degradation data, including multicompartment kinetics needed modelling formation decline transformation products, several degradation compartments involved. provides stable functionality kinetic evaluations according FOCUS guidance (see details). addition, provides functionality hierarchical kinetics based nonlinear mixed-effects models.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Kinetic Evaluation of Chemical Degradation Data","text":"can install latest released version CRAN within R:","code":"install.packages(\"mkin\")"},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"background","dir":"","previous_headings":"","what":"Background","title":"Kinetic Evaluation of Chemical Degradation Data","text":"regulatory evaluation chemical substances like plant protection products (pesticides), biocides chemicals, degradation data play important role. evaluation pesticide degradation experiments, detailed guidance various helpful tools developed detailed ‘Credits historical remarks’ . package aims provide one stop solution degradation kinetics, addressing modellers willing , even prefer work R.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"basic-usage","dir":"","previous_headings":"","what":"Basic usage","title":"Kinetic Evaluation of Chemical Degradation Data","text":"start, look code examples provided plot.mkinfit plot.mmkin, package vignettes FOCUS L FOCUS D.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"documentation","dir":"","previous_headings":"","what":"Documentation","title":"Kinetic Evaluation of Chemical Degradation Data","text":"HTML documentation latest version released CRAN available jrwb.de github. Documentation development version found ‘dev’ subdirectory. articles section documentation, can also find demonstrations application nonlinear hierarchical models, also known nonlinear mixed-effects models, complex data, including transformation products covariates.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"general","dir":"","previous_headings":"Features","what":"General","title":"Kinetic Evaluation of Chemical Degradation Data","text":"Highly flexible model specification using mkinmod, including equilibrium reactions using single first-order reversible binding (SFORB) model, automatically create two state variables observed variable. Model solution (forward modelling) function mkinpredict performed either using analytical solution case parent degradation simple models involving single transformation product, , eigenvalue based solution simple first-order (SFO) SFORB kinetics used model, using numeric solver deSolve package (default lsoda). usual one-sided t-test significant difference zero shown based estimators untransformed parameters. Summary plotting functions. summary mkinfit object fact full report give enough information able approximately reproduce fit tools. chi-squared error level defined FOCUS kinetics guidance (see ) calculated observed variable. ‘variance variable’ error model often fitted using Iteratively Reweighted Least Squares (IRLS) can specified error_model = \"obs\".","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"unique-in-mkin","dir":"","previous_headings":"Features","what":"Unique in mkin","title":"Kinetic Evaluation of Chemical Degradation Data","text":"Three different error models can selected using argument error_model mkinfit function. two-component error model similar one proposed Rocke Lorenzato can selected using argument error_model = \"tc\". Model comparisons using Akaike Information Criterion (AIC) supported can also used non-constant variance. cases FOCUS chi-squared error level meaningful. default, kinetic rate constants kinetic formation fractions transformed internally using transform_odeparms estimators can reasonably expected follow normal distribution. parameter estimates backtransformed match model definition, confidence intervals calculated standard errors also backtransformed correct scale, include meaningless values like negative rate constants formation fractions adding 1, occur single experiment single defined radiolabel position. metabolite decline phase described well SFO kinetics, SFORB kinetics can used metabolite. Mathematically, SFORB model equivalent DFOP model. However, SFORB model advantage mechanistic interpretation model parameters. Nonlinear mixed-effects models (hierarchical models) can created fits degradation model different datasets compound using nlme.mmkin saem.mmkin methods. Note convergence nlme fits depends quality data. Convergence better simple models data many groups (e.g. soils). saem method uses saemix package backend. Analytical solutions suitable use package implemented parent models important models including one metabolite (SFO-SFO DFOP-SFO). Fitting models saem.mmkin, makes use compiled ODE models mkin provides, longer run times (couple minutes hour).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"performance","dir":"","previous_headings":"Features","what":"Performance","title":"Kinetic Evaluation of Chemical Degradation Data","text":"Parallel fitting several models several datasets supported, see example plot.mmkin. C compiler installed, kinetic models compiled automatically generated C code, see vignette compiled_models. autogeneration C code inspired ccSolve package. Thanks Karline Soetaert work . Even compiler installed, many degradation models still give good performance, current versions mkin also analytical solutions models one metabolite, SFO SFORB used parent compound, Eigenvalue based solutions degradation model available.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"gui","dir":"","previous_headings":"","what":"GUI","title":"Kinetic Evaluation of Chemical Degradation Data","text":"graphical user interface may useful. Please refer documentation page installation instructions manual. supports evaluations using (generalised) nonlinear regression, simultaneous fits using nonlinear mixed-effects models.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"news","dir":"","previous_headings":"","what":"News","title":"Kinetic Evaluation of Chemical Degradation Data","text":"list changes latest CRAN release one github branch, e.g. main branch.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"credits-and-historical-remarks","dir":"","previous_headings":"","what":"Credits and historical remarks","title":"Kinetic Evaluation of Chemical Degradation Data","text":"mkin possible without underlying software stack consisting , among others, R package deSolve. previous version, mkin also using functionality FME package. Please refer package page CRAN full list imported suggested R packages. Also, Debian Linux, vim editor Nvim-R plugin invaluable development. mkin written without introduced regulatory fate modelling pesticides Adrian Gurney time Harlan Laboratories Ltd (formerly RCC Ltd). mkin greatly profits largely follows work done FOCUS Degradation Kinetics Workgroup, detailed guidance document 2006, slightly updated 2011 2014. Also, inspired first version KinGUI developed BayerCropScience, based MatLab runtime environment. companion package kinfit (now deprecated) started 2008 first published CRAN 01 May 2010. first mkin code published 11 May 2010 first CRAN version 18 May 2010. 2011, Bayer Crop Science started distribute R based successor KinGUI named KinGUII whose R code based mkin, added, among refinements, closed source graphical user interface (GUI), iteratively reweighted least squares (IRLS) optimisation variance observed variables, Markov Chain Monte Carlo (MCMC) simulation functionality, similar available e.g. FME package. Somewhat parallel, Syngenta sponsored development mkin KinGUII based GUI application called CAKE, also adds IRLS MCMC, limited model formulation, puts weight usability. CAKE available download CAKE website, can also find zip archive R scripts derived mkin, published GPL license. Finally, KineticEval, contains development scripts used KinGUII. Thanks René Lehmann, formerly working Umweltbundesamt, nice cooperation parameter transformations, especially isometric log-ratio transformation now used formation fractions case two transformation targets. Many inspirations improvements mkin resulted kinetic evaluations degradation data clients working Harlan Laboratories Eurofins Regulatory AG, now independent consultant. Funding received Umweltbundesamt course projects Project Number 27452 (Testing validation modelling software alternative ModelMaker 4.0, 2014-2015) Project Number 56703 (Optimization gmkin routine use Umweltbundesamt, 2015) Project Number 92570 (Update Project Number 27452, 2017-2018) Project Number 112407 (Testing feasibility using error model according Rocke Lorenzato realistic parameter estimates kinetic evaluation degradation data, 2018-2019) Project Number 120667 (Development objective criteria evaluation visual fit kinetic evaluation degradation data, 2019-2020) Project Number 146839 (Checking feasibility using mixed-effects models derivation kinetic modelling parameters degradation studies, 2020-2021) Project Number 173340 (Application nonlinear hierarchical models kinetic evaluation chemical degradation data) Thanks everyone involved collaboration support! Thanks due also Emmanuelle Comets, maintainer saemix package, interest support using SAEM algorithm implementation saemix evaluation chemical degradation data. Regarding application nonlinear mixed-effects models degradation data, von Götz et al (1999) already proposed use technique context environmental risk assessments pesticides. However, work apparently followed , independently arrive idea missed cite previous work topic first publications.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/index.html","id":"development","dir":"","previous_headings":"","what":"Development","title":"Kinetic Evaluation of Chemical Degradation Data","text":"Contributions welcome!","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the AIC for a column of an mmkin object — AIC.mmkin","title":"Calculate the AIC for a column of an mmkin object — AIC.mmkin","text":"Provides convenient way compare different kinetic models fitted dataset.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the AIC for a column of an mmkin object — AIC.mmkin","text":"","code":"# S3 method for class 'mmkin' AIC(object, ..., k = 2) # S3 method for class 'mmkin' BIC(object, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the AIC for a column of an mmkin object — AIC.mmkin","text":"object object class mmkin, containing one column. ... compatibility generic method k generic method","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the AIC for a column of an mmkin object — AIC.mmkin","text":"generic method (numeric value single fits, dataframe several fits column).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the AIC for a column of an mmkin object — AIC.mmkin","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the AIC for a column of an mmkin object — AIC.mmkin","text":"","code":"# skip, as it takes > 10 s on winbuilder f <- mmkin(c(\"SFO\", \"FOMC\", \"DFOP\"), list(\"FOCUS A\" = FOCUS_2006_A, \"FOCUS C\" = FOCUS_2006_C), cores = 1, quiet = TRUE) #> Warning: Optimisation did not converge: #> false convergence (8) # We get a warning because the FOMC model does not converge for the # FOCUS A dataset, as it is well described by SFO AIC(f[\"SFO\", \"FOCUS A\"]) # We get a single number for a single fit #> [1] 55.28197 AIC(f[[\"SFO\", \"FOCUS A\"]]) # or when extracting an mkinfit object #> [1] 55.28197 # For FOCUS A, the models fit almost equally well, so the higher the number # of parameters, the higher (worse) the AIC AIC(f[, \"FOCUS A\"]) #> df AIC #> SFO 3 55.28197 #> FOMC 4 57.28198 #> DFOP 5 59.28197 AIC(f[, \"FOCUS A\"], k = 0) # If we do not penalize additional parameters, we get nearly the same #> df AIC #> SFO 3 49.28197 #> FOMC 4 49.28198 #> DFOP 5 49.28197 BIC(f[, \"FOCUS A\"]) # Comparing the BIC gives a very similar picture #> df BIC #> SFO 3 55.52030 #> FOMC 4 57.59974 #> DFOP 5 59.67918 # For FOCUS C, the more complex models fit better AIC(f[, \"FOCUS C\"]) #> df AIC #> SFO 3 59.29336 #> FOMC 4 44.68652 #> DFOP 5 29.02372 BIC(f[, \"FOCUS C\"]) #> df BIC #> SFO 3 59.88504 #> FOMC 4 45.47542 #> DFOP 5 30.00984"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/CAKE_export.html","id":null,"dir":"Reference","previous_headings":"","what":"Export a list of datasets format to a CAKE study file — CAKE_export","title":"Export a list of datasets format to a CAKE study file — CAKE_export","text":"addition datasets, pathways degradation model can specified well.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/CAKE_export.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Export a list of datasets format to a CAKE study file — CAKE_export","text":"","code":"CAKE_export( ds, map = c(parent = \"Parent\"), links = NA, filename = \"CAKE_export.csf\", path = \".\", overwrite = FALSE, study = \"Degradinol aerobic soil degradation\", description = \"\", time_unit = \"days\", res_unit = \"% AR\", comment = \"\", date = Sys.Date(), optimiser = \"IRLS\" )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/CAKE_export.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Export a list of datasets format to a CAKE study file — CAKE_export","text":"ds named list datasets long format compatible mkinfit. map character vector CAKE compartment names (Parent, A1, ...), named names used list datasets. links optional character vector target compartments, named names source compartments. order make easier, names used datasets supplied. filename write result. end .csf order compatible CAKE. path optional path output file. overwrite TRUE, existing files overwritten. study name study. description optional description. time_unit time unit residue data. res_unit unit used residues. comment optional comment. date date file creation. optimiser Can OLS IRLS.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/CAKE_export.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Export a list of datasets format to a CAKE study file — CAKE_export","text":"function called side effect.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/CAKE_export.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Export a list of datasets format to a CAKE study file — CAKE_export","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/D24_2014.html","id":null,"dir":"Reference","previous_headings":"","what":"Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014","title":"Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014","text":"five datasets extracted active substance evaluation dossier published EFSA. Kinetic evaluations shown datasets intended illustrate advance kinetic modelling. fact data results shown imply license use context pesticide registrations, use data may constrained data protection regulations.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/D24_2014.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014","text":"","code":"D24_2014"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/D24_2014.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014","text":"mkindsg object grouping five datasets","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/D24_2014.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014","text":"Hellenic Ministry Rural Development Agriculture (2014) Final addendum Renewal Assessment Report - public version - 2,4-D Volume 3 Annex B.8 Fate behaviour environment https://open.efsa.europa.eu/study-inventory/EFSA-Q-2013-00811","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/D24_2014.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014","text":"Data first dataset p. 685. Data four datasets used preprocessed versions given kinetics section (p. 761ff.), exception residues smaller 1 DCP soil Site I2, values given p. 694 used. R code used create data object installed package 'dataset_generation' directory. code, page numbers given specific pieces information comments.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/D24_2014.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 — D24_2014","text":"","code":"print(D24_2014) #> <mkindsg> holding 5 mkinds objects #> Title $title: Aerobic soil degradation data on 2,4-D from the EU assessment in 2014 #> Occurrence of observed compounds $observed_n: #> D24 DCP DCA #> 5 4 4 #> Time normalisation factors $f_time_norm: #> [1] 1.6062378 0.7118732 0.7156063 0.7156063 0.8977124 #> Meta information $meta: #> study usda_soil_type study_moisture_ref_type #> Mississippi Cohen 1991 Silt loam <NA> #> Fayette Liu and Adelfinskaya 2011 Silt loam pF1 #> RefSol 03-G Liu and Adelfinskaya 2011 Loam pF1 #> Site E1 Liu and Adelfinskaya 2011 Loam pF1 #> Site I2 Liu and Adelfinskaya 2011 Loamy sand pF1 #> rel_moisture temperature #> Mississippi NA 25 #> Fayette 0.5 20 #> RefSol 03-G 0.5 20 #> Site E1 0.5 20 #> Site I2 0.5 20 # \\dontrun{ print(D24_2014$ds[[1]], data = TRUE) #> <mkinds> with $title: Mississippi #> Observed compounds $observed: D24 #> Sampling times $sampling_times: #> 0, 2, 4, 7, 15, 24, 35, 56, 71, 114, 183, 273, 365 #> With a maximum of 1 replicates #> time D24 #> 1 0 96.8 #> 2 2 81.0 #> 3 4 81.7 #> 4 7 88.2 #> 5 15 66.3 #> 6 24 72.9 #> 7 35 62.6 #> 8 56 54.6 #> 9 71 35.2 #> 10 114 18.0 #> 11 183 11.3 #> 12 273 9.9 #> 13 365 6.3 m_D24 = mkinmod(D24 = mkinsub(\"SFO\", to = \"DCP\"), DCP = mkinsub(\"SFO\", to = \"DCA\"), DCA = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded print(m_D24) #> <mkinmod> model generated with #> Use of formation fractions $use_of_ff: max #> Specification $spec: #> $D24 #> $type: SFO; $to: DCP; $sink: TRUE #> $DCP #> $type: SFO; $to: DCA; $sink: TRUE #> $DCA #> $type: SFO; $sink: TRUE #> Coefficient matrix $coefmat available #> Compiled model $cf available #> Differential equations: #> d_D24/dt = - k_D24 * D24 #> d_DCP/dt = + f_D24_to_DCP * k_D24 * D24 - k_DCP * DCP #> d_DCA/dt = + f_DCP_to_DCA * k_DCP * DCP - k_DCA * DCA m_D24_2 = mkinmod(D24 = mkinsub(\"DFOP\", to = \"DCP\"), DCP = mkinsub(\"SFO\", to = \"DCA\"), DCA = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded print(m_D24_2) #> <mkinmod> model generated with #> Use of formation fractions $use_of_ff: max #> Specification $spec: #> $D24 #> $type: DFOP; $to: DCP; $sink: TRUE #> $DCP #> $type: SFO; $to: DCA; $sink: TRUE #> $DCA #> $type: SFO; $sink: TRUE #> Compiled model $cf available #> Differential equations: #> d_D24/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * #> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) #> * D24 #> d_DCP/dt = + f_D24_to_DCP * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * #> exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 #> * time))) * D24 - k_DCP * DCP #> d_DCA/dt = + f_DCP_to_DCA * k_DCP * DCP - k_DCA * DCA # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/DFOP.solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Double First-Order in Parallel kinetics — DFOP.solution","title":"Double First-Order in Parallel kinetics — DFOP.solution","text":"Function describing decline defined starting value using sum two exponential decline functions.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/DFOP.solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Double First-Order in Parallel kinetics — DFOP.solution","text":"","code":"DFOP.solution(t, parent_0, k1, k2, g)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/DFOP.solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Double First-Order in Parallel kinetics — DFOP.solution","text":"t Time. parent_0 Starting value response variable time zero. k1 First kinetic constant. k2 Second kinetic constant. g Fraction starting value declining according first kinetic constant.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/DFOP.solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Double First-Order in Parallel kinetics — DFOP.solution","text":"value response variable time t.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/DFOP.solution.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Double First-Order in Parallel kinetics — DFOP.solution","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics FOCUS (2014) “Generic guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, Version 1.1, 18 December 2014 http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/DFOP.solution.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Double First-Order in Parallel kinetics — DFOP.solution","text":"","code":"plot(function(x) DFOP.solution(x, 100, 5, 0.5, 0.3), 0, 4, ylim = c(0,100))"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/Extract.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Subsetting method for mmkin objects — [.mmkin","title":"Subsetting method for mmkin objects — [.mmkin","text":"Subsetting method mmkin objects","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/Extract.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Subsetting method for mmkin objects — [.mmkin","text":"","code":"# S3 method for class 'mmkin' x[i, j, ..., drop = FALSE]"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/Extract.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Subsetting method for mmkin objects — [.mmkin","text":"x mmkin object Row index selecting fits specific models j Column index selecting fits specific datasets ... used, satisfy generic method definition drop FALSE, method always returns mmkin object, otherwise either list mkinfit objects single mkinfit object.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/Extract.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Subsetting method for mmkin objects — [.mmkin","text":"object class mmkin.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/Extract.mmkin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Subsetting method for mmkin objects — [.mmkin","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/Extract.mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Subsetting method for mmkin objects — [.mmkin","text":"","code":"# Only use one core, to pass R CMD check --as-cran fits <- mmkin(c(\"SFO\", \"FOMC\"), list(B = FOCUS_2006_B, C = FOCUS_2006_C), cores = 1, quiet = TRUE) fits[\"FOMC\", ] #> <mmkin> object #> Status of individual fits: #> #> dataset #> model B C #> FOMC OK OK #> #> OK: No warnings fits[, \"B\"] #> <mmkin> object #> Status of individual fits: #> #> dataset #> model B #> SFO OK #> FOMC OK #> #> OK: No warnings fits[\"SFO\", \"B\"] #> <mmkin> object #> Status of individual fits: #> #> dataset #> model B #> SFO OK #> #> OK: No warnings head( # This extracts an mkinfit object with lots of components fits[[\"FOMC\", \"B\"]] ) #> $par #> parent_0 log_alpha log_beta sigma #> 99.666192 2.549850 5.050587 1.890202 #> #> $objective #> [1] 28.58291 #> #> $convergence #> [1] 0 #> #> $iterations #> [1] 21 #> #> $evaluations #> function gradient #> 25 78 #> #> $message #> [1] \"both X-convergence and relative convergence (5)\" #>"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html","id":null,"dir":"Reference","previous_headings":"","what":"Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) — FOCUS_2006_DFOP_ref_A_to_B","title":"Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) — FOCUS_2006_DFOP_ref_A_to_B","text":"table fitted parameters resulting DT50 DT90 values generated different software packages. Taken directly FOCUS (2006). results fitting data Topfit software removed, initial concentration parent compound fixed value 100 fit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) — FOCUS_2006_DFOP_ref_A_to_B","text":"","code":"FOCUS_2006_DFOP_ref_A_to_B"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) — FOCUS_2006_DFOP_ref_A_to_B","text":"data frame containing following variables. package factor giving name software package M0 fitted initial concentration parent compound f fitted f parameter k1 fitted k1 parameter k2 fitted k2 parameter DT50 resulting half-life parent compound DT90 resulting DT90 parent compound dataset FOCUS dataset used","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) — FOCUS_2006_DFOP_ref_A_to_B","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) — FOCUS_2006_DFOP_ref_A_to_B","text":"","code":"data(FOCUS_2006_DFOP_ref_A_to_B)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html","id":null,"dir":"Reference","previous_headings":"","what":"Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) — FOCUS_2006_FOMC_ref_A_to_F","title":"Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) — FOCUS_2006_FOMC_ref_A_to_F","text":"table fitted parameters resulting DT50 DT90 values generated different software packages. Taken directly FOCUS (2006). results fitting data Topfit software removed, initial concentration parent compound fixed value 100 fit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) — FOCUS_2006_FOMC_ref_A_to_F","text":"","code":"FOCUS_2006_FOMC_ref_A_to_F"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) — FOCUS_2006_FOMC_ref_A_to_F","text":"data frame containing following variables. package factor giving name software package M0 fitted initial concentration parent compound alpha fitted alpha parameter beta fitted beta parameter DT50 resulting half-life parent compound DT90 resulting DT90 parent compound dataset FOCUS dataset used","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) — FOCUS_2006_FOMC_ref_A_to_F","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) — FOCUS_2006_FOMC_ref_A_to_F","text":"","code":"data(FOCUS_2006_FOMC_ref_A_to_F)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_HS_ref_A_to_F.html","id":null,"dir":"Reference","previous_headings":"","what":"Results of fitting the HS model to Datasets A to F of FOCUS (2006) — FOCUS_2006_HS_ref_A_to_F","title":"Results of fitting the HS model to Datasets A to F of FOCUS (2006) — FOCUS_2006_HS_ref_A_to_F","text":"table fitted parameters resulting DT50 DT90 values generated different software packages. Taken directly FOCUS (2006). results fitting data Topfit software removed, initial concentration parent compound fixed value 100 fit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_HS_ref_A_to_F.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Results of fitting the HS model to Datasets A to F of FOCUS (2006) — FOCUS_2006_HS_ref_A_to_F","text":"","code":"FOCUS_2006_HS_ref_A_to_F"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_HS_ref_A_to_F.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Results of fitting the HS model to Datasets A to F of FOCUS (2006) — FOCUS_2006_HS_ref_A_to_F","text":"data frame containing following variables. package factor giving name software package M0 fitted initial concentration parent compound tb fitted tb parameter k1 fitted k1 parameter k2 fitted k2 parameter DT50 resulting half-life parent compound DT90 resulting DT90 parent compound dataset FOCUS dataset used","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_HS_ref_A_to_F.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Results of fitting the HS model to Datasets A to F of FOCUS (2006) — FOCUS_2006_HS_ref_A_to_F","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_HS_ref_A_to_F.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Results of fitting the HS model to Datasets A to F of FOCUS (2006) — FOCUS_2006_HS_ref_A_to_F","text":"","code":"data(FOCUS_2006_HS_ref_A_to_F)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html","id":null,"dir":"Reference","previous_headings":"","what":"Results of fitting the SFO model to Datasets A to F of FOCUS (2006) — FOCUS_2006_SFO_ref_A_to_F","title":"Results of fitting the SFO model to Datasets A to F of FOCUS (2006) — FOCUS_2006_SFO_ref_A_to_F","text":"table fitted parameters resulting DT50 DT90 values generated different software packages. Taken directly FOCUS (2006). results fitting data Topfit software removed, initial concentration parent compound fixed value 100 fit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Results of fitting the SFO model to Datasets A to F of FOCUS (2006) — FOCUS_2006_SFO_ref_A_to_F","text":"","code":"FOCUS_2006_SFO_ref_A_to_F"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Results of fitting the SFO model to Datasets A to F of FOCUS (2006) — FOCUS_2006_SFO_ref_A_to_F","text":"data frame containing following variables. package factor giving name software package M0 fitted initial concentration parent compound k fitted first-order degradation rate constant DT50 resulting half-life parent compound DT90 resulting DT90 parent compound dataset FOCUS dataset used","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Results of fitting the SFO model to Datasets A to F of FOCUS (2006) — FOCUS_2006_SFO_ref_A_to_F","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Results of fitting the SFO model to Datasets A to F of FOCUS (2006) — FOCUS_2006_SFO_ref_A_to_F","text":"","code":"data(FOCUS_2006_SFO_ref_A_to_F)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html","id":null,"dir":"Reference","previous_headings":"","what":"Datasets A to F from the FOCUS Kinetics report from 2006 — FOCUS_2006_datasets","title":"Datasets A to F from the FOCUS Kinetics report from 2006 — FOCUS_2006_datasets","text":"Data taken FOCUS (2006), p. 258.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Datasets A to F from the FOCUS Kinetics report from 2006 — FOCUS_2006_datasets","text":"","code":"FOCUS_2006_A FOCUS_2006_B FOCUS_2006_C FOCUS_2006_D FOCUS_2006_E FOCUS_2006_F"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Datasets A to F from the FOCUS Kinetics report from 2006 — FOCUS_2006_datasets","text":"6 datasets observations following variables. name factor containing name observed variable time numeric vector containing time points value numeric vector containing concentrations percent applied radioactivity","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Datasets A to F from the FOCUS Kinetics report from 2006 — FOCUS_2006_datasets","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Datasets A to F from the FOCUS Kinetics report from 2006 — FOCUS_2006_datasets","text":"","code":"FOCUS_2006_C #> name time value #> 1 parent 0 85.1 #> 2 parent 1 57.9 #> 3 parent 3 29.9 #> 4 parent 7 14.6 #> 5 parent 14 9.7 #> 6 parent 28 6.6 #> 7 parent 63 4.0 #> 8 parent 91 3.9 #> 9 parent 119 0.6"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html","id":null,"dir":"Reference","previous_headings":"","what":"First-Order Multi-Compartment kinetics — FOMC.solution","title":"First-Order Multi-Compartment kinetics — FOMC.solution","text":"Function describing exponential decline defined starting value, decreasing rate constant.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"First-Order Multi-Compartment kinetics — FOMC.solution","text":"","code":"FOMC.solution(t, parent_0, alpha, beta)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"First-Order Multi-Compartment kinetics — FOMC.solution","text":"t Time. parent_0 Starting value response variable time zero. alpha Shape parameter determined coefficient variation rate constant values. beta Location parameter.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"First-Order Multi-Compartment kinetics — FOMC.solution","text":"value response variable time t.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"First-Order Multi-Compartment kinetics — FOMC.solution","text":"form given differs slightly original reference Gustafson Holden (1990). parameter beta corresponds 1/beta original equation.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"First-Order Multi-Compartment kinetics — FOMC.solution","text":"solution FOMC kinetic model reduces SFO.solution large values alpha beta \\(k = \\frac{\\beta}{\\alpha}\\).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"First-Order Multi-Compartment kinetics — FOMC.solution","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics FOCUS (2014) “Generic guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, Version 1.1, 18 December 2014 http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics Gustafson DI Holden LR (1990) Nonlinear pesticide dissipation soil: new model based spatial variability. Environmental Science Technology 24, 1032-1038","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"First-Order Multi-Compartment kinetics — FOMC.solution","text":"","code":"plot(function(x) FOMC.solution(x, 100, 10, 2), 0, 2, ylim = c(0, 100))"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/HS.solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Hockey-Stick kinetics — HS.solution","title":"Hockey-Stick kinetics — HS.solution","text":"Function describing two exponential decline functions break point .","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/HS.solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hockey-Stick kinetics — HS.solution","text":"","code":"HS.solution(t, parent_0, k1, k2, tb)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/HS.solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hockey-Stick kinetics — HS.solution","text":"t Time. parent_0 Starting value response variable time zero. k1 First kinetic constant. k2 Second kinetic constant. tb Break point. time, exponential decline according k1 calculated, time, exponential decline proceeds according k2.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/HS.solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Hockey-Stick kinetics — HS.solution","text":"value response variable time t.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/HS.solution.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Hockey-Stick kinetics — HS.solution","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics FOCUS (2014) “Generic guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, Version 1.1, 18 December 2014 http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/HS.solution.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Hockey-Stick kinetics — HS.solution","text":"","code":"plot(function(x) HS.solution(x, 100, 2, 0.3, 0.5), 0, 2, ylim=c(0,100))"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/IORE.solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Indeterminate order rate equation kinetics — IORE.solution","title":"Indeterminate order rate equation kinetics — IORE.solution","text":"Function describing exponential decline defined starting value, concentration dependent rate constant.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/IORE.solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Indeterminate order rate equation kinetics — IORE.solution","text":"","code":"IORE.solution(t, parent_0, k__iore, N)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/IORE.solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Indeterminate order rate equation kinetics — IORE.solution","text":"t Time. parent_0 Starting value response variable time zero. k__iore Rate constant. Note depends concentration units used. N Exponent describing nonlinearity rate equation","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/IORE.solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Indeterminate order rate equation kinetics — IORE.solution","text":"value response variable time t.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/IORE.solution.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Indeterminate order rate equation kinetics — IORE.solution","text":"solution IORE kinetic model reduces SFO.solution N = 1. parameters IORE model can transformed equivalent parameters FOMC mode - see NAFTA guidance details.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/IORE.solution.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Indeterminate order rate equation kinetics — IORE.solution","text":"NAFTA Technical Working Group Pesticides (dated) Guidance Evaluating Calculating Degradation Kinetics Environmental Media","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/IORE.solution.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Indeterminate order rate equation kinetics — IORE.solution","text":"","code":"plot(function(x) IORE.solution(x, 100, 0.2, 1.3), 0, 2, ylim = c(0, 100)) # \\dontrun{ fit.fomc <- mkinfit(\"FOMC\", FOCUS_2006_C, quiet = TRUE) fit.iore <- mkinfit(\"IORE\", FOCUS_2006_C, quiet = TRUE) fit.iore.deS <- mkinfit(\"IORE\", FOCUS_2006_C, solution_type = \"deSolve\", quiet = TRUE) #> Error in is.loaded(initfunc, PACKAGE = dllname, type = \"\") : #> invalid 'PACKAGE' argument print(data.frame(fit.fomc$par, fit.iore$par, fit.iore.deS$par, row.names = paste(\"model par\", 1:4))) #> fit.fomc.par fit.iore.par fit.iore.deS.par #> model par 1 85.87489063 85.874890 85.874890 #> model par 2 0.05192238 -4.826631 -4.826631 #> model par 3 0.65096665 1.949403 1.949403 #> model par 4 1.85744396 1.857444 1.857444 print(rbind(fomc = endpoints(fit.fomc)$distimes, iore = endpoints(fit.iore)$distimes, iore.deS = endpoints(fit.iore)$distimes)) #> DT50 DT90 DT50back #> fomc 1.785233 15.1479 4.559973 #> iore 1.785233 15.1479 4.559973 #> iore.deS 1.785233 15.1479 4.559973 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html","id":null,"dir":"Reference","previous_headings":"","what":"Example datasets from the NAFTA SOP published 2015 — NAFTA_SOP_2015","title":"Example datasets from the NAFTA SOP published 2015 — NAFTA_SOP_2015","text":"Data taken US EPA (2015), p. 19 23.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Example datasets from the NAFTA SOP published 2015 — NAFTA_SOP_2015","text":"","code":"NAFTA_SOP_Appendix_B NAFTA_SOP_Appendix_D"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Example datasets from the NAFTA SOP published 2015 — NAFTA_SOP_2015","text":"2 datasets observations following variables. name factor containing name observed variable time numeric vector containing time points value numeric vector containing concentrations","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Example datasets from the NAFTA SOP published 2015 — NAFTA_SOP_2015","text":"NAFTA (2011) Guidance evaluating calculating degradation kinetics environmental media. NAFTA Technical Working Group Pesticides https://www.epa.gov/pesticide-science--assessing-pesticide-risks/guidance-evaluating--calculating-degradation accessed 2019-02-22 US EPA (2015) Standard Operating Procedure Using NAFTA Guidance Calculate Representative Half-life Values Characterizing Pesticide Degradation https://www.epa.gov/pesticide-science--assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Example datasets from the NAFTA SOP published 2015 — NAFTA_SOP_2015","text":"","code":"nafta_evaluation <- nafta(NAFTA_SOP_Appendix_D, cores = 1) #> The SFO model is rejected as S_SFO is equal or higher than the critical value S_c #> The representative half-life of the IORE model is longer than the one corresponding #> to the terminal degradation rate found with the DFOP model. #> The representative half-life obtained from the DFOP model may be used print(nafta_evaluation) #> Sums of squares: #> SFO IORE DFOP #> 1378.6832 615.7730 517.8836 #> #> Critical sum of squares for checking the SFO model: #> [1] 717.4598 #> #> Parameters: #> $SFO #> Estimate Pr(>t) Lower Upper #> parent_0 83.7558 1.80e-14 77.18268 90.3288 #> k_parent 0.0017 7.43e-05 0.00112 0.0026 #> sigma 8.7518 1.22e-05 5.64278 11.8608 #> #> $IORE #> Estimate Pr(>t) Lower Upper #> parent_0 9.69e+01 NA 8.88e+01 1.05e+02 #> k__iore_parent 8.40e-14 NA 1.79e-18 3.94e-09 #> N_parent 6.68e+00 NA 4.19e+00 9.17e+00 #> sigma 5.85e+00 NA 3.76e+00 7.94e+00 #> #> $DFOP #> Estimate Pr(>t) Lower Upper #> parent_0 9.76e+01 1.94e-13 9.02e+01 1.05e+02 #> k1 4.24e-02 5.92e-03 2.03e-02 8.88e-02 #> k2 8.24e-04 6.48e-03 3.89e-04 1.75e-03 #> g 2.88e-01 2.47e-05 1.95e-01 4.03e-01 #> sigma 5.36e+00 2.22e-05 3.43e+00 7.30e+00 #> #> #> DTx values: #> DT50 DT90 DT50_rep #> SFO 407 1350 407 #> IORE 541 5190000 1560000 #> DFOP 429 2380 841 #> #> Representative half-life: #> [1] 841.41 plot(nafta_evaluation)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_Attachment.html","id":null,"dir":"Reference","previous_headings":"","what":"Example datasets from Attachment 1 to the NAFTA SOP published 2015 — NAFTA_SOP_Attachment","title":"Example datasets from Attachment 1 to the NAFTA SOP published 2015 — NAFTA_SOP_Attachment","text":"Data taken Attachment 1 SOP.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_Attachment.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Example datasets from Attachment 1 to the NAFTA SOP published 2015 — NAFTA_SOP_Attachment","text":"","code":"NAFTA_SOP_Attachment"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_Attachment.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Example datasets from Attachment 1 to the NAFTA SOP published 2015 — NAFTA_SOP_Attachment","text":"list (NAFTA_SOP_Attachment) containing 16 datasets suitable evaluation nafta","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_Attachment.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Example datasets from Attachment 1 to the NAFTA SOP published 2015 — NAFTA_SOP_Attachment","text":"NAFTA (2011) Guidance evaluating calculating degradation kinetics environmental media. NAFTA Technical Working Group Pesticides https://www.epa.gov/pesticide-science--assessing-pesticide-risks/guidance-evaluating--calculating-degradation accessed 2019-02-22 US EPA (2015) Standard Operating Procedure Using NAFTA Guidance Calculate Representative Half-life Values Characterizing Pesticide Degradation https://www.epa.gov/pesticide-science--assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_Attachment.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Example datasets from Attachment 1 to the NAFTA SOP published 2015 — NAFTA_SOP_Attachment","text":"","code":"nafta_att_p5a <- nafta(NAFTA_SOP_Attachment[[\"p5a\"]], cores = 1) #> The SFO model is rejected as S_SFO is equal or higher than the critical value S_c #> The half-life obtained from the IORE model may be used print(nafta_att_p5a) #> Sums of squares: #> SFO IORE DFOP #> 465.21753 56.27506 32.06401 #> #> Critical sum of squares for checking the SFO model: #> [1] 64.4304 #> #> Parameters: #> $SFO #> Estimate Pr(>t) Lower Upper #> parent_0 95.8401 4.67e-21 92.245 99.4357 #> k_parent 0.0102 3.92e-12 0.009 0.0117 #> sigma 4.8230 3.81e-06 3.214 6.4318 #> #> $IORE #> Estimate Pr(>t) Lower Upper #> parent_0 1.01e+02 NA 9.91e+01 1.02e+02 #> k__iore_parent 1.54e-05 NA 4.08e-06 5.84e-05 #> N_parent 2.57e+00 NA 2.25e+00 2.89e+00 #> sigma 1.68e+00 NA 1.12e+00 2.24e+00 #> #> $DFOP #> Estimate Pr(>t) Lower Upper #> parent_0 9.99e+01 1.41e-26 98.8116 101.0810 #> k1 2.67e-02 5.05e-06 0.0243 0.0295 #> k2 3.41e-12 5.00e-01 0.0000 Inf #> g 6.47e-01 3.67e-06 0.6248 0.6677 #> sigma 1.27e+00 8.91e-06 0.8395 1.6929 #> #> #> DTx values: #> DT50 DT90 DT50_rep #> SFO 67.7 2.25e+02 6.77e+01 #> IORE 58.2 1.07e+03 3.22e+02 #> DFOP 55.5 3.70e+11 2.03e+11 #> #> Representative half-life: #> [1] 321.51 plot(nafta_att_p5a)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFO.solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Single First-Order kinetics — SFO.solution","title":"Single First-Order kinetics — SFO.solution","text":"Function describing exponential decline defined starting value.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFO.solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Single First-Order kinetics — SFO.solution","text":"","code":"SFO.solution(t, parent_0, k)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFO.solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Single First-Order kinetics — SFO.solution","text":"t Time. parent_0 Starting value response variable time zero. k Kinetic rate constant.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFO.solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Single First-Order kinetics — SFO.solution","text":"value response variable time t.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFO.solution.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Single First-Order kinetics — SFO.solution","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics FOCUS (2014) “Generic guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, Version 1.1, 18 December 2014 http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFO.solution.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Single First-Order kinetics — SFO.solution","text":"","code":"plot(function(x) SFO.solution(x, 100, 3), 0, 2)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFORB.solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Single First-Order Reversible Binding kinetics — SFORB.solution","title":"Single First-Order Reversible Binding kinetics — SFORB.solution","text":"Function describing solution differential equations describing kinetic model first-order terms two-way transfer free bound fraction, first-order degradation term free fraction. initial condition defined amount free fraction substance bound fraction.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFORB.solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Single First-Order Reversible Binding kinetics — SFORB.solution","text":"","code":"SFORB.solution(t, parent_0, k_12, k_21, k_1output)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFORB.solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Single First-Order Reversible Binding kinetics — SFORB.solution","text":"t Time. parent_0 Starting value response variable time zero. k_12 Kinetic constant describing transfer free bound. k_21 Kinetic constant describing transfer bound free. k_1output Kinetic constant describing degradation free fraction.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFORB.solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Single First-Order Reversible Binding kinetics — SFORB.solution","text":"value response variable, sum free bound fractions time t.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFORB.solution.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Single First-Order Reversible Binding kinetics — SFORB.solution","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics FOCUS (2014) “Generic guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, Version 1.1, 18 December 2014 http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/SFORB.solution.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Single First-Order Reversible Binding kinetics — SFORB.solution","text":"","code":"plot(function(x) SFORB.solution(x, 100, 0.5, 2, 3), 0, 2)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/add_err.html","id":null,"dir":"Reference","previous_headings":"","what":"Add normally distributed errors to simulated kinetic degradation data — add_err","title":"Add normally distributed errors to simulated kinetic degradation data — add_err","text":"Normally distributed errors added data predicted specific degradation model using mkinpredict. variance error may depend predicted value specified standard deviation.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/add_err.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add normally distributed errors to simulated kinetic degradation data — add_err","text":"","code":"add_err( prediction, sdfunc, secondary = c(\"M1\", \"M2\"), n = 10, LOD = 0.1, reps = 2, digits = 1, seed = NA )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/add_err.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add normally distributed errors to simulated kinetic degradation data — add_err","text":"prediction prediction kinetic model produced mkinpredict. sdfunc function taking predicted value argument returning standard deviation used generating random error terms value. secondary names state variables initial value zero n number datasets generated. LOD limit detection (LOD). Values LOD adding random error set NA. reps number replicates generated within datasets. digits number digits values rounded. seed seed used generation random numbers. NA, seed set.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/add_err.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add normally distributed errors to simulated kinetic degradation data — add_err","text":"list datasets compatible mmkin, .e. components list datasets compatible mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/add_err.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Add normally distributed errors to simulated kinetic degradation data — add_err","text":"Ranke J Lehmann R (2015) t-test t-test, question. XV Symposium Pesticide Chemistry 2-4 September 2015, Piacenza, Italy https://jrwb.de/posters/piacenza_2015.pdf","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/add_err.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add normally distributed errors to simulated kinetic degradation data — add_err","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/add_err.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add normally distributed errors to simulated kinetic degradation data — add_err","text":"","code":"# The kinetic model m_SFO_SFO <- mkinmod(parent = mkinsub(\"SFO\", \"M1\"), M1 = mkinsub(\"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded # Generate a prediction for a specific set of parameters sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) # This is the prediction used for the \"Type 2 datasets\" on the Piacenza poster # from 2015 d_SFO_SFO <- mkinpredict(m_SFO_SFO, c(k_parent = 0.1, f_parent_to_M1 = 0.5, k_M1 = log(2)/1000), c(parent = 100, M1 = 0), sampling_times) # Add an error term with a constant (independent of the value) standard deviation # of 10, and generate three datasets d_SFO_SFO_err <- add_err(d_SFO_SFO, function(x) 10, n = 3, seed = 123456789 ) # Name the datasets for nicer plotting names(d_SFO_SFO_err) <- paste(\"Dataset\", 1:3) # Name the model in the list of models (with only one member in this case) for # nicer plotting later on. Be quiet and use only one core not to offend CRAN # checks # \\dontrun{ f_SFO_SFO <- mmkin(list(\"SFO-SFO\" = m_SFO_SFO), d_SFO_SFO_err, cores = 1, quiet = TRUE) plot(f_SFO_SFO) # We would like to inspect the fit for dataset 3 more closely # Using double brackets makes the returned object an mkinfit object # instead of a list of mkinfit objects, so plot.mkinfit is used plot(f_SFO_SFO[[3]], show_residuals = TRUE) # If we use single brackets, we should give two indices (model and dataset), # and plot.mmkin is used plot(f_SFO_SFO[1, 3]) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/anova.saem.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Anova method for saem.mmkin objects — anova.saem.mmkin","title":"Anova method for saem.mmkin objects — anova.saem.mmkin","text":"Generate anova object. method calculate BIC saemix package. prominent anova methods, models sorted number parameters, tests (requested) always relative model previous line.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/anova.saem.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Anova method for saem.mmkin objects — anova.saem.mmkin","text":"","code":"# S3 method for class 'saem.mmkin' anova( object, ..., method = c(\"is\", \"lin\", \"gq\"), test = FALSE, model.names = NULL )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/anova.saem.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Anova method for saem.mmkin objects — anova.saem.mmkin","text":"object saem.mmkin object ... objects method Method likelihood calculation: \"\" (importance sampling), \"lin\" (linear approximation), \"gq\" (Gaussian quadrature). Passed saemix::logLik.SaemixObject test likelihood ratio test performed? TRUE, alternative models tested first model. done nested models. model.names Optional character vector model names","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/anova.saem.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Anova method for saem.mmkin objects — anova.saem.mmkin","text":"\"anova\" data frame; traditional (S3) result anova()","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/aw.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate Akaike weights for model averaging — aw","title":"Calculate Akaike weights for model averaging — aw","text":"Akaike weights calculated based relative expected Kullback-Leibler information specified Burnham Anderson (2004).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/aw.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate Akaike weights for model averaging — aw","text":"","code":"aw(object, ...) # S3 method for class 'mkinfit' aw(object, ...) # S3 method for class 'mmkin' aw(object, ...) # S3 method for class 'mixed.mmkin' aw(object, ...) # S3 method for class 'multistart' aw(object, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/aw.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate Akaike weights for model averaging — aw","text":"object mmkin column object, containing two mkinfit models fitted data, mkinfit object. latter case, mkinfit objects fitted data specified dots arguments. ... used method mmkin column objects, mkinfit objects method mkinfit objects.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/aw.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Calculate Akaike weights for model averaging — aw","text":"Burnham KP Anderson DR (2004) Multimodel Inference: Understanding AIC BIC Model Selection. Sociological Methods & Research 33(2) 261-304","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/aw.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate Akaike weights for model averaging — aw","text":"","code":"# \\dontrun{ f_sfo <- mkinfit(\"SFO\", FOCUS_2006_D, quiet = TRUE) f_dfop <- mkinfit(\"DFOP\", FOCUS_2006_D, quiet = TRUE) aw_sfo_dfop <- aw(f_sfo, f_dfop) sum(aw_sfo_dfop) #> [1] 1 aw_sfo_dfop # SFO gets more weight as it has less parameters and a similar fit #> [1] 0.5970258 0.4029742 f <- mmkin(c(\"SFO\", \"FOMC\", \"DFOP\"), list(\"FOCUS D\" = FOCUS_2006_D), cores = 1, quiet = TRUE) aw(f) #> [1] 0.4808722 0.1945539 0.3245740 sum(aw(f)) #> [1] 1 aw(f[c(\"SFO\", \"DFOP\")]) #> [1] 0.5970258 0.4029742 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/check_failed.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if fit within an mhmkin object failed — check_failed","title":"Check if fit within an mhmkin object failed — check_failed","text":"Check fit within mhmkin object failed","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/check_failed.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if fit within an mhmkin object failed — check_failed","text":"","code":"check_failed(x)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/check_failed.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if fit within an mhmkin object failed — check_failed","text":"x object checked","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/confint.mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Confidence intervals for parameters of mkinfit objects — confint.mkinfit","title":"Confidence intervals for parameters of mkinfit objects — confint.mkinfit","text":"default method 'quadratic' based quadratic approximation curvature likelihood function maximum likelihood parameter estimates. alternative method 'profile' based profile likelihood parameter. 'profile' method uses two nested optimisations can take long time, even parallelized specifying 'cores' unixoid platforms. speed method likely improved using method Venzon Moolgavkar (1988).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/confint.mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Confidence intervals for parameters of mkinfit objects — confint.mkinfit","text":"","code":"# S3 method for class 'mkinfit' confint( object, parm, level = 0.95, alpha = 1 - level, cutoff, method = c(\"quadratic\", \"profile\"), transformed = TRUE, backtransform = TRUE, cores = parallel::detectCores(), rel_tol = 0.01, quiet = FALSE, ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/confint.mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Confidence intervals for parameters of mkinfit objects — confint.mkinfit","text":"object mkinfit object parm vector names parameters given confidence intervals. missing, parameters considered. level confidence level required alpha allowed error probability, overrides 'level' specified. cutoff Possibility specify alternative cutoff difference log-likelihoods confidence boundary. Specifying explicit cutoff value overrides arguments 'level' 'alpha' method 'quadratic' method approximates likelihood function optimised parameters using second term Taylor expansion, using second derivative (hessian) contained object. 'profile' method searches parameter space cutoff confidence intervals means likelihood ratio test. transformed quadratic approximation used, applied likelihood based transformed parameters? backtransform approximate likelihood terms transformed parameters, backtransform parameters confidence intervals? cores number cores used multicore processing. Windows machines, cores > 1 currently supported. rel_tol method 'profile', accuracy lower upper bounds, relative estimate obtained quadratic method? quiet suppress message \"Profiling likelihood\" ... used","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/confint.mkinfit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Confidence intervals for parameters of mkinfit objects — confint.mkinfit","text":"matrix columns giving lower upper confidence limits parameter.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/confint.mkinfit.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Confidence intervals for parameters of mkinfit objects — confint.mkinfit","text":"Bates DM Watts GW (1988) Nonlinear regression analysis & applications Pawitan Y (2013) likelihood - Statistical modelling inference using likelihood. Clarendon Press, Oxford. Venzon DJ Moolgavkar SH (1988) Method Computing Profile-Likelihood Based Confidence Intervals, Applied Statistics, 37, 87–94.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/confint.mkinfit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Confidence intervals for parameters of mkinfit objects — confint.mkinfit","text":"","code":"f <- mkinfit(\"SFO\", FOCUS_2006_C, quiet = TRUE) confint(f, method = \"quadratic\") #> 2.5% 97.5% #> parent_0 71.8242430 93.1600766 #> k_parent 0.2109541 0.4440528 #> sigma 1.9778868 7.3681380 # \\dontrun{ confint(f, method = \"profile\") #> Profiling the likelihood #> 2.5% 97.5% #> parent_0 73.0641834 92.1392181 #> k_parent 0.2170293 0.4235348 #> sigma 3.1307772 8.0628314 # Set the number of cores for the profiling method for further examples if (identical(Sys.getenv(\"NOT_CRAN\"), \"true\")) { n_cores <- parallel::detectCores() - 1 } else { n_cores <- 1 } if (Sys.getenv(\"TRAVIS\") != \"\") n_cores = 1 if (Sys.info()[\"sysname\"] == \"Windows\") n_cores = 1 SFO_SFO <- mkinmod(parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\"), use_of_ff = \"min\", quiet = TRUE) SFO_SFO.ff <- mkinmod(parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\"), use_of_ff = \"max\", quiet = TRUE) f_d_1 <- mkinfit(SFO_SFO, subset(FOCUS_2006_D, value != 0), quiet = TRUE) system.time(ci_profile <- confint(f_d_1, method = \"profile\", cores = 1, quiet = TRUE)) #> user system elapsed #> 1.182 0.004 1.186 # Using more cores does not save much time here, as parent_0 takes up most of the time # If we additionally exclude parent_0 (the confidence of which is often of # minor interest), we get a nice performance improvement if we use at least 4 cores system.time(ci_profile_no_parent_0 <- confint(f_d_1, method = \"profile\", c(\"k_parent_sink\", \"k_parent_m1\", \"k_m1_sink\", \"sigma\"), cores = n_cores)) #> Profiling the likelihood #> user system elapsed #> 0.429 0.171 0.324 ci_profile #> 2.5% 97.5% #> parent_0 96.456003640 1.027703e+02 #> k_parent_sink 0.040762501 5.549764e-02 #> k_parent_m1 0.046786482 5.500879e-02 #> k_m1_sink 0.003892605 6.702778e-03 #> sigma 2.535612399 3.985263e+00 ci_quadratic_transformed <- confint(f_d_1, method = \"quadratic\") ci_quadratic_transformed #> 2.5% 97.5% #> parent_0 96.403841640 1.027931e+02 #> k_parent_sink 0.041033378 5.596269e-02 #> k_parent_m1 0.046777902 5.511931e-02 #> k_m1_sink 0.004012217 6.897547e-03 #> sigma 2.396089689 3.854918e+00 ci_quadratic_untransformed <- confint(f_d_1, method = \"quadratic\", transformed = FALSE) ci_quadratic_untransformed #> 2.5% 97.5% #> parent_0 96.403841645 102.79312449 #> k_parent_sink 0.040485331 0.05535491 #> k_parent_m1 0.046611582 0.05494364 #> k_m1_sink 0.003835483 0.00668582 #> sigma 2.396089689 3.85491806 # Against the expectation based on Bates and Watts (1988), the confidence # intervals based on the internal parameter transformation are less # congruent with the likelihood based intervals. Note the superiority of the # interval based on the untransformed fit for k_m1_sink rel_diffs_transformed <- abs((ci_quadratic_transformed - ci_profile)/ci_profile) rel_diffs_untransformed <- abs((ci_quadratic_untransformed - ci_profile)/ci_profile) rel_diffs_transformed < rel_diffs_untransformed #> 2.5% 97.5% #> parent_0 FALSE FALSE #> k_parent_sink TRUE FALSE #> k_parent_m1 TRUE FALSE #> k_m1_sink FALSE FALSE #> sigma FALSE FALSE signif(rel_diffs_transformed, 3) #> 2.5% 97.5% #> parent_0 0.000541 0.000222 #> k_parent_sink 0.006650 0.008380 #> k_parent_m1 0.000183 0.002010 #> k_m1_sink 0.030700 0.029100 #> sigma 0.055000 0.032700 signif(rel_diffs_untransformed, 3) #> 2.5% 97.5% #> parent_0 0.000541 0.000222 #> k_parent_sink 0.006800 0.002570 #> k_parent_m1 0.003740 0.001180 #> k_m1_sink 0.014700 0.002530 #> sigma 0.055000 0.032700 # Investigate a case with formation fractions f_d_2 <- mkinfit(SFO_SFO.ff, subset(FOCUS_2006_D, value != 0), quiet = TRUE) ci_profile_ff <- confint(f_d_2, method = \"profile\", cores = n_cores) #> Profiling the likelihood ci_profile_ff #> 2.5% 97.5% #> parent_0 96.456003640 1.027703e+02 #> k_parent 0.090911032 1.071578e-01 #> k_m1 0.003892606 6.702775e-03 #> f_parent_to_m1 0.471328495 5.611550e-01 #> sigma 2.535612399 3.985263e+00 ci_quadratic_transformed_ff <- confint(f_d_2, method = \"quadratic\") ci_quadratic_transformed_ff #> 2.5% 97.5% #> parent_0 96.403833581 102.79311649 #> k_parent 0.090823771 0.10725430 #> k_m1 0.004012219 0.00689755 #> f_parent_to_m1 0.469118824 0.55959615 #> sigma 2.396089689 3.85491806 ci_quadratic_untransformed_ff <- confint(f_d_2, method = \"quadratic\", transformed = FALSE) ci_quadratic_untransformed_ff #> 2.5% 97.5% #> parent_0 96.403833586 1.027931e+02 #> k_parent 0.090491913 1.069035e-01 #> k_m1 0.003835485 6.685823e-03 #> f_parent_to_m1 0.469113477 5.598387e-01 #> sigma 2.396089689 3.854918e+00 rel_diffs_transformed_ff <- abs((ci_quadratic_transformed_ff - ci_profile_ff)/ci_profile_ff) rel_diffs_untransformed_ff <- abs((ci_quadratic_untransformed_ff - ci_profile_ff)/ci_profile_ff) # While the confidence interval for the parent rate constant is closer to # the profile based interval when using the internal parameter # transformation, the interval for the metabolite rate constant is 'better # without internal parameter transformation. rel_diffs_transformed_ff < rel_diffs_untransformed_ff #> 2.5% 97.5% #> parent_0 FALSE FALSE #> k_parent TRUE TRUE #> k_m1 FALSE FALSE #> f_parent_to_m1 TRUE FALSE #> sigma TRUE FALSE rel_diffs_transformed_ff #> 2.5% 97.5% #> parent_0 0.0005408690 0.0002217233 #> k_parent 0.0009598532 0.0009001864 #> k_m1 0.0307283045 0.0290588367 #> f_parent_to_m1 0.0046881768 0.0027780062 #> sigma 0.0550252516 0.0327066836 rel_diffs_untransformed_ff #> 2.5% 97.5% #> parent_0 0.0005408689 0.0002217233 #> k_parent 0.0046102155 0.0023732280 #> k_m1 0.0146740687 0.0025291815 #> f_parent_to_m1 0.0046995210 0.0023457712 #> sigma 0.0550252516 0.0327066836 # The profiling for the following fit does not finish in a reasonable time, # therefore we use the quadratic approximation m_synth_DFOP_par <- mkinmod(parent = mkinsub(\"DFOP\", c(\"M1\", \"M2\")), M1 = mkinsub(\"SFO\"), M2 = mkinsub(\"SFO\"), use_of_ff = \"max\", quiet = TRUE) DFOP_par_c <- synthetic_data_for_UBA_2014[[12]]$data f_tc_2 <- mkinfit(m_synth_DFOP_par, DFOP_par_c, error_model = \"tc\", error_model_algorithm = \"direct\", quiet = TRUE) confint(f_tc_2, method = \"quadratic\") #> 2.5% 97.5% #> parent_0 94.596181875 106.19936592 #> k_M1 0.037605432 0.04490757 #> k_M2 0.008568745 0.01087675 #> f_parent_to_M1 0.021464676 0.62023880 #> f_parent_to_M2 0.015167158 0.37975350 #> k1 0.273897535 0.33388072 #> k2 0.018614555 0.02250379 #> g 0.671943738 0.73583261 #> sigma_low 0.251283679 0.83992102 #> rsd_high 0.040411022 0.07662008 confint(f_tc_2, \"parent_0\", method = \"quadratic\") #> 2.5% 97.5% #> parent_0 94.59618 106.1994 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/create_deg_func.html","id":null,"dir":"Reference","previous_headings":"","what":"Create degradation functions for known analytical solutions — create_deg_func","title":"Create degradation functions for known analytical solutions — create_deg_func","text":"Create degradation functions known analytical solutions","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/create_deg_func.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create degradation functions for known analytical solutions — create_deg_func","text":"","code":"create_deg_func(spec, use_of_ff = c(\"min\", \"max\"))"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/create_deg_func.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create degradation functions for known analytical solutions — create_deg_func","text":"spec List model specifications contained mkinmod objects use_of_ff Minimum maximum use formation fractions","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/create_deg_func.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create degradation functions for known analytical solutions — create_deg_func","text":"Degradation function attached mkinmod objects","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/create_deg_func.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create degradation functions for known analytical solutions — create_deg_func","text":"","code":"SFO_SFO <- mkinmod( parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded FOCUS_D <- subset(FOCUS_2006_D, value != 0) # to avoid warnings fit_1 <- mkinfit(SFO_SFO, FOCUS_D, solution_type = \"analytical\", quiet = TRUE) # \\dontrun{ fit_2 <- mkinfit(SFO_SFO, FOCUS_D, solution_type = \"deSolve\", quiet = TRUE) if (require(rbenchmark)) benchmark( analytical = mkinfit(SFO_SFO, FOCUS_D, solution_type = \"analytical\", quiet = TRUE), deSolve = mkinfit(SFO_SFO, FOCUS_D, solution_type = \"deSolve\", quiet = TRUE), replications = 2) #> Loading required package: rbenchmark #> test replications elapsed relative user.self sys.self user.child #> 1 analytical 2 0.249 1.000 0.249 0 0 #> 2 deSolve 2 0.307 1.233 0.306 0 0 #> sys.child #> 1 0 #> 2 0 DFOP_SFO <- mkinmod( parent = mkinsub(\"DFOP\", \"m1\"), m1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded benchmark( analytical = mkinfit(DFOP_SFO, FOCUS_D, solution_type = \"analytical\", quiet = TRUE), deSolve = mkinfit(DFOP_SFO, FOCUS_D, solution_type = \"deSolve\", quiet = TRUE), replications = 2) #> test replications elapsed relative user.self sys.self user.child #> 1 analytical 2 0.391 1.000 0.391 0 0 #> 2 deSolve 2 0.543 1.389 0.542 0 0 #> sys.child #> 1 0 #> 2 0 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/dimethenamid_2018.html","id":null,"dir":"Reference","previous_headings":"","what":"Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018","title":"Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018","text":"datasets extracted active substance evaluation dossier published EFSA. Kinetic evaluations shown datasets intended illustrate advance kinetic modelling. fact data results shown imply license use context pesticide registrations, use data may constrained data protection regulations.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/dimethenamid_2018.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018","text":"","code":"dimethenamid_2018"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/dimethenamid_2018.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018","text":"mkindsg object grouping seven datasets meta information","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/dimethenamid_2018.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018","text":"Rapporteur Member State Germany, Co-Rapporteur Member State Bulgaria (2018) Renewal Assessment Report Dimethenamid-P Volume 3 - B.8 Environmental fate behaviour Rev. 2 - November 2017 https://open.efsa.europa.eu/study-inventory/EFSA-Q-2014-00716","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/dimethenamid_2018.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018","text":"R code used create data object installed package 'dataset_generation' directory. code, page numbers given specific pieces information comments.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/dimethenamid_2018.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Aerobic soil degradation data on dimethenamid and dimethenamid-P from the EU assessment in 2018 — dimethenamid_2018","text":"","code":"print(dimethenamid_2018) #> <mkindsg> holding 7 mkinds objects #> Title $title: Aerobic soil degradation data on dimethenamid-P from the EU assessment in 2018 #> Occurrence of observed compounds $observed_n: #> DMTAP M23 M27 M31 DMTA #> 3 7 7 7 4 #> Time normalisation factors $f_time_norm: #> [1] 1.0000000 0.9706477 1.2284784 1.2284784 0.6233856 0.7678922 0.6733938 #> Meta information $meta: #> study usda_soil_type study_moisture_ref_type rel_moisture #> Calke Unsworth 2014 Sandy loam pF2 1.00 #> Borstel Staudenmaier 2009 Sand pF1 0.50 #> Elliot 1 Wendt 1997 Clay loam pF2.5 0.75 #> Elliot 2 Wendt 1997 Clay loam pF2.5 0.75 #> Flaach König 1996 Sandy clay loam pF1 0.40 #> BBA 2.2 König 1995 Loamy sand pF1 0.40 #> BBA 2.3 König 1995 Sandy loam pF1 0.40 #> study_ref_moisture temperature #> Calke NA 20 #> Borstel 23.00 20 #> Elliot 1 33.37 23 #> Elliot 2 33.37 23 #> Flaach NA 20 #> BBA 2.2 NA 20 #> BBA 2.3 NA 20 dmta_ds <- lapply(1:7, function(i) { ds_i <- dimethenamid_2018$ds[[i]]$data ds_i[ds_i$name == \"DMTAP\", \"name\"] <- \"DMTA\" ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i] ds_i }) names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title) dmta_ds[[\"Elliot\"]] <- rbind(dmta_ds[[\"Elliot 1\"]], dmta_ds[[\"Elliot 2\"]]) dmta_ds[[\"Elliot 1\"]] <- NULL dmta_ds[[\"Elliot 2\"]] <- NULL # \\dontrun{ # We don't use DFOP for the parent compound, as this gives numerical # instabilities in the fits sfo_sfo3p <- mkinmod( DMTA = mkinsub(\"SFO\", c(\"M23\", \"M27\", \"M31\")), M23 = mkinsub(\"SFO\"), M27 = mkinsub(\"SFO\"), M31 = mkinsub(\"SFO\", \"M27\", sink = FALSE), quiet = TRUE ) dmta_sfo_sfo3p_tc <- mmkin(list(\"SFO-SFO3+\" = sfo_sfo3p), dmta_ds, error_model = \"tc\", quiet = TRUE) print(dmta_sfo_sfo3p_tc) #> <mmkin> object #> Status of individual fits: #> #> dataset #> model Calke Borstel Flaach BBA 2.2 BBA 2.3 Elliot #> SFO-SFO3+ OK OK OK OK OK OK #> #> OK: No warnings # The default (test_log_parms = FALSE) gives an undue # influence of ill-defined rate constants that have # extremely small values: plot(mixed(dmta_sfo_sfo3p_tc), test_log_parms = FALSE) # If we disregards ill-defined rate constants, the results # look more plausible, but the truth is likely to be in # between these variants plot(mixed(dmta_sfo_sfo3p_tc), test_log_parms = TRUE) # We can also specify a default value for the failing # log parameters, to mimic FOCUS guidance plot(mixed(dmta_sfo_sfo3p_tc), test_log_parms = TRUE, default_log_parms = log(2)/1000) # As these attempts are not satisfying, we use nonlinear mixed-effects models # f_dmta_nlme_tc <- nlme(dmta_sfo_sfo3p_tc) # nlme reaches maxIter = 50 without convergence f_dmta_saem_tc <- saem(dmta_sfo_sfo3p_tc) # I am commenting out the convergence plot as rendering them # with pkgdown fails (at least without further tweaks to the # graphics device used) #saemix::plot(f_dmta_saem_tc$so, plot.type = \"convergence\") summary(f_dmta_saem_tc) #> saemix version used for fitting: 3.3 #> mkin version used for pre-fitting: 1.2.10 #> R version used for fitting: 4.4.2 #> Date of fit: Fri Feb 14 07:29:22 2025 #> Date of summary: Fri Feb 14 07:29:22 2025 #> #> Equations: #> d_DMTA/dt = - k_DMTA * DMTA #> d_M23/dt = + f_DMTA_to_M23 * k_DMTA * DMTA - k_M23 * M23 #> d_M27/dt = + f_DMTA_to_M27 * k_DMTA * DMTA - k_M27 * M27 + k_M31 * M31 #> d_M31/dt = + f_DMTA_to_M31 * k_DMTA * DMTA - k_M31 * M31 #> #> Data: #> 563 observations of 4 variable(s) grouped in 6 datasets #> #> Model predictions using solution type deSolve #> #> Fitted in 295.57 s #> Using 300, 100 iterations and 9 chains #> #> Variance model: Two-component variance function #> #> Starting values for degradation parameters: #> DMTA_0 log_k_DMTA log_k_M23 log_k_M27 log_k_M31 f_DMTA_ilr_1 #> 95.5662 -2.9048 -3.8130 -4.1600 -4.1486 0.1341 #> f_DMTA_ilr_2 f_DMTA_ilr_3 #> 0.1385 -1.6700 #> #> Fixed degradation parameter values: #> None #> #> Starting values for random effects (square root of initial entries in omega): #> DMTA_0 log_k_DMTA log_k_M23 log_k_M27 log_k_M31 f_DMTA_ilr_1 #> DMTA_0 4.802 0.0000 0.0000 0.000 0.0000 0.0000 #> log_k_DMTA 0.000 0.9834 0.0000 0.000 0.0000 0.0000 #> log_k_M23 0.000 0.0000 0.6983 0.000 0.0000 0.0000 #> log_k_M27 0.000 0.0000 0.0000 1.028 0.0000 0.0000 #> log_k_M31 0.000 0.0000 0.0000 0.000 0.9841 0.0000 #> f_DMTA_ilr_1 0.000 0.0000 0.0000 0.000 0.0000 0.7185 #> f_DMTA_ilr_2 0.000 0.0000 0.0000 0.000 0.0000 0.0000 #> f_DMTA_ilr_3 0.000 0.0000 0.0000 0.000 0.0000 0.0000 #> f_DMTA_ilr_2 f_DMTA_ilr_3 #> DMTA_0 0.0000 0.0000 #> log_k_DMTA 0.0000 0.0000 #> log_k_M23 0.0000 0.0000 #> log_k_M27 0.0000 0.0000 #> log_k_M31 0.0000 0.0000 #> f_DMTA_ilr_1 0.0000 0.0000 #> f_DMTA_ilr_2 0.7378 0.0000 #> f_DMTA_ilr_3 0.0000 0.4451 #> #> Starting values for error model parameters: #> a.1 b.1 #> 1 1 #> #> Results: #> #> Likelihood computed by importance sampling #> AIC BIC logLik #> 2276 2273 -1120 #> #> Optimised parameters: #> est. lower upper #> DMTA_0 88.4862 84.1127 92.8598 #> log_k_DMTA -3.0512 -3.5674 -2.5351 #> log_k_M23 -4.0576 -4.9013 -3.2139 #> log_k_M27 -3.8584 -4.2572 -3.4595 #> log_k_M31 -3.9779 -4.4844 -3.4714 #> f_DMTA_ilr_1 0.1264 -0.2186 0.4714 #> f_DMTA_ilr_2 0.1509 -0.2547 0.5565 #> f_DMTA_ilr_3 -1.3891 -1.6962 -1.0819 #> a.1 0.9196 0.8307 1.0085 #> b.1 0.1377 0.1205 0.1549 #> SD.DMTA_0 3.5956 -0.8167 8.0078 #> SD.log_k_DMTA 0.6437 0.2784 1.0091 #> SD.log_k_M23 0.9929 0.3719 1.6139 #> SD.log_k_M27 0.4530 0.1522 0.7537 #> SD.log_k_M31 0.5773 0.1952 0.9595 #> SD.f_DMTA_ilr_1 0.4063 0.1505 0.6621 #> SD.f_DMTA_ilr_2 0.4800 0.1817 0.7783 #> SD.f_DMTA_ilr_3 0.3582 0.1350 0.5814 #> #> Correlation: #> DMTA_0 l__DMTA lg__M23 lg__M27 lg__M31 f_DMTA__1 f_DMTA__2 #> log_k_DMTA 0.0306 #> log_k_M23 -0.0234 -0.0032 #> log_k_M27 -0.0380 -0.0049 0.0041 #> log_k_M31 -0.0247 -0.0031 0.0022 0.0817 #> f_DMTA_ilr_1 -0.0046 -0.0006 0.0425 -0.0438 0.0319 #> f_DMTA_ilr_2 -0.0008 -0.0002 0.0216 -0.0267 -0.0890 -0.0349 #> f_DMTA_ilr_3 -0.1805 -0.0136 0.0434 0.0791 0.0390 -0.0061 0.0053 #> #> Random effects: #> est. lower upper #> SD.DMTA_0 3.5956 -0.8167 8.0078 #> SD.log_k_DMTA 0.6437 0.2784 1.0091 #> SD.log_k_M23 0.9929 0.3719 1.6139 #> SD.log_k_M27 0.4530 0.1522 0.7537 #> SD.log_k_M31 0.5773 0.1952 0.9595 #> SD.f_DMTA_ilr_1 0.4063 0.1505 0.6621 #> SD.f_DMTA_ilr_2 0.4800 0.1817 0.7783 #> SD.f_DMTA_ilr_3 0.3582 0.1350 0.5814 #> #> Variance model: #> est. lower upper #> a.1 0.9196 0.8307 1.0085 #> b.1 0.1377 0.1205 0.1549 #> #> Backtransformed parameters: #> est. lower upper #> DMTA_0 88.48621 84.112654 92.85977 #> k_DMTA 0.04730 0.028230 0.07926 #> k_M23 0.01729 0.007437 0.04020 #> k_M27 0.02110 0.014162 0.03144 #> k_M31 0.01872 0.011283 0.03107 #> f_DMTA_to_M23 0.14551 NA NA #> f_DMTA_to_M27 0.12169 NA NA #> f_DMTA_to_M31 0.11062 NA NA #> #> Resulting formation fractions: #> ff #> DMTA_M23 0.1455 #> DMTA_M27 0.1217 #> DMTA_M31 0.1106 #> DMTA_sink 0.6222 #> #> Estimated disappearance times: #> DT50 DT90 #> DMTA 14.65 48.68 #> M23 40.09 133.17 #> M27 32.85 109.11 #> M31 37.02 122.97 # As the confidence interval for the random effects of DMTA_0 # includes zero, we could try an alternative model without # such random effects # f_dmta_saem_tc_2 <- saem(dmta_sfo_sfo3p_tc, # covariance.model = diag(c(0, rep(1, 7)))) # saemix::plot(f_dmta_saem_tc_2$so, plot.type = \"convergence\") # This does not perform better judged by AIC and BIC # saemix::compare.saemix(f_dmta_saem_tc$so, f_dmta_saem_tc_2$so) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html","id":null,"dir":"Reference","previous_headings":"","what":"Synthetic data for hierarchical kinetic degradation models — ds_mixed","title":"Synthetic data for hierarchical kinetic degradation models — ds_mixed","text":"R code used create data object installed package 'dataset_generation' directory.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Synthetic data for hierarchical kinetic degradation models — ds_mixed","text":"","code":"# \\dontrun{ sfo_mmkin <- mmkin(\"SFO\", ds_sfo, quiet = TRUE, error_model = \"tc\", cores = 15) sfo_saem <- saem(sfo_mmkin, no_random_effect = \"parent_0\") plot(sfo_saem) # } # This is the code used to generate the datasets cat(readLines(system.file(\"dataset_generation/ds_mixed.R\", package = \"mkin\")), sep = \"\\n\") #> # Synthetic data for hierarchical kinetic models #> # Refactored version of the code previously in tests/testthat/setup_script.R #> # The number of datasets was 3 for FOMC, and 10 for HS in that script, now it #> # is always 15 for consistency #> #> library(mkin) # We use mkinmod and mkinpredict #> sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) #> n <- 15 #> log_sd <- 0.3 #> err_1 = list(const = 1, prop = 0.05) #> tc <- function(value) sigma_twocomp(value, err_1$const, err_1$prop) #> const <- function(value) 2 #> #> set.seed(123456) #> SFO <- mkinmod(parent = mkinsub(\"SFO\")) #> sfo_pop <- list(parent_0 = 100, k_parent = 0.03) #> sfo_parms <- as.matrix(data.frame( #> k_parent = rlnorm(n, log(sfo_pop$k_parent), log_sd))) #> set.seed(123456) #> ds_sfo <- lapply(1:n, function(i) { #> ds_mean <- mkinpredict(SFO, sfo_parms[i, ], #> c(parent = sfo_pop$parent_0), sampling_times) #> add_err(ds_mean, tc, n = 1)[[1]] #> }) #> attr(ds_sfo, \"pop\") <- sfo_pop #> attr(ds_sfo, \"parms\") <- sfo_parms #> #> set.seed(123456) #> FOMC <- mkinmod(parent = mkinsub(\"FOMC\")) #> fomc_pop <- list(parent_0 = 100, alpha = 2, beta = 8) #> fomc_parms <- as.matrix(data.frame( #> alpha = rlnorm(n, log(fomc_pop$alpha), 0.4), #> beta = rlnorm(n, log(fomc_pop$beta), 0.2))) #> set.seed(123456) #> ds_fomc <- lapply(1:n, function(i) { #> ds_mean <- mkinpredict(FOMC, fomc_parms[i, ], #> c(parent = fomc_pop$parent_0), sampling_times) #> add_err(ds_mean, tc, n = 1)[[1]] #> }) #> attr(ds_fomc, \"pop\") <- fomc_pop #> attr(ds_fomc, \"parms\") <- fomc_parms #> #> set.seed(123456) #> DFOP <- mkinmod(parent = mkinsub(\"DFOP\")) #> dfop_pop <- list(parent_0 = 100, k1 = 0.06, k2 = 0.015, g = 0.4) #> dfop_parms <- as.matrix(data.frame( #> k1 = rlnorm(n, log(dfop_pop$k1), log_sd), #> k2 = rlnorm(n, log(dfop_pop$k2), log_sd), #> g = plogis(rnorm(n, qlogis(dfop_pop$g), log_sd)))) #> set.seed(123456) #> ds_dfop <- lapply(1:n, function(i) { #> ds_mean <- mkinpredict(DFOP, dfop_parms[i, ], #> c(parent = dfop_pop$parent_0), sampling_times) #> add_err(ds_mean, tc, n = 1)[[1]] #> }) #> attr(ds_dfop, \"pop\") <- dfop_pop #> attr(ds_dfop, \"parms\") <- dfop_parms #> #> set.seed(123456) #> HS <- mkinmod(parent = mkinsub(\"HS\")) #> hs_pop <- list(parent_0 = 100, k1 = 0.08, k2 = 0.01, tb = 15) #> hs_parms <- as.matrix(data.frame( #> k1 = rlnorm(n, log(hs_pop$k1), log_sd), #> k2 = rlnorm(n, log(hs_pop$k2), log_sd), #> tb = rlnorm(n, log(hs_pop$tb), 0.1))) #> set.seed(123456) #> ds_hs <- lapply(1:n, function(i) { #> ds_mean <- mkinpredict(HS, hs_parms[i, ], #> c(parent = hs_pop$parent_0), sampling_times) #> add_err(ds_mean, const, n = 1)[[1]] #> }) #> attr(ds_hs, \"pop\") <- hs_pop #> attr(ds_hs, \"parms\") <- hs_parms #> #> set.seed(123456) #> DFOP_SFO <- mkinmod( #> parent = mkinsub(\"DFOP\", \"m1\"), #> m1 = mkinsub(\"SFO\"), #> quiet = TRUE) #> dfop_sfo_pop <- list(parent_0 = 100, #> k_m1 = 0.007, f_parent_to_m1 = 0.5, #> k1 = 0.1, k2 = 0.02, g = 0.5) #> dfop_sfo_parms <- as.matrix(data.frame( #> k1 = rlnorm(n, log(dfop_sfo_pop$k1), log_sd), #> k2 = rlnorm(n, log(dfop_sfo_pop$k2), log_sd), #> g = plogis(rnorm(n, qlogis(dfop_sfo_pop$g), log_sd)), #> f_parent_to_m1 = plogis(rnorm(n, #> qlogis(dfop_sfo_pop$f_parent_to_m1), log_sd)), #> k_m1 = rlnorm(n, log(dfop_sfo_pop$k_m1), log_sd))) #> ds_dfop_sfo_mean <- lapply(1:n, #> function(i) { #> mkinpredict(DFOP_SFO, dfop_sfo_parms[i, ], #> c(parent = dfop_sfo_pop$parent_0, m1 = 0), sampling_times) #> } #> ) #> set.seed(123456) #> ds_dfop_sfo <- lapply(ds_dfop_sfo_mean, function(ds) { #> add_err(ds, #> sdfunc = function(value) sqrt(err_1$const^2 + value^2 * err_1$prop^2), #> n = 1, secondary = \"m1\")[[1]] #> }) #> attr(ds_dfop_sfo, \"pop\") <- dfop_sfo_pop #> attr(ds_dfop_sfo, \"parms\") <- dfop_sfo_parms #> #> #save(ds_sfo, ds_fomc, ds_dfop, ds_hs, ds_dfop_sfo, file = \"data/ds_mixed.rda\", version = 2)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","title":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","text":"function calculates DT50 DT90 values well formation fractions kinetic models fitted mkinfit. SFORB model specified one parents metabolites, Eigenvalues returned. equivalent rate constants DFOP model, advantage SFORB model can also used metabolites.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","text":"","code":"endpoints(fit, covariates = NULL, covariate_quantile = 0.5)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","text":"fit object class mkinfit, nlme.mmkin saem.mmkin, another object list components mkinmod containing mkinmod degradation model, two numeric vectors, bparms.optim bparms.fixed, contain parameter values model. covariates Numeric vector covariate values variables covariate models object. given, overrides 'covariate_quantile'. covariate_quantile argument effect fitted object covariate models. , default show endpoints median covariate values (50th percentile).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","text":"list matrix dissipation times named distimes, , applicable, vector formation fractions named ff , SFORB model use, vector eigenvalues SFORB models, equivalent DFOP rate constants","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","text":"Additional DT50 values calculated FOMC DT90 k1 k2 HS DFOP, well Eigenvalues b1 b2 SFORB models","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","text":"function used internally summary.mkinfit, summary.nlme.mmkin summary.saem.mmkin.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to calculate endpoints for further use from kinetic models fitted with mkinfit — endpoints","text":"","code":"fit <- mkinfit(\"FOMC\", FOCUS_2006_C, quiet = TRUE) endpoints(fit) #> $distimes #> DT50 DT90 DT50back #> parent 1.785233 15.1479 4.559973 #> # \\dontrun{ fit_2 <- mkinfit(\"DFOP\", FOCUS_2006_C, quiet = TRUE) endpoints(fit_2) #> $distimes #> DT50 DT90 DT50back DT50_k1 DT50_k2 #> parent 1.886925 21.25106 6.397207 1.508293 38.83438 #> fit_3 <- mkinfit(\"SFORB\", FOCUS_2006_C, quiet = TRUE) endpoints(fit_3) #> $ff #> parent_free #> 1 #> #> $SFORB #> parent_b1 parent_b2 parent_g #> 0.4595574 0.0178488 0.8539454 #> #> $distimes #> DT50 DT90 DT50back DT50_parent_b1 DT50_parent_b2 #> parent 1.886925 21.25106 6.397208 1.508293 38.83438 #> # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/experimental_data_for_UBA.html","id":null,"dir":"Reference","previous_headings":"","what":"Experimental datasets used for development and testing of error models — experimental_data_for_UBA_2019","title":"Experimental datasets used for development and testing of error models — experimental_data_for_UBA_2019","text":"12 datasets extracted active substance evaluation dossiers published EFSA. Kinetic evaluations shown datasets intended illustrate advance error model specifications. fact data results shown imply license use context pesticide registrations, use data may constrained data protection regulations. Preprocessing data performed based recommendations FOCUS kinetics workgroup (FOCUS, 2014) described . Datasets 1 2 Renewal Assessment Report (RAR) imazamox (France, 2015, p. 15). setting values reported zero, LOQ 0.1 assumed. Metabolite residues reported day zero added parent compound residues. Datasets 3 4 Renewal Assessment Report (RAR) isofetamid (Belgium, 2014, p. 8) show data two different radiolabels. dataset 4, value given metabolite day zero sampling replicate B added parent compound, following respective FOCUS recommendation. Dataset 5 Renewal Assessment Report (RAR) ethofumesate (Austria, 2015, p. 16). Datasets 6 10 Renewal Assessment Report (RAR) glyphosate (Germany, 2013, pages 8, 28, 50, 51). initial sampling, residues given metabolite added parent value, following recommendation FOCUS kinetics workgroup. Dataset 11 Renewal Assessment Report (RAR) 2,4-D (Hellas, 2013, p. 644). Values reported zero set NA, exception day three sampling metabolite A2, set one half LOD reported 1% AR. Dataset 12 Renewal Assessment Report (RAR) thifensulfuron-methyl (United Kingdom, 2014, p. 81).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/experimental_data_for_UBA.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Experimental datasets used for development and testing of error models — experimental_data_for_UBA_2019","text":"","code":"experimental_data_for_UBA_2019"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/experimental_data_for_UBA.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Experimental datasets used for development and testing of error models — experimental_data_for_UBA_2019","text":"list containing twelve datasets R6 class defined mkinds, containing, among others, following components title name dataset, e.g. Soil 1 data data frame data form expected mkinfit","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/experimental_data_for_UBA.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Experimental datasets used for development and testing of error models — experimental_data_for_UBA_2019","text":"Austria (2015). Ethofumesate Renewal Assessment Report Volume 3 Annex B.8 () Belgium (2014). Isofetamid (IKF-5411) Draft Assessment Report Volume 3 Annex B.8 () France (2015). Imazamox Draft Renewal Assessment Report Volume 3 Annex B.8 () FOCUS (2014) “Generic guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, Version 1.1, 18 December 2014 http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics Germany (2013). Renewal Assessment Report Glyphosate Volume 3 Annex B.8: Environmental Fate Behaviour Hellas (2013). Renewal Assessment Report 2,4-D Volume 3 Annex B.8: Fate behaviour environment Ranke (2019) Documentation results obtained error model expertise written German Umweltbundesamt. United Kingdom (2014). Thifensulfuron-methyl - Annex B.8 (Volume 3) Report Proposed Decision United Kingdom made European Commission Regulation (EC) . 1141/2010 renewal active substance","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/experimental_data_for_UBA.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Experimental datasets used for development and testing of error models — experimental_data_for_UBA_2019","text":"","code":"# \\dontrun{ # Model definitions sfo_sfo <- mkinmod( parent = mkinsub(\"SFO\", to = \"A1\"), A1 = mkinsub(\"SFO\"), use_of_ff = \"max\" ) #> Temporary DLL for differentials generated and loaded dfop_sfo <- mkinmod( parent = mkinsub(\"DFOP\", to = \"A1\"), A1 = mkinsub(\"SFO\"), use_of_ff = \"max\" ) #> Temporary DLL for differentials generated and loaded sfo_sfo_sfo <- mkinmod( parent = mkinsub(\"SFO\", to = \"A1\"), A1 = mkinsub(\"SFO\", to = \"A2\"), A2 = mkinsub(\"SFO\"), use_of_ff = \"max\" ) #> Temporary DLL for differentials generated and loaded dfop_sfo_sfo <- mkinmod( parent = mkinsub(\"DFOP\", to = \"A1\"), A1 = mkinsub(\"SFO\", to = \"A2\"), A2 = mkinsub(\"SFO\"), use_of_ff = \"max\" ) #> Temporary DLL for differentials generated and loaded d_1_2 <- lapply(experimental_data_for_UBA_2019[1:2], function(x) x$data) names(d_1_2) <- paste(\"Soil\", 1:2) f_1_2_tc <- mmkin(list(\"DFOP-SFO-SFO\" = dfop_sfo_sfo), d_1_2, error_model = \"tc\") plot(f_1_2_tc, resplot = \"errmod\") # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html","id":null,"dir":"Reference","previous_headings":"","what":"Normalisation factors for aerobic soil degradation according to FOCUS guidance — f_time_norm_focus","title":"Normalisation factors for aerobic soil degradation according to FOCUS guidance — f_time_norm_focus","text":"Time step normalisation factors aerobic soil degradation described Appendix 8 FOCUS kinetics guidance (FOCUS 2014, p. 369).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Normalisation factors for aerobic soil degradation according to FOCUS guidance — f_time_norm_focus","text":"","code":"f_time_norm_focus(object, ...) # S3 method for class 'numeric' f_time_norm_focus( object, moisture = NA, field_moisture = NA, temperature = object, Q10 = 2.58, walker = 0.7, f_na = NA, ... ) # S3 method for class 'mkindsg' f_time_norm_focus( object, study_moisture_ref_source = c(\"auto\", \"meta\", \"focus\"), Q10 = 2.58, walker = 0.7, f_na = NA, ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Normalisation factors for aerobic soil degradation according to FOCUS guidance — f_time_norm_focus","text":"object object containing information used calculations ... Currently used moisture Numeric vector moisture contents \\% w/w field_moisture Numeric vector moisture contents field capacity (pF2) \\% w/w temperature Numeric vector temperatures °C Q10 Q10 value used temperature normalisation walker Walker exponent used moisture normalisation f_na factor use NA values. set NA, factors complete cases returned. study_moisture_ref_source Source reference value used calculate study moisture. 'auto', preference given reference moisture given meta information, otherwise focus soil moisture soil class used","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Normalisation factors for aerobic soil degradation according to FOCUS guidance — f_time_norm_focus","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics FOCUS (2014) “Generic guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, Version 1.1, 18 December 2014 http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Normalisation factors for aerobic soil degradation according to FOCUS guidance — f_time_norm_focus","text":"","code":"f_time_norm_focus(25, 20, 25) # 1.37, compare FOCUS 2014 p. 184 #> [1] 1.373956 D24_2014$meta #> study usda_soil_type study_moisture_ref_type #> Mississippi Cohen 1991 Silt loam <NA> #> Fayette Liu and Adelfinskaya 2011 Silt loam pF1 #> RefSol 03-G Liu and Adelfinskaya 2011 Loam pF1 #> Site E1 Liu and Adelfinskaya 2011 Loam pF1 #> Site I2 Liu and Adelfinskaya 2011 Loamy sand pF1 #> rel_moisture temperature #> Mississippi NA 25 #> Fayette 0.5 20 #> RefSol 03-G 0.5 20 #> Site E1 0.5 20 #> Site I2 0.5 20 # No moisture normalisation in the first dataset, so we use f_na = 1 to get # temperature only normalisation as in the EU evaluation f_time_norm_focus(D24_2014, study_moisture_ref_source = \"focus\", f_na = 1) #> $f_time_norm was (re)set to normalised values"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/focus_soil_moisture.html","id":null,"dir":"Reference","previous_headings":"","what":"FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar — focus_soil_moisture","title":"FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar — focus_soil_moisture","text":"value transcribed p. 36. table assumes field capacity corresponds pF2, MWHC pF 1 1/3 bar pF 2.5.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/focus_soil_moisture.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar — focus_soil_moisture","text":"","code":"focus_soil_moisture"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/focus_soil_moisture.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar — focus_soil_moisture","text":"matrix upper case USDA soil classes row names, water tension ('pF1', 'pF2', 'pF 2.5') column names","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/focus_soil_moisture.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar — focus_soil_moisture","text":"Anonymous (2014) Generic Guidance Tier 1 FOCUS Ground Water Assessment Version 2.2, May 2014 https://esdac.jrc.ec.europa.eu/projects/ground-water","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/focus_soil_moisture.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"FOCUS default values for soil moisture contents at field capacity, MWHC and 1/3 bar — focus_soil_moisture","text":"","code":"focus_soil_moisture #> pF1 pF2 pF2.5 #> Sand 24 12 7 #> Loamy sand 24 14 9 #> Sandy loam 27 19 15 #> Sandy clay loam 28 22 18 #> Clay loam 32 28 25 #> Loam 31 25 21 #> Silt loam 32 26 21 #> Silty clay loam 34 30 27 #> Silt 31 27 21 #> Sandy clay 41 35 31 #> Silty clay 44 40 36 #> Clay 53 48 43"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/get_deg_func.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve a degradation function from the mmkin namespace — get_deg_func","title":"Retrieve a degradation function from the mmkin namespace — get_deg_func","text":"Retrieve degradation function mmkin namespace","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/get_deg_func.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve a degradation function from the mmkin namespace — get_deg_func","text":"","code":"get_deg_func()"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/get_deg_func.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve a degradation function from the mmkin namespace — get_deg_func","text":"function likely previously assigned within nlme.mmkin","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/hierarchical_kinetics.html","id":null,"dir":"Reference","previous_headings":"","what":"Hierarchical kinetics template — hierarchical_kinetics","title":"Hierarchical kinetics template — hierarchical_kinetics","text":"R markdown format setting hierarchical kinetics based template provided mkin package. format based rmarkdown::pdf_document. Chunk options adapted. Echoing R code code chunks caching turned per default. character prepending output code chunks set empty string, code tidying , figure alignment defaults centering, positioning figures set \"H\", means figures move around document, stay user includes .","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/hierarchical_kinetics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hierarchical kinetics template — hierarchical_kinetics","text":"","code":"hierarchical_kinetics(..., keep_tex = FALSE)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/hierarchical_kinetics.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hierarchical kinetics template — hierarchical_kinetics","text":"... Arguments rmarkdown::pdf_document keep_tex Keep intermediate tex file used conversion PDF. Note argument control whether keep auxiliary files (e.g., .aux) generated LaTeX compiling .tex .pdf. keep files, may set options(tinytex.clean = FALSE).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/hierarchical_kinetics.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Hierarchical kinetics template — hierarchical_kinetics","text":"R Markdown output format pass render","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/hierarchical_kinetics.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Hierarchical kinetics template — hierarchical_kinetics","text":"latter feature (positioning figures \"H\") depends LaTeX package 'float'. addition, LaTeX package 'listing' used template showing model fit summaries Appendix. means LaTeX packages 'float' 'listing' need installed TeX distribution used. Windows, easiest way achieve (TeX distribution present ) install 'tinytex' R package, run 'tinytex::install_tinytex()' get basic tiny Tex distribution, run 'tinytex::tlmgr_install(c(\"float\", \"listing\"))'.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/hierarchical_kinetics.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Hierarchical kinetics template — hierarchical_kinetics","text":"","code":"# \\dontrun{ library(rmarkdown) # The following is now commented out after the relase of v1.2.3 for the generation # of online docs, as the command creates a directory and opens an editor #draft(\"example_analysis.rmd\", template = \"hierarchical_kinetics\", package = \"mkin\") # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html","id":null,"dir":"Reference","previous_headings":"","what":"Method to get the names of ill-defined parameters — illparms","title":"Method to get the names of ill-defined parameters — illparms","text":"method generalised nonlinear regression fits obtained mkinfit mmkin checks degradation parameters pass Wald test (degradation kinetics often simply called t-test) significant difference zero. test, parameterisation without parameter transformations used.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Method to get the names of ill-defined parameters — illparms","text":"","code":"illparms(object, ...) # S3 method for class 'mkinfit' illparms(object, conf.level = 0.95, ...) # S3 method for class 'illparms.mkinfit' print(x, ...) # S3 method for class 'mmkin' illparms(object, conf.level = 0.95, ...) # S3 method for class 'illparms.mmkin' print(x, ...) # S3 method for class 'saem.mmkin' illparms( object, conf.level = 0.95, random = TRUE, errmod = TRUE, slopes = TRUE, ... ) # S3 method for class 'illparms.saem.mmkin' print(x, ...) # S3 method for class 'mhmkin' illparms(object, conf.level = 0.95, random = TRUE, errmod = TRUE, ...) # S3 method for class 'illparms.mhmkin' print(x, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Method to get the names of ill-defined parameters — illparms","text":"object object investigate ... potential future extensions conf.level confidence level checking p values x object printed random hierarchical fits, random effects tested? errmod hierarchical fits, error model parameters tested? slopes hierarchical saem fits using saemix backend, slope parameters covariate model(starting 'beta_') tested?","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Method to get the names of ill-defined parameters — illparms","text":"mkinfit saem objects, character vector parameter names. mmkin mhmkin objects, matrix like object class 'illparms.mmkin' 'illparms.mhmkin'.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Method to get the names of ill-defined parameters — illparms","text":"method hierarchical model fits, also known nonlinear mixed-effects model fits obtained saem mhmkin checks confidence intervals random effects expressed standard deviations include zero, confidence intervals error model parameters include zero.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Method to get the names of ill-defined parameters — illparms","text":"return objects printing methods. single fits, printing output anything case ill-defined parameters found.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Method to get the names of ill-defined parameters — illparms","text":"","code":"fit <- mkinfit(\"FOMC\", FOCUS_2006_A, quiet = TRUE) #> Warning: Optimisation did not converge: #> false convergence (8) illparms(fit) #> [1] \"parent_0\" \"alpha\" \"beta\" \"sigma\" # \\dontrun{ fits <- mmkin( c(\"SFO\", \"FOMC\"), list(\"FOCUS A\" = FOCUS_2006_A, \"FOCUS C\" = FOCUS_2006_C), quiet = TRUE) illparms(fits) #> dataset #> model FOCUS A FOCUS C #> SFO #> FOMC parent_0, alpha, beta, sigma # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to perform isometric log-ratio transformation — ilr","title":"Function to perform isometric log-ratio transformation — ilr","text":"implementation special case class isometric log-ratio transformations.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to perform isometric log-ratio transformation — ilr","text":"","code":"ilr(x) invilr(x)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to perform isometric log-ratio transformation — ilr","text":"x numeric vector. Naturally, forward transformation sensible vectors elements greater zero.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to perform isometric log-ratio transformation — ilr","text":"result forward backward transformation. returned components always sum 1 case inverse log-ratio transformation.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Function to perform isometric log-ratio transformation — ilr","text":"Peter Filzmoser, Karel Hron (2008) Outlier Detection Compositional Data Using Robust Methods. Math Geosci 40 233-248","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to perform isometric log-ratio transformation — ilr","text":"René Lehmann Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to perform isometric log-ratio transformation — ilr","text":"","code":"# Order matters ilr(c(0.1, 1, 10)) #> [1] -1.628174 -2.820079 ilr(c(10, 1, 0.1)) #> [1] 1.628174 2.820079 # Equal entries give ilr transformations with zeros as elements ilr(c(3, 3, 3)) #> [1] 0 0 # Almost equal entries give small numbers ilr(c(0.3, 0.4, 0.3)) #> [1] -0.2034219 0.1174457 # Only the ratio between the numbers counts, not their sum invilr(ilr(c(0.7, 0.29, 0.01))) #> [1] 0.70 0.29 0.01 invilr(ilr(2.1 * c(0.7, 0.29, 0.01))) #> [1] 0.70 0.29 0.01 # Inverse transformation of larger numbers gives unequal elements invilr(-10) #> [1] 7.213536e-07 9.999993e-01 invilr(c(-10, 0)) #> [1] 7.207415e-07 9.991507e-01 8.486044e-04 # The sum of the elements of the inverse ilr is 1 sum(invilr(c(-10, 0))) #> [1] 1 # This is why we do not need all elements of the inverse transformation to go back: a <- c(0.1, 0.3, 0.5) b <- invilr(a) length(b) # Four elements #> [1] 4 ilr(c(b[1:3], 1 - sum(b[1:3]))) # Gives c(0.1, 0.3, 0.5) #> [1] 0.1 0.3 0.5"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/intervals.saem.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Confidence intervals for parameters in saem.mmkin objects — intervals.saem.mmkin","title":"Confidence intervals for parameters in saem.mmkin objects — intervals.saem.mmkin","text":"Confidence intervals parameters saem.mmkin objects","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/intervals.saem.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Confidence intervals for parameters in saem.mmkin objects — intervals.saem.mmkin","text":"","code":"# S3 method for class 'saem.mmkin' intervals(object, level = 0.95, backtransform = TRUE, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/intervals.saem.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Confidence intervals for parameters in saem.mmkin objects — intervals.saem.mmkin","text":"object fitted saem.mmkin object level confidence level. Must default 0.95 available saemix object backtransform case model fitted mkin transformations, backtransform parameters one one correlation transformed backtransformed parameters exists? ... compatibility generic method","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/intervals.saem.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Confidence intervals for parameters in saem.mmkin objects — intervals.saem.mmkin","text":"object 'intervals.saem.mmkin' 'intervals.lme' class attribute","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/llhist.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot the distribution of log likelihoods from multistart objects — llhist","title":"Plot the distribution of log likelihoods from multistart objects — llhist","text":"Produces histogram log-likelihoods. addition, likelihood original fit shown red vertical line.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/llhist.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot the distribution of log likelihoods from multistart objects — llhist","text":"","code":"llhist(object, breaks = \"Sturges\", lpos = \"topleft\", main = \"\", ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/llhist.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot the distribution of log likelihoods from multistart objects — llhist","text":"object multistart object breaks Passed hist lpos Positioning legend. main Title plot ... Passed hist","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/loftest.html","id":null,"dir":"Reference","previous_headings":"","what":"Lack-of-fit test for models fitted to data with replicates — loftest","title":"Lack-of-fit test for models fitted to data with replicates — loftest","text":"generic function method currently defined mkinfit objects. fits anova model data contained object compares likelihoods using likelihood ratio test lrtest.default lmtest package.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/loftest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lack-of-fit test for models fitted to data with replicates — loftest","text":"","code":"loftest(object, ...) # S3 method for class 'mkinfit' loftest(object, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/loftest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lack-of-fit test for models fitted to data with replicates — loftest","text":"object model object defined loftest method ... used","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/loftest.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Lack-of-fit test for models fitted to data with replicates — loftest","text":"anova model interpreted simplest form mkinfit model, assuming constant variance means, enforcing structure means, one model parameter every mean replicate samples.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/loftest.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Lack-of-fit test for models fitted to data with replicates — loftest","text":"","code":"# \\dontrun{ test_data <- subset(synthetic_data_for_UBA_2014[[12]]$data, name == \"parent\") sfo_fit <- mkinfit(\"SFO\", test_data, quiet = TRUE) plot_res(sfo_fit) # We see a clear pattern in the residuals loftest(sfo_fit) # We have a clear lack of fit #> Likelihood ratio test #> #> Model 1: ANOVA with error model const #> Model 2: SFO with error model const #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 10 -40.710 #> 2 3 -63.954 -7 46.487 7.027e-08 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # We try a different model (the one that was used to generate the data) dfop_fit <- mkinfit(\"DFOP\", test_data, quiet = TRUE) plot_res(dfop_fit) # We don't see systematic deviations, but heteroscedastic residuals # therefore we should consider adapting the error model, although we have loftest(dfop_fit) # no lack of fit #> Likelihood ratio test #> #> Model 1: ANOVA with error model const #> Model 2: DFOP with error model const #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 10 -40.710 #> 2 5 -42.453 -5 3.485 0.6257 # # This is the anova model used internally for the comparison test_data_anova <- test_data test_data_anova$time <- as.factor(test_data_anova$time) anova_fit <- lm(value ~ time, data = test_data_anova) summary(anova_fit) #> #> Call: #> lm(formula = value ~ time, data = test_data_anova) #> #> Residuals: #> Min 1Q Median 3Q Max #> -6.1000 -0.5625 0.0000 0.5625 6.1000 #> #> Coefficients: #> Estimate Std. Error t value Pr(>|t|) #> (Intercept) 103.150 2.323 44.409 7.44e-12 *** #> time1 -19.950 3.285 -6.073 0.000185 *** #> time3 -50.800 3.285 -15.465 8.65e-08 *** #> time7 -68.500 3.285 -20.854 6.28e-09 *** #> time14 -79.750 3.285 -24.278 1.63e-09 *** #> time28 -86.000 3.285 -26.181 8.35e-10 *** #> time60 -94.900 3.285 -28.891 3.48e-10 *** #> time90 -98.500 3.285 -29.986 2.49e-10 *** #> time120 -100.450 3.285 -30.580 2.09e-10 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 #> #> Residual standard error: 3.285 on 9 degrees of freedom #> Multiple R-squared: 0.9953,\tAdjusted R-squared: 0.9912 #> F-statistic: 240.5 on 8 and 9 DF, p-value: 1.417e-09 #> logLik(anova_fit) # We get the same likelihood and degrees of freedom #> 'log Lik.' -40.71015 (df=10) # test_data_2 <- synthetic_data_for_UBA_2014[[12]]$data m_synth_SFO_lin <- mkinmod(parent = list(type = \"SFO\", to = \"M1\"), M1 = list(type = \"SFO\", to = \"M2\"), M2 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded sfo_lin_fit <- mkinfit(m_synth_SFO_lin, test_data_2, quiet = TRUE) plot_res(sfo_lin_fit) # not a good model, we try parallel formation loftest(sfo_lin_fit) #> Likelihood ratio test #> #> Model 1: ANOVA with error model const #> Model 2: m_synth_SFO_lin with error model const and fixed parameter(s) M1_0, M2_0 #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 28 -93.606 #> 2 7 -171.927 -21 156.64 < 2.2e-16 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # m_synth_SFO_par <- mkinmod(parent = list(type = \"SFO\", to = c(\"M1\", \"M2\")), M1 = list(type = \"SFO\"), M2 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded sfo_par_fit <- mkinfit(m_synth_SFO_par, test_data_2, quiet = TRUE) plot_res(sfo_par_fit) # much better for metabolites loftest(sfo_par_fit) #> Likelihood ratio test #> #> Model 1: ANOVA with error model const #> Model 2: m_synth_SFO_par with error model const and fixed parameter(s) M1_0, M2_0 #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 28 -93.606 #> 2 7 -156.331 -21 125.45 < 2.2e-16 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # m_synth_DFOP_par <- mkinmod(parent = list(type = \"DFOP\", to = c(\"M1\", \"M2\")), M1 = list(type = \"SFO\"), M2 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded dfop_par_fit <- mkinfit(m_synth_DFOP_par, test_data_2, quiet = TRUE) plot_res(dfop_par_fit) # No visual lack of fit loftest(dfop_par_fit) # no lack of fit found by the test #> Likelihood ratio test #> #> Model 1: ANOVA with error model const #> Model 2: m_synth_DFOP_par with error model const and fixed parameter(s) M1_0, M2_0 #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 28 -93.606 #> 2 9 -102.763 -19 18.313 0.5016 # # The anova model used for comparison in the case of transformation products test_data_anova_2 <- dfop_par_fit$data test_data_anova_2$variable <- as.factor(test_data_anova_2$variable) test_data_anova_2$time <- as.factor(test_data_anova_2$time) anova_fit_2 <- lm(observed ~ time:variable - 1, data = test_data_anova_2) summary(anova_fit_2) #> #> Call: #> lm(formula = observed ~ time:variable - 1, data = test_data_anova_2) #> #> Residuals: #> Min 1Q Median 3Q Max #> -6.1000 -0.5875 0.0000 0.5875 6.1000 #> #> Coefficients: (2 not defined because of singularities) #> Estimate Std. Error t value Pr(>|t|) #> time0:variableparent 103.150 1.573 65.562 < 2e-16 *** #> time1:variableparent 83.200 1.573 52.882 < 2e-16 *** #> time3:variableparent 52.350 1.573 33.274 < 2e-16 *** #> time7:variableparent 34.650 1.573 22.024 < 2e-16 *** #> time14:variableparent 23.400 1.573 14.873 6.35e-14 *** #> time28:variableparent 17.150 1.573 10.901 5.47e-11 *** #> time60:variableparent 8.250 1.573 5.244 1.99e-05 *** #> time90:variableparent 4.650 1.573 2.956 0.006717 ** #> time120:variableparent 2.700 1.573 1.716 0.098507 . #> time0:variableM1 NA NA NA NA #> time1:variableM1 11.850 1.573 7.532 6.93e-08 *** #> time3:variableM1 22.700 1.573 14.428 1.26e-13 *** #> time7:variableM1 33.050 1.573 21.007 < 2e-16 *** #> time14:variableM1 31.250 1.573 19.863 < 2e-16 *** #> time28:variableM1 18.900 1.573 12.013 7.02e-12 *** #> time60:variableM1 7.550 1.573 4.799 6.28e-05 *** #> time90:variableM1 3.850 1.573 2.447 0.021772 * #> time120:variableM1 2.050 1.573 1.303 0.204454 #> time0:variableM2 NA NA NA NA #> time1:variableM2 6.700 1.573 4.259 0.000254 *** #> time3:variableM2 16.750 1.573 10.646 8.93e-11 *** #> time7:variableM2 25.800 1.573 16.399 6.89e-15 *** #> time14:variableM2 28.600 1.573 18.178 6.35e-16 *** #> time28:variableM2 25.400 1.573 16.144 9.85e-15 *** #> time60:variableM2 21.600 1.573 13.729 3.81e-13 *** #> time90:variableM2 17.800 1.573 11.314 2.51e-11 *** #> time120:variableM2 14.100 1.573 8.962 2.79e-09 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 #> #> Residual standard error: 2.225 on 25 degrees of freedom #> Multiple R-squared: 0.9979,\tAdjusted R-squared: 0.9957 #> F-statistic: 469.2 on 25 and 25 DF, p-value: < 2.2e-16 #> # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit","title":"Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit","text":"function returns product likelihood densities observed value, calculated part fitting procedure using dnorm, .e. assuming normal distribution, means predicted degradation model, standard deviations predicted error model.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit","text":"","code":"# S3 method for class 'mkinfit' logLik(object, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit","text":"object object class mkinfit. ... compatibility generic method","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.mkinfit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit","text":"object class logLik number estimated parameters (degradation model parameters plus variance model parameters) attribute.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.mkinfit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit","text":"total number estimated parameters returned value likelihood calculated sum fitted degradation model parameters fitted error model parameters.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.mkinfit.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.mkinfit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculated the log-likelihood of a fitted mkinfit object — logLik.mkinfit","text":"","code":"# \\dontrun{ sfo_sfo <- mkinmod( parent = mkinsub(\"SFO\", to = \"m1\"), m1 = mkinsub(\"SFO\") ) #> Temporary DLL for differentials generated and loaded d_t <- subset(FOCUS_2006_D, value != 0) f_nw <- mkinfit(sfo_sfo, d_t, quiet = TRUE) # no weighting (weights are unity) f_obs <- update(f_nw, error_model = \"obs\") f_tc <- update(f_nw, error_model = \"tc\") AIC(f_nw, f_obs, f_tc) #> df AIC #> f_nw 5 204.4486 #> f_obs 6 205.8727 #> f_tc 6 141.9656 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.saem.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"logLik method for saem.mmkin objects — logLik.saem.mmkin","title":"logLik method for saem.mmkin objects — logLik.saem.mmkin","text":"logLik method saem.mmkin objects","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.saem.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"logLik method for saem.mmkin objects — logLik.saem.mmkin","text":"","code":"# S3 method for class 'saem.mmkin' logLik(object, ..., method = c(\"is\", \"lin\", \"gq\"))"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logLik.saem.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"logLik method for saem.mmkin objects — logLik.saem.mmkin","text":"object fitted saem.mmkin object ... Passed saemix::logLik.SaemixObject method Passed saemix::logLik.SaemixObject","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logistic.solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Logistic kinetics — logistic.solution","title":"Logistic kinetics — logistic.solution","text":"Function describing exponential decline defined starting value, increasing rate constant, supposedly caused microbial growth","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logistic.solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logistic kinetics — logistic.solution","text":"","code":"logistic.solution(t, parent_0, kmax, k0, r)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logistic.solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logistic kinetics — logistic.solution","text":"t Time. parent_0 Starting value response variable time zero. kmax Maximum rate constant. k0 Minimum rate constant effective time zero. r Growth rate increase rate constant.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logistic.solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logistic kinetics — logistic.solution","text":"value response variable time t.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logistic.solution.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Logistic kinetics — logistic.solution","text":"solution logistic model reduces SFO.solution k0 equal kmax.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logistic.solution.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Logistic kinetics — logistic.solution","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics FOCUS (2014) “Generic guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, Version 1.1, 18 December 2014 http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/logistic.solution.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logistic kinetics — logistic.solution","text":"","code":"# Reproduce the plot on page 57 of FOCUS (2014) plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.2), from = 0, to = 100, ylim = c(0, 100), xlab = \"Time\", ylab = \"Residue\") plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.4), from = 0, to = 100, add = TRUE, lty = 2, col = 2) plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.8), from = 0, to = 100, add = TRUE, lty = 3, col = 3) plot(function(x) logistic.solution(x, 100, 0.08, 0.001, 0.2), from = 0, to = 100, add = TRUE, lty = 4, col = 4) plot(function(x) logistic.solution(x, 100, 0.08, 0.08, 0.2), from = 0, to = 100, add = TRUE, lty = 5, col = 5) legend(\"topright\", inset = 0.05, legend = paste0(\"k0 = \", c(0.0001, 0.0001, 0.0001, 0.001, 0.08), \", r = \", c(0.2, 0.4, 0.8, 0.2, 0.2)), lty = 1:5, col = 1:5) # Fit with synthetic data logistic <- mkinmod(parent = mkinsub(\"logistic\")) sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) parms_logistic <- c(kmax = 0.08, k0 = 0.0001, r = 0.2) d_logistic <- mkinpredict(logistic, parms_logistic, c(parent = 100), sampling_times) d_2_1 <- add_err(d_logistic, sdfunc = function(x) sigma_twocomp(x, 0.5, 0.07), n = 1, reps = 2, digits = 5, LOD = 0.1, seed = 123456)[[1]] m <- mkinfit(\"logistic\", d_2_1, quiet = TRUE) plot_sep(m) summary(m)$bpar #> Estimate se_notrans t value Pr(>t) Lower #> parent_0 1.057896e+02 1.9023449604 55.610120 3.768360e-16 1.016451e+02 #> kmax 6.398190e-02 0.0143201030 4.467978 3.841828e-04 3.929235e-02 #> k0 1.612775e-04 0.0005866813 0.274898 3.940351e-01 5.846688e-08 #> r 2.263946e-01 0.1718110664 1.317695 1.061043e-01 4.335843e-02 #> sigma 5.332935e+00 0.9145907310 5.830952 4.036926e-05 3.340213e+00 #> Upper #> parent_0 109.9341588 #> kmax 0.1041853 #> k0 0.4448749 #> r 1.1821120 #> sigma 7.3256566 endpoints(m)$distimes #> DT50 DT90 DT50_k0 DT50_kmax #> parent 36.86533 62.41511 4297.853 10.83349"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/lrtest.mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Likelihood ratio test for mkinfit models — lrtest.mkinfit","title":"Likelihood ratio test for mkinfit models — lrtest.mkinfit","text":"Compare two mkinfit models based likelihood. two fitted mkinfit objects given arguments, checked fitted data. responsibility user make sure models nested, .e. one less degrees freedom can expressed fixing parameters .","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/lrtest.mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Likelihood ratio test for mkinfit models — lrtest.mkinfit","text":"","code":"# S3 method for class 'mkinfit' lrtest(object, object_2 = NULL, ...) # S3 method for class 'mmkin' lrtest(object, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/lrtest.mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Likelihood ratio test for mkinfit models — lrtest.mkinfit","text":"object mkinfit object, mmkin column object containing two fits data. object_2 Optionally, another mkinfit object fitted data. ... Argument mkinfit, passed update.mkinfit creating alternative fitted object.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/lrtest.mkinfit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Likelihood ratio test for mkinfit models — lrtest.mkinfit","text":"Alternatively, argument mkinfit can given passed update.mkinfit obtain alternative model. comparison made lrtest.default method lmtest package. model higher number fitted parameters (alternative hypothesis) listed first, model lower number fitted parameters (null hypothesis).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/lrtest.mkinfit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Likelihood ratio test for mkinfit models — lrtest.mkinfit","text":"","code":"# \\dontrun{ test_data <- subset(synthetic_data_for_UBA_2014[[12]]$data, name == \"parent\") sfo_fit <- mkinfit(\"SFO\", test_data, quiet = TRUE) dfop_fit <- mkinfit(\"DFOP\", test_data, quiet = TRUE) lrtest(dfop_fit, sfo_fit) #> Likelihood ratio test #> #> Model 1: DFOP with error model const #> Model 2: SFO with error model const #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 5 -42.453 #> 2 3 -63.954 -2 43.002 4.594e-10 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 lrtest(sfo_fit, dfop_fit) #> Likelihood ratio test #> #> Model 1: DFOP with error model const #> Model 2: SFO with error model const #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 5 -42.453 #> 2 3 -63.954 -2 43.002 4.594e-10 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # The following two examples are commented out as they fail during # generation of the static help pages by pkgdown #lrtest(dfop_fit, error_model = \"tc\") #lrtest(dfop_fit, fixed_parms = c(k2 = 0)) # However, this equivalent syntax also works for static help pages lrtest(dfop_fit, update(dfop_fit, error_model = \"tc\")) #> Likelihood ratio test #> #> Model 1: DFOP with error model tc #> Model 2: DFOP with error model const #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 6 -34.587 #> 2 5 -42.453 -1 15.731 7.302e-05 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 lrtest(dfop_fit, update(dfop_fit, fixed_parms = c(k2 = 0))) #> Likelihood ratio test #> #> Model 1: DFOP with error model const #> Model 2: DFOP with error model const and fixed parameter(s) k2 #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 5 -42.453 #> 2 4 -57.340 -1 29.776 4.851e-08 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent","title":"Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent","text":"function calculates maximum moving window time weighted average concentrations (TWAs) kinetic models fitted mkinfit. Currently, calculations parent implemented SFO, FOMC, DFOP HS models, using analytical formulas given PEC soil section FOCUS guidance.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent","text":"","code":"max_twa_parent(fit, windows) max_twa_sfo(M0 = 1, k, t) max_twa_fomc(M0 = 1, alpha, beta, t) max_twa_dfop(M0 = 1, k1, k2, g, t) max_twa_hs(M0 = 1, k1, k2, tb, t)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent","text":"fit object class mkinfit. windows width time windows TWAs calculated. M0 initial concentration maximum time weighted average decline curve calculated. default use value 1, means relative maximum time weighted average factor (f_twa) calculated. k rate constant case SFO kinetics. t width time window. alpha Parameter FOMC model. beta Parameter FOMC model. k1 first rate constant DFOP HS kinetics. k2 second rate constant DFOP HS kinetics. g Parameter DFOP model. tb Parameter HS model.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent","text":"max_twa_parent, numeric vector, named using windows argument. functions, numeric vector length one (also known 'number').","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to calculate maximum time weighted average concentrations from kinetic models fitted with mkinfit — max_twa_parent","text":"","code":"fit <- mkinfit(\"FOMC\", FOCUS_2006_C, quiet = TRUE) max_twa_parent(fit, c(7, 21)) #> 7 21 #> 34.71343 18.22124"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mccall81_245T.html","id":null,"dir":"Reference","previous_headings":"","what":"Datasets on aerobic soil metabolism of 2,4,5-T in six soils — mccall81_245T","title":"Datasets on aerobic soil metabolism of 2,4,5-T in six soils — mccall81_245T","text":"Time course 2,4,5-trichlorophenoxyacetic acid, corresponding 2,4,5-trichlorophenol 2,4,5-trichloroanisole recovered diethylether extracts.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mccall81_245T.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Datasets on aerobic soil metabolism of 2,4,5-T in six soils — mccall81_245T","text":"","code":"mccall81_245T"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mccall81_245T.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Datasets on aerobic soil metabolism of 2,4,5-T in six soils — mccall81_245T","text":"dataframe containing following variables. name name compound observed. Note T245 used acronym 2,4,5-T. T245 legitimate object name R, necessary specifying models using mkinmod. time numeric vector containing sampling times days treatment value numeric vector containing concentrations percent applied radioactivity soil factor containing name soil","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mccall81_245T.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Datasets on aerobic soil metabolism of 2,4,5-T in six soils — mccall81_245T","text":"McCall P, Vrona SA, Kelley SS (1981) Fate uniformly carbon-14 ring labelled 2,4,5-Trichlorophenoxyacetic acid 2,4-dichlorophenoxyacetic acid. J Agric Chem 29, 100-107 doi:10.1021/jf00103a026","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mccall81_245T.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Datasets on aerobic soil metabolism of 2,4,5-T in six soils — mccall81_245T","text":"","code":"SFO_SFO_SFO <- mkinmod(T245 = list(type = \"SFO\", to = \"phenol\"), phenol = list(type = \"SFO\", to = \"anisole\"), anisole = list(type = \"SFO\")) #> Temporary DLL for differentials generated and loaded # \\dontrun{ fit.1 <- mkinfit(SFO_SFO_SFO, subset(mccall81_245T, soil == \"Commerce\"), quiet = TRUE) #> Warning: Observations with value of zero were removed from the data summary(fit.1)$bpar #> Estimate se_notrans t value Pr(>t) #> T245_0 1.038550e+02 2.1847074943 47.537272 4.472189e-18 #> k_T245 4.337042e-02 0.0018983965 22.845818 2.276911e-13 #> k_phenol 4.050581e-01 0.2986993738 1.356073 9.756990e-02 #> k_anisole 6.678742e-03 0.0008021439 8.326114 2.623177e-07 #> f_T245_to_phenol 6.227599e-01 0.3985340721 1.562626 6.949414e-02 #> f_phenol_to_anisole 1.000000e+00 0.6718440131 1.488441 7.867790e-02 #> sigma 2.514628e+00 0.4907558973 5.123989 6.233159e-05 #> Lower Upper #> T245_0 99.246061490 1.084640e+02 #> k_T245 0.039631621 4.746194e-02 #> k_phenol 0.218013879 7.525762e-01 #> k_anisole 0.005370739 8.305299e-03 #> f_T245_to_phenol 0.547559080 6.924813e-01 #> f_phenol_to_anisole 0.000000000 1.000000e+00 #> sigma 1.706607296 3.322649e+00 endpoints(fit.1) #> $ff #> T245_phenol T245_sink phenol_anisole phenol_sink #> 6.227599e-01 3.772401e-01 1.000000e+00 3.072478e-10 #> #> $distimes #> DT50 DT90 #> T245 15.982025 53.09114 #> phenol 1.711229 5.68458 #> anisole 103.784093 344.76329 #> # formation fraction from phenol to anisol is practically 1. As we cannot # fix formation fractions when using the ilr transformation, we can turn of # the sink in the model generation SFO_SFO_SFO_2 <- mkinmod(T245 = list(type = \"SFO\", to = \"phenol\"), phenol = list(type = \"SFO\", to = \"anisole\", sink = FALSE), anisole = list(type = \"SFO\")) #> Temporary DLL for differentials generated and loaded fit.2 <- mkinfit(SFO_SFO_SFO_2, subset(mccall81_245T, soil == \"Commerce\"), quiet = TRUE) #> Warning: Observations with value of zero were removed from the data summary(fit.2)$bpar #> Estimate se_notrans t value Pr(>t) Lower #> T245_0 1.038550e+02 2.1623653059 48.028439 4.993108e-19 99.271020328 #> k_T245 4.337042e-02 0.0018343666 23.643268 3.573556e-14 0.039650976 #> k_phenol 4.050582e-01 0.1177237651 3.440752 1.679255e-03 0.218746589 #> k_anisole 6.678742e-03 0.0006829745 9.778903 1.872894e-08 0.005377083 #> f_T245_to_phenol 6.227599e-01 0.0342197873 18.198824 2.039411e-12 0.547975634 #> sigma 2.514628e+00 0.3790944250 6.633250 2.875782e-06 1.710983655 #> Upper #> T245_0 108.43904079 #> k_T245 0.04743877 #> k_phenol 0.75005593 #> k_anisole 0.00829550 #> f_T245_to_phenol 0.69212307 #> sigma 3.31827222 endpoints(fit.1) #> $ff #> T245_phenol T245_sink phenol_anisole phenol_sink #> 6.227599e-01 3.772401e-01 1.000000e+00 3.072478e-10 #> #> $distimes #> DT50 DT90 #> T245 15.982025 53.09114 #> phenol 1.711229 5.68458 #> anisole 103.784093 344.76329 #> plot_sep(fit.2) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mean_degparms.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate mean degradation parameters for an mmkin row object — mean_degparms","title":"Calculate mean degradation parameters for an mmkin row object — mean_degparms","text":"Calculate mean degradation parameters mmkin row object","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mean_degparms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate mean degradation parameters for an mmkin row object — mean_degparms","text":"","code":"mean_degparms( object, random = FALSE, test_log_parms = FALSE, conf.level = 0.6, default_log_parms = NA )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mean_degparms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate mean degradation parameters for an mmkin row object — mean_degparms","text":"object mmkin row object containing several fits model different datasets random list fixed random effects returned? test_log_parms TRUE, log parameters considered mean calculations untransformed counterparts (likely rate constants) pass t-test significant difference zero. conf.level Possibility adjust required confidence level parameter tested requested 'test_log_parms'. default_log_parms set numeric value, used default value tested log parameters failed t-test.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mean_degparms.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate mean degradation parameters for an mmkin row object — mean_degparms","text":"random FALSE (default), named vector containing mean values fitted degradation model parameters. random TRUE, list fixed random effects, format required start argument nlme case single grouping variable ds.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin","title":"Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin","text":"name methods expresses (multiple) hierarchichal (also known multilevel) multicompartment kinetic models fitted. kinetic models nonlinear, can use various nonlinear mixed-effects model fitting functions.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin","text":"","code":"mhmkin(objects, ...) # S3 method for class 'mmkin' mhmkin(objects, ...) # S3 method for class 'list' mhmkin( objects, backend = \"saemix\", algorithm = \"saem\", no_random_effect = NULL, ..., cores = if (Sys.info()[\"sysname\"] == \"Windows\") 1 else parallel::detectCores(), cluster = NULL ) # S3 method for class 'mhmkin' x[i, j, ..., drop = FALSE] # S3 method for class 'mhmkin' print(x, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin","text":"objects list mmkin objects containing fits degradation models data, using different error models. Alternatively, single mmkin object containing fits several degradation models data ... arguments passed nonlinear mixed-effects model fitting function. backend backend used fitting. Currently, saemix supported algorithm algorithm used fitting (currently used) no_random_effect Default NULL passed saem. character vector supplied, passed calls saem, exclude random effects matching parameters. Alternatively, list character vectors object class illparms.mhmkin can specified. dimensions return object current call , .e. number rows must match number degradation models mmkin object(s), number columns must match number error models used mmkin object(s). cores number cores used multicore processing. used cluster argument NULL. Windows machines, cores > 1 supported, need use cluster argument use multiple logical processors. Per default, cores detected parallel::detectCores() used, except Windows default 1. cluster cluster returned makeCluster used parallel execution. x mhmkin object. Row index selecting fits specific models j Column index selecting fits specific datasets drop FALSE, method always returns mhmkin object, otherwise either list fit objects single fit object.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin","text":"two-dimensional array fit objects /try-errors can indexed using degradation model names first index (row index) error model names second index (column index), class attribute 'mhmkin'. object inheriting mhmkin.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Fit nonlinear mixed-effects models built from one or more kinetic degradation models and one or more error models — mhmkin","text":"","code":"# \\dontrun{ # We start with separate evaluations of all the first six datasets with two # degradation models and two error models f_sep_const <- mmkin(c(\"SFO\", \"FOMC\"), ds_fomc[1:6], cores = 2, quiet = TRUE) f_sep_tc <- update(f_sep_const, error_model = \"tc\") # The mhmkin function sets up hierarchical degradation models aka # nonlinear mixed-effects models for all four combinations, specifying # uncorrelated random effects for all degradation parameters f_saem_1 <- mhmkin(list(f_sep_const, f_sep_tc), cores = 2) status(f_saem_1) #> error #> degradation const tc #> SFO OK OK #> FOMC OK OK #> #> OK: Fit terminated successfully # The 'illparms' function shows that in all hierarchical fits, at least # one random effect is ill-defined (the confidence interval for the # random effect expressed as standard deviation includes zero) illparms(f_saem_1) #> error #> degradation const tc #> SFO sd(parent_0) sd(parent_0) #> FOMC sd(log_beta) sd(parent_0), sd(log_beta) # Therefore we repeat the fits, excluding the ill-defined random effects f_saem_2 <- update(f_saem_1, no_random_effect = illparms(f_saem_1)) status(f_saem_2) #> error #> degradation const tc #> SFO OK OK #> FOMC OK OK #> #> OK: Fit terminated successfully illparms(f_saem_2) #> error #> degradation const tc #> SFO #> FOMC # Model comparisons show that FOMC with two-component error is preferable, # and confirms our reduction of the default parameter model anova(f_saem_1) #> Data: 95 observations of 1 variable(s) grouped in 6 datasets #> #> npar AIC BIC Lik #> SFO const 5 574.40 573.35 -282.20 #> SFO tc 6 543.72 542.47 -265.86 #> FOMC const 7 489.67 488.22 -237.84 #> FOMC tc 8 406.11 404.44 -195.05 anova(f_saem_2) #> Data: 95 observations of 1 variable(s) grouped in 6 datasets #> #> npar AIC BIC Lik #> SFO const 4 572.22 571.39 -282.11 #> SFO tc 5 541.63 540.59 -265.81 #> FOMC const 6 487.38 486.13 -237.69 #> FOMC tc 6 402.12 400.88 -195.06 # The convergence plot for the selected model looks fine saemix::plot(f_saem_2[[\"FOMC\", \"tc\"]]$so, plot.type = \"convergence\") # The plot of predictions versus data shows that we have a pretty data-rich # situation with homogeneous distribution of residuals, because we used the # same degradation model, error model and parameter distribution model that # was used in the data generation. plot(f_saem_2[[\"FOMC\", \"tc\"]]) # We can specify the same parameter model reductions manually no_ranef <- list(\"parent_0\", \"log_beta\", \"parent_0\", c(\"parent_0\", \"log_beta\")) dim(no_ranef) <- c(2, 2) f_saem_2m <- update(f_saem_1, no_random_effect = no_ranef) anova(f_saem_2m) #> Data: 95 observations of 1 variable(s) grouped in 6 datasets #> #> npar AIC BIC Lik #> SFO const 4 572.22 571.39 -282.11 #> SFO tc 5 541.63 540.59 -265.81 #> FOMC const 6 487.38 486.13 -237.69 #> FOMC tc 6 402.12 400.88 -195.06 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a mixed effects model from an mmkin row object — mixed","title":"Create a mixed effects model from an mmkin row object — mixed","text":"Create mixed effects model mmkin row object","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a mixed effects model from an mmkin row object — mixed","text":"","code":"mixed(object, ...) # S3 method for class 'mmkin' mixed(object, method = c(\"none\"), ...) # S3 method for class 'mixed.mmkin' print(x, digits = max(3, getOption(\"digits\") - 3), ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a mixed effects model from an mmkin row object — mixed","text":"object mmkin row object ... Currently used method method used x mixed.mmkin object print digits Number digits use printing.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a mixed effects model from an mmkin row object — mixed","text":"object class 'mixed.mmkin' observed data single dataframe convenient plotting","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a mixed effects model from an mmkin row object — mixed","text":"","code":"sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) n_biphasic <- 8 err_1 = list(const = 1, prop = 0.07) DFOP_SFO <- mkinmod( parent = mkinsub(\"DFOP\", \"m1\"), m1 = mkinsub(\"SFO\"), quiet = TRUE) set.seed(123456) log_sd <- 0.3 syn_biphasic_parms <- as.matrix(data.frame( k1 = rlnorm(n_biphasic, log(0.05), log_sd), k2 = rlnorm(n_biphasic, log(0.01), log_sd), g = plogis(rnorm(n_biphasic, 0, log_sd)), f_parent_to_m1 = plogis(rnorm(n_biphasic, 0, log_sd)), k_m1 = rlnorm(n_biphasic, log(0.002), log_sd))) ds_biphasic_mean <- lapply(1:n_biphasic, function(i) { mkinpredict(DFOP_SFO, syn_biphasic_parms[i, ], c(parent = 100, m1 = 0), sampling_times) } ) set.seed(123456L) ds_biphasic <- lapply(ds_biphasic_mean, function(ds) { add_err(ds, sdfunc = function(value) sqrt(err_1$const^2 + value^2 * err_1$prop^2), n = 1, secondary = \"m1\")[[1]] }) # \\dontrun{ f_mmkin <- mmkin(list(\"DFOP-SFO\" = DFOP_SFO), ds_biphasic, error_model = \"tc\", quiet = TRUE) f_mixed <- mixed(f_mmkin) print(f_mixed) #> Kinetic model fitted by nonlinear regression to each dataset #> Structural model: #> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * #> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) #> * parent #> d_m1/dt = + f_parent_to_m1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) #> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * #> exp(-k2 * time))) * parent - k_m1 * m1 #> #> Data: #> 271 observations of 2 variable(s) grouped in 8 datasets #> #> <mmkin> object #> Status of individual fits: #> #> dataset #> model 1 2 3 4 5 6 7 8 #> DFOP-SFO OK OK OK OK OK C OK OK #> #> C: Optimisation did not converge: #> iteration limit reached without convergence (10) #> OK: No warnings #> #> Mean fitted parameters: #> parent_0 log_k_m1 f_parent_qlogis log_k1 log_k2 #> 100.605312 -8.758664 -0.001917 -3.350887 -3.990017 #> g_qlogis #> -0.091167 plot(f_mixed) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_long_to_wide.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a dataframe from long to wide format — mkin_long_to_wide","title":"Convert a dataframe from long to wide format — mkin_long_to_wide","text":"function takes dataframe long form, .e. row observed value, converts dataframe one independent variable several dependent variables columns.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_long_to_wide.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a dataframe from long to wide format — mkin_long_to_wide","text":"","code":"mkin_long_to_wide(long_data, time = \"time\", outtime = \"time\")"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_long_to_wide.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a dataframe from long to wide format — mkin_long_to_wide","text":"long_data dataframe must contain one variable called \"time\" time values specified time argument, one column called \"name\" grouping observed values, finally one column observed values called \"value\". time name time variable long input data. outtime name time variable wide output data.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_long_to_wide.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a dataframe from long to wide format — mkin_long_to_wide","text":"Dataframe wide format.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_long_to_wide.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a dataframe from long to wide format — mkin_long_to_wide","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_long_to_wide.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a dataframe from long to wide format — mkin_long_to_wide","text":"","code":"mkin_long_to_wide(FOCUS_2006_D) #> time parent m1 #> 1 0 99.46 0.00 #> 2 0 102.04 0.00 #> 3 1 93.50 4.84 #> 4 1 92.50 5.64 #> 5 3 63.23 12.91 #> 6 3 68.99 12.96 #> 7 7 52.32 22.97 #> 8 7 55.13 24.47 #> 9 14 27.27 41.69 #> 10 14 26.64 33.21 #> 11 21 11.50 44.37 #> 12 21 11.64 46.44 #> 13 35 2.85 41.22 #> 14 35 2.91 37.95 #> 15 50 0.69 41.19 #> 16 50 0.63 40.01 #> 17 75 0.05 40.09 #> 18 75 0.06 33.85 #> 19 100 NA 31.04 #> 20 100 NA 33.13 #> 21 120 NA 25.15 #> 22 120 NA 33.31"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_wide_to_long.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a dataframe with observations over time into long format — mkin_wide_to_long","title":"Convert a dataframe with observations over time into long format — mkin_wide_to_long","text":"function simply takes dataframe one independent variable several dependent variable converts long form required mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_wide_to_long.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a dataframe with observations over time into long format — mkin_wide_to_long","text":"","code":"mkin_wide_to_long(wide_data, time = \"t\")"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_wide_to_long.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a dataframe with observations over time into long format — mkin_wide_to_long","text":"wide_data dataframe must contain one variable time values specified time argument usually one column observed values. time name time variable.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_wide_to_long.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a dataframe with observations over time into long format — mkin_wide_to_long","text":"Dataframe long format needed mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_wide_to_long.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a dataframe with observations over time into long format — mkin_wide_to_long","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkin_wide_to_long.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a dataframe with observations over time into long format — mkin_wide_to_long","text":"","code":"wide <- data.frame(t = c(1,2,3), x = c(1,4,7), y = c(3,4,5)) mkin_wide_to_long(wide) #> name time value #> 1 x 1 1 #> 2 x 2 4 #> 3 x 3 7 #> 4 y 1 3 #> 5 y 2 4 #> 6 y 3 5"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":null,"dir":"Reference","previous_headings":"","what":"A dataset class for mkin — mkinds","title":"A dataset class for mkin — mkinds","text":"moment dataset class hardly used mkin. example, mkinfit take mkinds datasets argument, works dataframes contained data field mkinds objects. datasets provided package come mkinds objects nevertheless.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A dataset class for mkin — mkinds","text":"","code":"# S3 method for class 'mkinds' print(x, data = FALSE, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"A dataset class for mkin — mkinds","text":"x mkinds object. data data printed? ... used.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"public-fields","dir":"Reference","previous_headings":"","what":"Public fields","title":"A dataset class for mkin — mkinds","text":"title full title dataset sampling_times sampling times time_unit time unit observed Names observed variables unit unit observations replicates maximum number replicates per sampling time data data frame least columns name, time value order compatible mkinfit","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"A dataset class for mkin — mkinds","text":"mkinds$new() mkinds$clone()","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"A dataset class for mkin — mkinds","text":"Create new mkinds object","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A dataset class for mkin — mkinds","text":"","code":"mkinds$new(title = \"\", data, time_unit = NA, unit = NA)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"A dataset class for mkin — mkinds","text":"title dataset title data data time_unit time unit unit unit observations","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"A dataset class for mkin — mkinds","text":"objects class cloneable method.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"A dataset class for mkin — mkinds","text":"","code":"mkinds$clone(deep = FALSE)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"A dataset class for mkin — mkinds","text":"deep Whether make deep clone.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"A dataset class for mkin — mkinds","text":"","code":"mds <- mkinds$new(\"FOCUS A\", FOCUS_2006_A) print(mds) #> <mkinds> with $title: FOCUS A #> Observed compounds $observed: parent #> Sampling times $sampling_times: #> 0, 3, 7, 14, 30, 62, 90, 118 #> With a maximum of 1 replicates"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":null,"dir":"Reference","previous_headings":"","what":"A class for dataset groups for mkin — mkindsg","title":"A class for dataset groups for mkin — mkindsg","text":"container working datasets share least one compound, combined evaluations desirable. Time normalisation factors initialised value 1 dataset data supplied.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A class for dataset groups for mkin — mkindsg","text":"","code":"# S3 method for class 'mkindsg' print(x, data = FALSE, verbose = data, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"A class for dataset groups for mkin — mkindsg","text":"x mkindsg object. data mkinds objects printed data? verbose mkinds objects printed? ... used.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"public-fields","dir":"Reference","previous_headings":"","what":"Public fields","title":"A class for dataset groups for mkin — mkindsg","text":"title title dataset group ds list mkinds objects observed_n Occurrence counts compounds datasets f_time_norm Time normalisation factors meta data frame row dataset, containing additional information form categorical data (factors) numerical data (e.g. temperature, moisture, covariates like soil pH).","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"public-methods","dir":"Reference","previous_headings":"","what":"Public methods","title":"A class for dataset groups for mkin — mkindsg","text":"mkindsg$new() mkindsg$clone()","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"method-new-","dir":"Reference","previous_headings":"","what":"Method new()","title":"A class for dataset groups for mkin — mkindsg","text":"Create new mkindsg object","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A class for dataset groups for mkin — mkindsg","text":"","code":"mkindsg$new(title = \"\", ds, f_time_norm = rep(1, length(ds)), meta)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"arguments-1","dir":"Reference","previous_headings":"","what":"Arguments","title":"A class for dataset groups for mkin — mkindsg","text":"title title ds list mkinds objects f_time_norm Time normalisation factors meta meta data","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"method-clone-","dir":"Reference","previous_headings":"","what":"Method clone()","title":"A class for dataset groups for mkin — mkindsg","text":"objects class cloneable method.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"usage-1","dir":"Reference","previous_headings":"","what":"Usage","title":"A class for dataset groups for mkin — mkindsg","text":"","code":"mkindsg$clone(deep = FALSE)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"arguments-2","dir":"Reference","previous_headings":"","what":"Arguments","title":"A class for dataset groups for mkin — mkindsg","text":"deep Whether make deep clone.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"A class for dataset groups for mkin — mkindsg","text":"","code":"mdsg <- mkindsg$new(\"Experimental X\", experimental_data_for_UBA_2019[6:10]) print(mdsg) #> <mkindsg> holding 5 mkinds objects #> Title $title: Experimental X #> Occurrence of observed compounds $observed_n: #> parent A1 #> 5 5 print(mdsg, verbose = TRUE) #> <mkindsg> holding 5 mkinds objects #> Title $title: Experimental X #> Occurrence of observed compounds $observed_n: #> parent A1 #> 5 5 #> #> Datasets $ds: #> <mkinds> with $title: Soil 6 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 3, 6, 10, 20, 34, 55, 90, 112, 132 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> #> <mkinds> with $title: Soil 7 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 3, 7, 14, 30, 60, 90, 120, 180 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> #> <mkinds> with $title: Soil 8 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 1, 3, 8, 14, 27, 48, 70 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> #> <mkinds> with $title: Soil 9 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 1, 3, 8, 14, 27, 48, 70, 91, 120 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> #> <mkinds> with $title: Soil 10 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 8, 14, 21, 41, 63, 91, 120 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR print(mdsg, verbose = TRUE, data = TRUE) #> <mkindsg> holding 5 mkinds objects #> Title $title: Experimental X #> Occurrence of observed compounds $observed_n: #> parent A1 #> 5 5 #> #> Datasets $ds: #> <mkinds> with $title: Soil 6 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 3, 6, 10, 20, 34, 55, 90, 112, 132 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> time parent A1 #> 1 0 97.2 NA #> 2 0 96.4 NA #> 3 3 71.1 4.3 #> 4 3 69.2 4.6 #> 5 6 58.1 7.0 #> 6 6 56.6 7.2 #> 7 10 44.4 8.2 #> 8 10 43.4 8.0 #> 9 20 33.3 11.0 #> 10 20 29.2 13.7 #> 11 34 17.6 11.5 #> 12 34 18.0 12.7 #> 13 55 10.5 14.9 #> 14 55 9.3 14.5 #> 15 90 4.5 12.1 #> 16 90 4.7 12.3 #> 17 112 3.0 9.9 #> 18 112 3.4 10.2 #> 19 132 2.3 8.8 #> 20 132 2.7 7.8 #> #> <mkinds> with $title: Soil 7 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 3, 7, 14, 30, 60, 90, 120, 180 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> time parent A1 #> 1 0 93.6 NA #> 2 0 92.3 NA #> 3 3 87.0 3.9 #> 4 3 82.2 3.1 #> 5 7 74.0 6.9 #> 6 7 73.9 6.6 #> 7 14 64.2 10.4 #> 8 14 69.5 8.3 #> 9 30 54.0 14.4 #> 10 30 54.6 13.7 #> 11 60 41.1 22.1 #> 12 60 38.4 22.3 #> 13 90 32.5 27.5 #> 14 90 35.5 25.4 #> 15 120 28.1 28.0 #> 16 120 29.0 26.6 #> 17 180 26.5 25.8 #> 18 180 27.6 25.3 #> #> <mkinds> with $title: Soil 8 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 1, 3, 8, 14, 27, 48, 70 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> time parent A1 #> 1 0 91.9 NA #> 2 0 90.8 NA #> 3 1 64.9 9.6 #> 4 1 66.2 7.7 #> 5 3 43.5 15.0 #> 6 3 44.1 15.1 #> 7 8 18.3 21.2 #> 8 8 18.1 21.1 #> 9 14 10.2 19.7 #> 10 14 10.8 18.9 #> 11 27 4.9 17.5 #> 12 27 3.3 15.9 #> 13 48 1.6 9.5 #> 14 48 1.5 9.8 #> 15 70 1.1 6.2 #> 16 70 0.9 6.1 #> #> <mkinds> with $title: Soil 9 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 1, 3, 8, 14, 27, 48, 70, 91, 120 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> time parent A1 #> 1 0 99.8 NA #> 2 0 98.3 NA #> 3 1 77.1 4.2 #> 4 1 77.2 3.9 #> 5 3 59.0 7.4 #> 6 3 58.1 7.9 #> 7 8 27.4 14.5 #> 8 8 29.2 13.7 #> 9 14 19.1 14.2 #> 10 14 29.6 12.2 #> 11 27 10.1 13.7 #> 12 27 18.2 13.2 #> 13 48 4.5 13.6 #> 14 48 9.1 15.4 #> 15 70 2.3 10.4 #> 16 70 2.9 11.6 #> 17 91 2.0 10.0 #> 18 91 1.8 9.5 #> 19 120 2.0 9.1 #> 20 120 2.2 9.0 #> #> <mkinds> with $title: Soil 10 #> Observed compounds $observed: parent, A1 #> Sampling times $sampling_times: #> 0, 8, 14, 21, 41, 63, 91, 120 #> With a maximum of 2 replicates #> Time unit: days #> Observation unit: \\%AR #> time parent A1 #> 1 0 96.1 NA #> 2 0 94.3 NA #> 3 8 73.9 3.3 #> 4 8 73.9 3.4 #> 5 14 69.4 3.9 #> 6 14 73.1 2.9 #> 7 21 65.6 6.4 #> 8 21 65.3 7.2 #> 9 41 55.9 9.1 #> 10 41 54.4 8.5 #> 11 63 47.0 11.7 #> 12 63 49.3 12.0 #> 13 91 44.7 13.3 #> 14 91 46.7 13.2 #> 15 120 42.1 14.3 #> 16 120 41.3 12.1"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrmin.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the minimum error to assume in order to pass the variance test — mkinerrmin","title":"Calculate the minimum error to assume in order to pass the variance test — mkinerrmin","text":"function finds smallest relative error still resulting passing chi-squared test defined FOCUS kinetics report 2006.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrmin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the minimum error to assume in order to pass the variance test — mkinerrmin","text":"","code":"mkinerrmin(fit, alpha = 0.05)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrmin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the minimum error to assume in order to pass the variance test — mkinerrmin","text":"fit object class mkinfit. alpha confidence level chosen chi-squared test.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrmin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the minimum error to assume in order to pass the variance test — mkinerrmin","text":"dataframe following components: err.min relative error, expressed fraction. n.optim number optimised parameters attributed data series. df number remaining degrees freedom chi2 error level calculations. Note mean values used chi2 statistic therefore every time point observed values series counts one time. dataframe one row total dataset one row observed state variable model.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrmin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the minimum error to assume in order to pass the variance test — mkinerrmin","text":"function used internally summary.mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrmin.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Calculate the minimum error to assume in order to pass the variance test — mkinerrmin","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrmin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the minimum error to assume in order to pass the variance test — mkinerrmin","text":"","code":"SFO_SFO = mkinmod(parent = mkinsub(\"SFO\", to = \"m1\"), m1 = mkinsub(\"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded fit_FOCUS_D = mkinfit(SFO_SFO, FOCUS_2006_D, quiet = TRUE) #> Warning: Observations with value of zero were removed from the data round(mkinerrmin(fit_FOCUS_D), 4) #> err.min n.optim df #> All data 0.0640 4 15 #> parent 0.0646 2 7 #> m1 0.0469 2 8 # \\dontrun{ fit_FOCUS_E = mkinfit(SFO_SFO, FOCUS_2006_E, quiet = TRUE) round(mkinerrmin(fit_FOCUS_E), 4) #> err.min n.optim df #> All data 0.1544 4 13 #> parent 0.1659 2 7 #> m1 0.1095 2 6 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to plot squared residuals and the error model for an mkin object — mkinerrplot","title":"Function to plot squared residuals and the error model for an mkin object — mkinerrplot","text":"function plots squared residuals specified subset observed variables mkinfit object. addition, one dashed line(s) show fitted error model. combined plot fitted model error model plot can obtained plot.mkinfit using argument show_errplot = TRUE.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to plot squared residuals and the error model for an mkin object — mkinerrplot","text":"","code":"mkinerrplot( object, obs_vars = names(object$mkinmod$map), xlim = c(0, 1.1 * max(object$data$predicted)), xlab = \"Predicted\", ylab = \"Squared residual\", maxy = \"auto\", legend = TRUE, lpos = \"topright\", col_obs = \"auto\", pch_obs = \"auto\", frame = TRUE, ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to plot squared residuals and the error model for an mkin object — mkinerrplot","text":"object fit represented mkinfit object. obs_vars character vector names observed variables residuals plotted. Defaults observed variables model xlim plot range x direction. xlab Label x axis. ylab Label y axis. maxy Maximum value residuals. used scaling y axis defaults \"auto\". legend legend plotted? lpos legend placed? Default \"topright\". passed legend. col_obs Colors observed variables. pch_obs Symbols used observed variables. frame frame drawn around plots? ... arguments passed plot.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to plot squared residuals and the error model for an mkin object — mkinerrplot","text":"Nothing returned function, called side effect, namely produce plot.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrplot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to plot squared residuals and the error model for an mkin object — mkinerrplot","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to plot squared residuals and the error model for an mkin object — mkinerrplot","text":"","code":"# \\dontrun{ model <- mkinmod(parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded fit <- mkinfit(model, FOCUS_2006_D, error_model = \"tc\", quiet = TRUE) #> Warning: Observations with value of zero were removed from the data mkinerrplot(fit) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Fit a kinetic model to data with one or more state variables — mkinfit","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"function maximises likelihood observed data using Port algorithm stats::nlminb(), specified initial fixed parameters starting values. step optimisation, kinetic model solved using function mkinpredict(), except analytical solution implemented, case model solved using degradation function mkinmod object. parameters selected error model fitted simultaneously degradation model parameters, arguments likelihood function.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"","code":"mkinfit( mkinmod, observed, parms.ini = \"auto\", state.ini = \"auto\", err.ini = \"auto\", fixed_parms = NULL, fixed_initials = names(mkinmod$diffs)[-1], from_max_mean = FALSE, solution_type = c(\"auto\", \"analytical\", \"eigen\", \"deSolve\"), method.ode = \"lsoda\", use_compiled = \"auto\", control = list(eval.max = 300, iter.max = 200), transform_rates = TRUE, transform_fractions = TRUE, quiet = FALSE, atol = 1e-08, rtol = 1e-10, error_model = c(\"const\", \"obs\", \"tc\"), error_model_algorithm = c(\"auto\", \"d_3\", \"direct\", \"twostep\", \"threestep\", \"fourstep\", \"IRLS\", \"OLS\"), reweight.tol = 1e-08, reweight.max.iter = 10, trace_parms = FALSE, test_residuals = FALSE, ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"mkinmod list class mkinmod, containing kinetic model fitted data, one shorthand names (\"SFO\", \"FOMC\", \"DFOP\", \"HS\", \"SFORB\", \"IORE\"). shorthand name given, parent degradation model generated variable highest value observed. observed dataframe object coercible dataframe (e.g. tibble) observed data. first column called \"name\" must contain name observed variable data point. second column must contain times observation, named \"time\". third column must named \"value\" contain observed values. Zero values \"value\" column removed, warning, order avoid problems fitting two-component error model. expected problem, general, values zero observed degradation data, lower limit detection. parms.ini named vector initial values parameters, including parameters optimised potentially also fixed parameters indicated fixed_parms. set \"auto\", initial values rate constants set default values. Using parameter names model gives error. possible specify subset parameters model needs. can use parameter lists \"bparms.ode\" previously fitted model, contains differential equation parameters model. works nicely models nested. example given . state.ini named vector initial values state variables model. case observed variables represented one model variable, names differ names observed variables (see map component mkinmod). default set initial value first model variable mean time zero values variable maximum observed value, others 0. variable time zero observations, initial value set 100. err.ini named vector initial values error model parameters optimised. set \"auto\", initial values set default values. Otherwise, inital values error model parameters must given. fixed_parms names parameters optimised rather kept values specified parms.ini. Alternatively, named numeric vector parameters fixed, regardless values parms.ini. fixed_initials names model variables initial state time 0 excluded optimisation. Defaults state variables except first one. from_max_mean set TRUE, model one observed variable, data time maximum observed value (averaging sampling time) discarded, time subtracted remaining time values, time maximum observed mean value new time zero. solution_type set \"eigen\", solution system differential equations based spectral decomposition coefficient matrix cases possible. set \"deSolve\", numerical ode solver package deSolve used. set \"analytical\", analytical solution model used. implemented relatively simple degradation models. default \"auto\", uses \"analytical\" possible, otherwise \"deSolve\" compiler present, \"eigen\" compiler present model can expressed using eigenvalues eigenvectors. method.ode solution method passed via mkinpredict() deSolve::ode() case solution type \"deSolve\". default \"lsoda\" performant, sometimes fails converge. use_compiled set FALSE, compiled version mkinmod model used calls mkinpredict() even compiled version present. control list control arguments passed stats::nlminb(). transform_rates Boolean specifying kinetic rate constants transformed model specification used fitting better compliance assumption normal distribution estimator. TRUE, also alpha beta parameters FOMC model log-transformed, well k1 k2 rate constants DFOP HS models break point tb HS model. FALSE, zero used lower bound rates optimisation. transform_fractions Boolean specifying formation fractions transformed model specification used fitting better compliance assumption normal distribution estimator. default (TRUE) transformations. TRUE, g parameter DFOP model also transformed. Transformations described transform_odeparms. quiet Suppress printing current value negative log-likelihood improvement? atol Absolute error tolerance, passed deSolve::ode(). Default 1e-8, lower default deSolve::lsoda() function used per default. rtol Absolute error tolerance, passed deSolve::ode(). Default 1e-10, much lower deSolve::lsoda(). error_model error model \"const\", constant standard deviation assumed. error model \"obs\", observed variable assumed variance. error model \"tc\" (two-component error model), two component error model similar one described Rocke Lorenzato (1995) used setting likelihood function. Note model deviates model Rocke Lorenzato, model implies errors follow lognormal distribution large values, normal distribution assumed method. error_model_algorithm \"auto\", selected algorithm depends error model. error model \"const\", unweighted nonlinear least squares fitting (\"OLS\") selected. error model \"obs\", \"tc\", \"d_3\" algorithm selected. algorithm \"d_3\" directly minimize negative log-likelihood independently also use three step algorithm described . fit higher likelihood returned. algorithm \"direct\" directly minimize negative log-likelihood. algorithm \"twostep\" minimize negative log-likelihood initial unweighted least squares optimisation step. algorithm \"threestep\" starts unweighted least squares, optimizes error model using degradation model parameters found, minimizes negative log-likelihood free degradation error model parameters. algorithm \"fourstep\" starts unweighted least squares, optimizes error model using degradation model parameters found, optimizes degradation model fixed error model parameters, finally minimizes negative log-likelihood free degradation error model parameters. algorithm \"IRLS\" (Iteratively Reweighted Least Squares) starts unweighted least squares, iterates optimization error model parameters subsequent optimization degradation model using error model parameters, error model parameters converge. reweight.tol Tolerance convergence criterion calculated error model parameters IRLS fits. reweight.max.iter Maximum number iterations IRLS fits. trace_parms trace parameter values listed? test_residuals residuals tested normal distribution? ... arguments passed deSolve::ode().","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"list \"mkinfit\" class attribute.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"Per default, parameters kinetic models internally transformed order better satisfy assumption normal distribution estimators.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"using \"IORE\" submodel metabolites, fitting \"transform_rates = TRUE\" (default) often leads failures numerical ODE solver. situation may help switch internal rate transformation.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"Rocke DM Lorenzato S (1995) two-component model measurement error analytical chemistry. Technometrics 37(2), 176-184. Ranke J Meinecke S (2019) Error Models Kinetic Evaluation Chemical Degradation Data. Environments 6(12) 124 doi:10.3390/environments6120124 .","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Fit a kinetic model to data with one or more state variables — mkinfit","text":"","code":"# Use shorthand notation for parent only degradation fit <- mkinfit(\"FOMC\", FOCUS_2006_C, quiet = TRUE) summary(fit) #> mkin version used for fitting: 1.2.10 #> R version used for fitting: 4.4.2 #> Date of fit: Fri Feb 14 07:30:02 2025 #> Date of summary: Fri Feb 14 07:30:02 2025 #> #> Equations: #> d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent #> #> Model predictions using solution type analytical #> #> Fitted using 222 model solutions performed in 0.014 s #> #> Error model: Constant variance #> #> Error model algorithm: OLS #> #> Starting values for parameters to be optimised: #> value type #> parent_0 85.1 state #> alpha 1.0 deparm #> beta 10.0 deparm #> #> Starting values for the transformed parameters actually optimised: #> value lower upper #> parent_0 85.100000 -Inf Inf #> log_alpha 0.000000 -Inf Inf #> log_beta 2.302585 -Inf Inf #> #> Fixed parameter values: #> None #> #> Results: #> #> AIC BIC logLik #> 44.68652 45.47542 -18.34326 #> #> Optimised, transformed parameters with symmetric confidence intervals: #> Estimate Std. Error Lower Upper #> parent_0 85.87000 1.8070 81.23000 90.5200 #> log_alpha 0.05192 0.1353 -0.29580 0.3996 #> log_beta 0.65100 0.2287 0.06315 1.2390 #> sigma 1.85700 0.4378 0.73200 2.9830 #> #> Parameter correlation: #> parent_0 log_alpha log_beta sigma #> parent_0 1.000e+00 -1.565e-01 -3.142e-01 4.681e-08 #> log_alpha -1.565e-01 1.000e+00 9.564e-01 1.013e-07 #> log_beta -3.142e-01 9.564e-01 1.000e+00 8.637e-08 #> sigma 4.681e-08 1.013e-07 8.637e-08 1.000e+00 #> #> Backtransformed parameters: #> Confidence intervals for internally transformed parameters are asymmetric. #> t-test (unrealistically) based on the assumption of normal distribution #> for estimators of untransformed parameters. #> Estimate t value Pr(>t) Lower Upper #> parent_0 85.870 47.530 3.893e-08 81.2300 90.520 #> alpha 1.053 7.393 3.562e-04 0.7439 1.491 #> beta 1.917 4.373 3.601e-03 1.0650 3.451 #> sigma 1.857 4.243 4.074e-03 0.7320 2.983 #> #> FOCUS Chi2 error levels in percent: #> err.min n.optim df #> All data 6.657 3 6 #> parent 6.657 3 6 #> #> Estimated disappearance times: #> DT50 DT90 DT50back #> parent 1.785 15.15 4.56 #> #> Data: #> time variable observed predicted residual #> 0 parent 85.1 85.875 -0.7749 #> 1 parent 57.9 55.191 2.7091 #> 3 parent 29.9 31.845 -1.9452 #> 7 parent 14.6 17.012 -2.4124 #> 14 parent 9.7 9.241 0.4590 #> 28 parent 6.6 4.754 1.8460 #> 63 parent 4.0 2.102 1.8977 #> 91 parent 3.9 1.441 2.4590 #> 119 parent 0.6 1.092 -0.4919 # One parent compound, one metabolite, both single first order. # We remove zero values from FOCUS dataset D in order to avoid warnings FOCUS_D <- subset(FOCUS_2006_D, value != 0) # Use mkinsub for convenience in model formulation. Pathway to sink included per default. SFO_SFO <- mkinmod( parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded # Fit the model quietly to the FOCUS example dataset D using defaults fit <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE) plot_sep(fit) # As lower parent values appear to have lower variance, we try an alternative error model fit.tc <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = \"tc\") # This avoids the warning, and the likelihood ratio test confirms it is preferable lrtest(fit.tc, fit) #> Likelihood ratio test #> #> Model 1: SFO_SFO with error model tc and fixed parameter(s) m1_0 #> Model 2: SFO_SFO with error model const and fixed parameter(s) m1_0 #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 6 -64.983 #> 2 5 -97.224 -1 64.483 9.737e-16 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # We can also allow for different variances of parent and metabolite as error model fit.obs <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = \"obs\") # The two-component error model has significantly higher likelihood lrtest(fit.obs, fit.tc) #> Likelihood ratio test #> #> Model 1: SFO_SFO with error model tc and fixed parameter(s) m1_0 #> Model 2: SFO_SFO with error model obs and fixed parameter(s) m1_0 #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 6 -64.983 #> 2 6 -96.936 0 63.907 < 2.2e-16 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 parms(fit.tc) #> parent_0 k_parent k_m1 f_parent_to_m1 sigma_low #> 1.007343e+02 1.005562e-01 5.166712e-03 5.083933e-01 3.049883e-03 #> rsd_high #> 7.928118e-02 endpoints(fit.tc) #> $ff #> parent_m1 parent_sink #> 0.5083933 0.4916067 #> #> $distimes #> DT50 DT90 #> parent 6.89313 22.89848 #> m1 134.15634 445.65771 #> # We can show a quick (only one replication) benchmark for this case, as we # have several alternative solution methods for the model. We skip # uncompiled deSolve, as it is so slow. More benchmarks are found in the # benchmark vignette # \\dontrun{ if(require(rbenchmark)) { benchmark(replications = 1, order = \"relative\", columns = c(\"test\", \"relative\", \"elapsed\"), deSolve_compiled = mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = \"tc\", solution_type = \"deSolve\", use_compiled = TRUE), eigen = mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = \"tc\", solution_type = \"eigen\"), analytical = mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = \"tc\", solution_type = \"analytical\")) } #> test relative elapsed #> 3 analytical 1.000 0.242 #> 2 eigen 1.913 0.463 #> 1 deSolve_compiled 1.917 0.464 # } # Use stepwise fitting, using optimised parameters from parent only fit, FOMC-SFO # \\dontrun{ FOMC_SFO <- mkinmod( parent = mkinsub(\"FOMC\", \"m1\"), m1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded fit.FOMC_SFO <- mkinfit(FOMC_SFO, FOCUS_D, quiet = TRUE) # Again, we get a warning and try a more sophisticated error model fit.FOMC_SFO.tc <- mkinfit(FOMC_SFO, FOCUS_D, quiet = TRUE, error_model = \"tc\") # This model has a higher likelihood, but not significantly so lrtest(fit.tc, fit.FOMC_SFO.tc) #> Likelihood ratio test #> #> Model 1: FOMC_SFO with error model tc and fixed parameter(s) m1_0 #> Model 2: SFO_SFO with error model tc and fixed parameter(s) m1_0 #> #Df LogLik Df Chisq Pr(>Chisq) #> 1 7 -64.829 #> 2 6 -64.983 -1 0.3075 0.5792 # Also, the missing standard error for log_beta and the t-tests for alpha # and beta indicate overparameterisation summary(fit.FOMC_SFO.tc, data = FALSE) #> Warning: NaNs produced #> Warning: diag(V) had non-positive or NA entries; the non-finite result may be dubious #> mkin version used for fitting: 1.2.10 #> R version used for fitting: 4.4.2 #> Date of fit: Fri Feb 14 07:30:07 2025 #> Date of summary: Fri Feb 14 07:30:07 2025 #> #> Equations: #> d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent #> d_m1/dt = + f_parent_to_m1 * (alpha/beta) * 1/((time/beta) + 1) * #> parent - k_m1 * m1 #> #> Model predictions using solution type deSolve #> #> Fitted using 4062 model solutions performed in 0.77 s #> #> Error model: Two-component variance function #> #> Error model algorithm: d_3 #> Direct fitting and three-step fitting yield approximately the same likelihood #> #> Starting values for parameters to be optimised: #> value type #> parent_0 100.75 state #> alpha 1.00 deparm #> beta 10.00 deparm #> k_m1 0.10 deparm #> f_parent_to_m1 0.50 deparm #> sigma_low 0.10 error #> rsd_high 0.10 error #> #> Starting values for the transformed parameters actually optimised: #> value lower upper #> parent_0 100.750000 -Inf Inf #> log_k_m1 -2.302585 -Inf Inf #> f_parent_qlogis 0.000000 -Inf Inf #> log_alpha 0.000000 -Inf Inf #> log_beta 2.302585 -Inf Inf #> sigma_low 0.100000 0 Inf #> rsd_high 0.100000 0 Inf #> #> Fixed parameter values: #> value type #> m1_0 0 state #> #> Results: #> #> AIC BIC logLik #> 143.658 155.1211 -64.82902 #> #> Optimised, transformed parameters with symmetric confidence intervals: #> Estimate Std. Error Lower Upper #> parent_0 101.600000 2.6400000 96.240000 107.000000 #> log_k_m1 -5.284000 0.0929100 -5.474000 -5.095000 #> f_parent_qlogis 0.001426 0.0766900 -0.155000 0.157800 #> log_alpha 5.522000 0.0077320 5.506000 5.538000 #> log_beta 7.806000 NaN NaN NaN #> sigma_low 0.002488 0.0002431 0.001992 0.002984 #> rsd_high 0.079210 0.0093280 0.060180 0.098230 #> #> Parameter correlation: #> parent_0 log_k_m1 f_parent_qlogis log_alpha log_beta #> parent_0 1.000000 -0.095161 -0.76675 0.70542 NaN #> log_k_m1 -0.095161 1.000000 0.51429 -0.14382 NaN #> f_parent_qlogis -0.766750 0.514286 1.00000 -0.61393 NaN #> log_alpha 0.705417 -0.143821 -0.61393 1.00000 NaN #> log_beta NaN NaN NaN NaN 1 #> sigma_low 0.016086 0.001583 0.01547 5.87036 NaN #> rsd_high 0.006618 -0.011695 -0.05356 0.04848 NaN #> sigma_low rsd_high #> parent_0 0.016086 0.006618 #> log_k_m1 0.001583 -0.011695 #> f_parent_qlogis 0.015466 -0.053560 #> log_alpha 5.870361 0.048483 #> log_beta NaN NaN #> sigma_low 1.000000 -0.652545 #> rsd_high -0.652545 1.000000 #> #> Backtransformed parameters: #> Confidence intervals for internally transformed parameters are asymmetric. #> t-test (unrealistically) based on the assumption of normal distribution #> for estimators of untransformed parameters. #> Estimate t value Pr(>t) Lower Upper #> parent_0 1.016e+02 32.7800 6.310e-26 9.624e+01 1.070e+02 #> k_m1 5.072e-03 10.1200 1.216e-11 4.196e-03 6.130e-03 #> f_parent_to_m1 5.004e-01 20.8300 4.316e-20 4.613e-01 5.394e-01 #> alpha 2.502e+02 0.5624 2.889e-01 2.463e+02 2.542e+02 #> beta 2.455e+03 0.5549 2.915e-01 NA NA #> sigma_low 2.488e-03 0.4843 3.158e-01 1.992e-03 2.984e-03 #> rsd_high 7.921e-02 8.4300 8.001e-10 6.018e-02 9.823e-02 #> #> FOCUS Chi2 error levels in percent: #> err.min n.optim df #> All data 6.781 5 14 #> parent 7.141 3 6 #> m1 4.640 2 8 #> #> Resulting formation fractions: #> ff #> parent_m1 0.5004 #> parent_sink 0.4996 #> #> Estimated disappearance times: #> DT50 DT90 DT50back #> parent 6.812 22.7 6.834 #> m1 136.661 454.0 NA # We can easily use starting parameters from the parent only fit (only for illustration) fit.FOMC = mkinfit(\"FOMC\", FOCUS_2006_D, quiet = TRUE, error_model = \"tc\") fit.FOMC_SFO <- mkinfit(FOMC_SFO, FOCUS_D, quiet = TRUE, parms.ini = fit.FOMC$bparms.ode, error_model = \"tc\") # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to set up a kinetic model with one or more state variables — mkinmod","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"function usually called using call mkinsub() observed variable, specifying corresponding submodel well outgoing pathways (see examples). Print mkinmod objects way user finds way get components.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"","code":"mkinmod( ..., use_of_ff = \"max\", name = NULL, speclist = NULL, quiet = FALSE, verbose = FALSE, dll_dir = NULL, unload = FALSE, overwrite = FALSE ) # S3 method for class 'mkinmod' print(x, ...) mkinsub(submodel, to = NULL, sink = TRUE, full_name = NA)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"... observed variable, list obtained mkinsub() specified argument (see examples). Currently, single first order kinetics \"SFO\", indeterminate order rate equation kinetics \"IORE\", single first order reversible binding \"SFORB\" implemented variables, \"FOMC\", \"DFOP\", \"HS\" \"logistic\" can additionally chosen first variable assumed source compartment. Additionally, mkinsub() argument , specifying names variables transfer assumed model. argument use_of_ff set \"min\" model compartment \"SFO\" \"SFORB\", additional mkinsub() argument can sink = FALSE, effectively fixing flux sink zero. print.mkinmod, argument currently used. use_of_ff Specification use formation fractions model equations , applicable, coefficient matrix. \"max\", formation fractions always used (default). \"min\", minimum use formation fractions made, .e. first-order pathway metabolite rate constant. name name model. valid R object name. speclist specification observed variables submodel types pathways can given single list using argument. Default NULL. quiet messages suppressed? verbose TRUE, passed inline::cfunction() applicable give detailed information C function built. dll_dir Directory DLL object, generated internally inline::cfunction(), saved. DLL stored permanent location use future sessions, 'dll_dir' 'name' specified. helpful fit objects cached e.g. knitr, cache remains functional across sessions DLL stored user defined location. unload DLL target location 'dll_dir' already loaded, unloaded first? overwrite file exists target DLL location 'dll_dir', overwritten? x mkinmod object. submodel Character vector length one specify submodel type. See mkinmod list allowed submodel names. Vector names state variable transformation shall included model. sink pathway sink included model addition pathways state variables? full_name optional name used e.g. plotting fits performed model. can use non-ASCII characters , R code portable, .e. may produce unintended plot results operating systems system configurations.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"list class mkinmod use mkinfit(), containing, among others, diffs vector string representations differential equations, one modelling variable. map list containing named character vectors observed variable, specifying modelling variables represented. use_of_ff content use_of_ff passed list component. deg_func generated, function containing solution degradation model. coefmat coefficient matrix, system differential equations can represented one. cf generated, compiled function calculating derivatives returned cfunction. list use mkinmod.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"definition model types parameters, equations given FOCUS NAFTA guidance documents used. kinetic models one observed variable, symbolic solution system differential equations included resulting mkinmod object cases, speeding solution. C compiler found pkgbuild::has_compiler() one observed variable specification, C code generated evaluating differential equations, compiled using inline::cfunction() added resulting mkinmod object.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"IORE submodel well tested metabolites. using model metabolites, may want read note help page mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics NAFTA Technical Working Group Pesticides (dated) Guidance Evaluating Calculating Degradation Kinetics Environmental Media","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to set up a kinetic model with one or more state variables — mkinmod","text":"","code":"# Specify the SFO model (this is not needed any more, as we can now mkinfit(\"SFO\", ...) SFO <- mkinmod(parent = mkinsub(\"SFO\")) # One parent compound, one metabolite, both single first order SFO_SFO <- mkinmod( parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded print(SFO_SFO) #> <mkinmod> model generated with #> Use of formation fractions $use_of_ff: max #> Specification $spec: #> $parent #> $type: SFO; $to: m1; $sink: TRUE #> $m1 #> $type: SFO; $sink: TRUE #> Coefficient matrix $coefmat available #> Compiled model $cf available #> Differential equations: #> d_parent/dt = - k_parent * parent #> d_m1/dt = + f_parent_to_m1 * k_parent * parent - k_m1 * m1 # \\dontrun{ fit_sfo_sfo <- mkinfit(SFO_SFO, FOCUS_2006_D, quiet = TRUE, solution_type = \"deSolve\") #> Warning: Observations with value of zero were removed from the data # Now supplying compound names used for plotting, and write to user defined location # We need to choose a path outside the session tempdir because this gets removed DLL_dir <- \"~/.local/share/mkin\" if (!dir.exists(DLL_dir)) dir.create(DLL_dir) SFO_SFO.2 <- mkinmod( parent = mkinsub(\"SFO\", \"m1\", full_name = \"Test compound\"), m1 = mkinsub(\"SFO\", full_name = \"Metabolite M1\"), name = \"SFO_SFO\", dll_dir = DLL_dir, unload = TRUE, overwrite = TRUE) #> Temporary DLL for differentials generated and loaded #> Copied DLL from /tmp/RtmpSeNGYy/file226312370605e2.so to /home/jranke/.local/share/mkin/SFO_SFO.so # Now we can save the model and restore it in a new session saveRDS(SFO_SFO.2, file = \"~/SFO_SFO.rds\") # Terminate the R session here if you would like to check, and then do library(mkin) SFO_SFO.3 <- readRDS(\"~/SFO_SFO.rds\") fit_sfo_sfo <- mkinfit(SFO_SFO.3, FOCUS_2006_D, quiet = TRUE, solution_type = \"deSolve\") #> Warning: Observations with value of zero were removed from the data # Show details of creating the C function SFO_SFO <- mkinmod( parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\"), verbose = TRUE) #> Program source: #> 1: #include <R.h> #> 2: #> 3: #> 4: static double parms [3]; #> 5: #define k_parent parms[0] #> 6: #define f_parent_to_m1 parms[1] #> 7: #define k_m1 parms[2] #> 8: #> 9: void initpar(void (* odeparms)(int *, double *)) { #> 10: int N = 3; #> 11: odeparms(&N, parms); #> 12: } #> 13: #> 14: #> 15: void diffs ( int * n, double * t, double * y, double * f, double * rpar, int * ipar ) { #> 16: #> 17: f[0] = - k_parent * y[0]; #> 18: f[1] = + f_parent_to_m1 * k_parent * y[0] - k_m1 * y[1]; #> 19: } #> Temporary DLL for differentials generated and loaded # The symbolic solution which is available in this case is not # made for human reading but for speed of computation SFO_SFO$deg_func #> function (observed, odeini, odeparms) #> { #> predicted <- numeric(0) #> with(as.list(odeparms), { #> t <- observed[observed$name == \"parent\", \"time\"] #> predicted <<- c(predicted, SFO.solution(t, odeini[\"parent\"], #> k_parent)) #> t <- observed[observed$name == \"m1\", \"time\"] #> predicted <<- c(predicted, (((k_m1 - k_parent) * odeini[\"m1\"] - #> f_parent_to_m1 * k_parent * odeini[\"parent\"]) * exp(-k_m1 * #> t) + f_parent_to_m1 * k_parent * odeini[\"parent\"] * #> exp(-k_parent * t))/(k_m1 - k_parent)) #> }) #> return(predicted) #> } #> <environment: 0x5555577ec6d0> # If we have several parallel metabolites # (compare tests/testthat/test_synthetic_data_for_UBA_2014.R) m_synth_DFOP_par <- mkinmod( parent = mkinsub(\"DFOP\", c(\"M1\", \"M2\")), M1 = mkinsub(\"SFO\"), M2 = mkinsub(\"SFO\"), quiet = TRUE) fit_DFOP_par_c <- mkinfit(m_synth_DFOP_par, synthetic_data_for_UBA_2014[[12]]$data, quiet = TRUE) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinparplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to plot the confidence intervals obtained using mkinfit — mkinparplot","title":"Function to plot the confidence intervals obtained using mkinfit — mkinparplot","text":"function plots confidence intervals parameters fitted using mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinparplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to plot the confidence intervals obtained using mkinfit — mkinparplot","text":"","code":"mkinparplot(object)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinparplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to plot the confidence intervals obtained using mkinfit — mkinparplot","text":"object fit represented mkinfit object.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinparplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to plot the confidence intervals obtained using mkinfit — mkinparplot","text":"Nothing returned function, called side effect, namely produce plot.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinparplot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to plot the confidence intervals obtained using mkinfit — mkinparplot","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinparplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to plot the confidence intervals obtained using mkinfit — mkinparplot","text":"","code":"# \\dontrun{ model <- mkinmod( T245 = mkinsub(\"SFO\", to = c(\"phenol\"), sink = FALSE), phenol = mkinsub(\"SFO\", to = c(\"anisole\")), anisole = mkinsub(\"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded fit <- mkinfit(model, subset(mccall81_245T, soil == \"Commerce\"), quiet = TRUE) #> Warning: Observations with value of zero were removed from the data mkinparplot(fit) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot the observed data and the fitted model of an mkinfit object — mkinplot","title":"Plot the observed data and the fitted model of an mkinfit object — mkinplot","text":"Deprecated function. now calls plot method plot.mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot the observed data and the fitted model of an mkinfit object — mkinplot","text":"","code":"mkinplot(fit, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot the observed data and the fitted model of an mkinfit object — mkinplot","text":"fit object class mkinfit. ... arguments passed plot.mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot the observed data and the fitted model of an mkinfit object — mkinplot","text":"function called side effect.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinplot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot the observed data and the fitted model of an mkinfit object — mkinplot","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html","id":null,"dir":"Reference","previous_headings":"","what":"Produce predictions from a kinetic model using specific parameters — mkinpredict","title":"Produce predictions from a kinetic model using specific parameters — mkinpredict","text":"function produces time series observed variables kinetic model specified mkinmod, using specific set kinetic parameters initial values state variables.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Produce predictions from a kinetic model using specific parameters — mkinpredict","text":"","code":"mkinpredict(x, odeparms, odeini, outtimes, ...) # S3 method for class 'mkinmod' mkinpredict( x, odeparms = c(k_parent_sink = 0.1), odeini = c(parent = 100), outtimes = seq(0, 120, by = 0.1), solution_type = \"deSolve\", use_compiled = \"auto\", use_symbols = FALSE, method.ode = \"lsoda\", atol = 1e-08, rtol = 1e-10, maxsteps = 20000L, map_output = TRUE, na_stop = TRUE, ... ) # S3 method for class 'mkinfit' mkinpredict( x, odeparms = x$bparms.ode, odeini = x$bparms.state, outtimes = seq(0, 120, by = 0.1), solution_type = \"deSolve\", use_compiled = \"auto\", method.ode = \"lsoda\", atol = 1e-08, rtol = 1e-10, map_output = TRUE, ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Produce predictions from a kinetic model using specific parameters — mkinpredict","text":"x kinetic model produced mkinmod, kinetic fit fitted mkinfit. latter case, fitted parameters used prediction. odeparms numeric vector specifying parameters used kinetic model, generally defined set ordinary differential equations. odeini numeric vector containing initial values state variables model. Note state variables can differ observed variables, example case SFORB model. outtimes numeric vector specifying time points model predictions generated. ... arguments passed ode solver case solver used. solution_type method used producing predictions. generally \"analytical\" one observed variable, usually \"deSolve\" case several observed variables. third possibility \"eigen\" fast comparison uncompiled ODE models, applicable models, e.g. using FOMC parent compound. use_compiled set FALSE, compiled version mkinmod model used, even present. use_symbols set TRUE (default), symbol info present mkinmod object used available accessing compiled code method.ode solution method passed via mkinpredict deSolve::ode() case solution type \"deSolve\" using compiled code. using compiled code, lsoda supported. atol Absolute error tolerance, passed ode solver. rtol Absolute error tolerance, passed ode solver. maxsteps Maximum number steps, passed ode solver. map_output Boolean specify output list values observed variables (default) state variables (set FALSE). Setting FALSE effect analytical solutions, always return mapped output. na_stop error deSolve::ode() returns NaN values","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Produce predictions from a kinetic model using specific parameters — mkinpredict","text":"matrix numeric solution wide format","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Produce predictions from a kinetic model using specific parameters — mkinpredict","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Produce predictions from a kinetic model using specific parameters — mkinpredict","text":"","code":"SFO <- mkinmod(degradinol = mkinsub(\"SFO\")) # Compare solution types mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20, solution_type = \"analytical\") #> time degradinol #> 0 0 100.0000000 #> 1 1 74.0818221 #> 2 2 54.8811636 #> 3 3 40.6569660 #> 4 4 30.1194212 #> 5 5 22.3130160 #> 6 6 16.5298888 #> 7 7 12.2456428 #> 8 8 9.0717953 #> 9 9 6.7205513 #> 10 10 4.9787068 #> 11 11 3.6883167 #> 12 12 2.7323722 #> 13 13 2.0241911 #> 14 14 1.4995577 #> 15 15 1.1108997 #> 16 16 0.8229747 #> 17 17 0.6096747 #> 18 18 0.4516581 #> 19 19 0.3345965 #> 20 20 0.2478752 mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20, solution_type = \"deSolve\") #> time degradinol #> 0 0 100.0000000 #> 1 1 74.0818221 #> 2 2 54.8811636 #> 3 3 40.6569660 #> 4 4 30.1194212 #> 5 5 22.3130160 #> 6 6 16.5298888 #> 7 7 12.2456428 #> 8 8 9.0717953 #> 9 9 6.7205513 #> 10 10 4.9787068 #> 11 11 3.6883167 #> 12 12 2.7323722 #> 13 13 2.0241911 #> 14 14 1.4995577 #> 15 15 1.1108996 #> 16 16 0.8229747 #> 17 17 0.6096747 #> 18 18 0.4516581 #> 19 19 0.3345965 #> 20 20 0.2478752 mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20, solution_type = \"deSolve\", use_compiled = FALSE) #> time degradinol #> 0 0 100.0000000 #> 1 1 74.0818221 #> 2 2 54.8811636 #> 3 3 40.6569660 #> 4 4 30.1194212 #> 5 5 22.3130160 #> 6 6 16.5298888 #> 7 7 12.2456428 #> 8 8 9.0717953 #> 9 9 6.7205513 #> 10 10 4.9787068 #> 11 11 3.6883167 #> 12 12 2.7323722 #> 13 13 2.0241911 #> 14 14 1.4995577 #> 15 15 1.1108996 #> 16 16 0.8229747 #> 17 17 0.6096747 #> 18 18 0.4516581 #> 19 19 0.3345965 #> 20 20 0.2478752 mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20, solution_type = \"eigen\") #> time degradinol #> 0 0 100.0000000 #> 1 1 74.0818221 #> 2 2 54.8811636 #> 3 3 40.6569660 #> 4 4 30.1194212 #> 5 5 22.3130160 #> 6 6 16.5298888 #> 7 7 12.2456428 #> 8 8 9.0717953 #> 9 9 6.7205513 #> 10 10 4.9787068 #> 11 11 3.6883167 #> 12 12 2.7323722 #> 13 13 2.0241911 #> 14 14 1.4995577 #> 15 15 1.1108997 #> 16 16 0.8229747 #> 17 17 0.6096747 #> 18 18 0.4516581 #> 19 19 0.3345965 #> 20 20 0.2478752 # Compare integration methods to analytical solution mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20, solution_type = \"analytical\")[21,] #> time degradinol #> 20.0000000 0.2478752 mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20, method = \"lsoda\", use_compiled = FALSE)[21,] #> time degradinol #> 20.0000000 0.2478752 mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20, method = \"ode45\", use_compiled = FALSE)[21,] #> time degradinol #> 20.0000000 0.2478752 mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), 0:20, method = \"rk4\", use_compiled = FALSE)[21,] #> time degradinol #> 20.0000000 0.2480043 # rk4 is not as precise here # The number of output times used to make a lot of difference until the # default for atol was adjusted mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), seq(0, 20, by = 0.1))[201,] #> time degradinol #> 20.0000000 0.2478752 mkinpredict(SFO, c(k_degradinol = 0.3), c(degradinol = 100), seq(0, 20, by = 0.01))[2001,] #> time degradinol #> 20.0000000 0.2478752 # Comparison of the performance of solution types SFO_SFO = mkinmod(parent = list(type = \"SFO\", to = \"m1\"), m1 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded if(require(rbenchmark)) { benchmark(replications = 10, order = \"relative\", columns = c(\"test\", \"relative\", \"elapsed\"), eigen = mkinpredict(SFO_SFO, c(k_parent = 0.15, f_parent_to_m1 = 0.5, k_m1 = 0.01), c(parent = 100, m1 = 0), seq(0, 20, by = 0.1), solution_type = \"eigen\")[201,], deSolve_compiled = mkinpredict(SFO_SFO, c(k_parent = 0.15, f_parent_to_m1 = 0.5, k_m1 = 0.01), c(parent = 100, m1 = 0), seq(0, 20, by = 0.1), solution_type = \"deSolve\")[201,], deSolve = mkinpredict(SFO_SFO, c(k_parent = 0.15, f_parent_to_m1 = 0.5, k_m1 = 0.01), c(parent = 100, m1 = 0), seq(0, 20, by = 0.1), solution_type = \"deSolve\", use_compiled = FALSE)[201,], analytical = mkinpredict(SFO_SFO, c(k_parent = 0.15, f_parent_to_m1 = 0.5, k_m1 = 0.01), c(parent = 100, m1 = 0), seq(0, 20, by = 0.1), solution_type = \"analytical\", use_compiled = FALSE)[201,]) } #> test relative elapsed #> 2 deSolve_compiled 1.0 0.002 #> 4 analytical 1.0 0.002 #> 1 eigen 4.0 0.008 #> 3 deSolve 30.5 0.061 # \\dontrun{ # Predict from a fitted model f <- mkinfit(SFO_SFO, FOCUS_2006_C, quiet = TRUE) f <- mkinfit(SFO_SFO, FOCUS_2006_C, quiet = TRUE, solution_type = \"deSolve\") head(mkinpredict(f)) #> Error in !is.null(x$symbols) & use_symbols: operations are possible only for numeric, logical or complex types # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinresplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Function to plot residuals stored in an mkin object — mkinresplot","title":"Function to plot residuals stored in an mkin object — mkinresplot","text":"function plots residuals specified subset observed variables mkinfit object. combined plot fitted model residuals can obtained using plot.mkinfit using argument show_residuals = TRUE.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinresplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function to plot residuals stored in an mkin object — mkinresplot","text":"","code":"mkinresplot( object, obs_vars = names(object$mkinmod$map), xlim = c(0, 1.1 * max(object$data$time)), standardized = FALSE, xlab = \"Time\", ylab = ifelse(standardized, \"Standardized residual\", \"Residual\"), maxabs = \"auto\", legend = TRUE, lpos = \"topright\", col_obs = \"auto\", pch_obs = \"auto\", frame = TRUE, ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinresplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function to plot residuals stored in an mkin object — mkinresplot","text":"object fit represented mkinfit object. obs_vars character vector names observed variables residuals plotted. Defaults observed variables model xlim plot range x direction. standardized residuals standardized dividing standard deviation given error model fit? xlab Label x axis. ylab Label y axis. maxabs Maximum absolute value residuals. used scaling y axis defaults \"auto\". legend legend plotted? lpos legend placed? Default \"topright\". passed legend. col_obs Colors observed variables. pch_obs Symbols used observed variables. frame frame drawn around plots? ... arguments passed plot.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinresplot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function to plot residuals stored in an mkin object — mkinresplot","text":"Nothing returned function, called side effect, namely produce plot.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinresplot.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Function to plot residuals stored in an mkin object — mkinresplot","text":"Johannes Ranke Katrin Lindenberger","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mkinresplot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Function to plot residuals stored in an mkin object — mkinresplot","text":"","code":"model <- mkinmod(parent = mkinsub(\"SFO\", \"m1\"), m1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded fit <- mkinfit(model, FOCUS_2006_D, quiet = TRUE) #> Warning: Observations with value of zero were removed from the data mkinresplot(fit, \"m1\")"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin","title":"Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin","text":"function calls mkinfit combinations models datasets specified first two arguments.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin","text":"","code":"mmkin( models = c(\"SFO\", \"FOMC\", \"DFOP\"), datasets, cores = if (Sys.info()[\"sysname\"] == \"Windows\") 1 else parallel::detectCores(), cluster = NULL, ... ) # S3 method for class 'mmkin' print(x, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin","text":"models Either character vector shorthand names like c(\"SFO\", \"FOMC\", \"DFOP\", \"HS\", \"SFORB\"), optionally named list mkinmod objects. datasets optionally named list datasets suitable observed data mkinfit. cores number cores used multicore processing. used cluster argument NULL. Windows machines, cores > 1 supported, need use cluster argument use multiple logical processors. Per default, cores detected parallel::detectCores() used, except Windows default 1. cluster cluster returned makeCluster used parallel execution. ... used. x mmkin object.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin","text":"two-dimensional array mkinfit objects /try-errors can indexed using model names first index (row index) dataset names second index (column index).","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Fit one or more kinetic models with one or more state variables to one or more datasets — mmkin","text":"","code":"# \\dontrun{ m_synth_SFO_lin <- mkinmod(parent = mkinsub(\"SFO\", \"M1\"), M1 = mkinsub(\"SFO\", \"M2\"), M2 = mkinsub(\"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded m_synth_FOMC_lin <- mkinmod(parent = mkinsub(\"FOMC\", \"M1\"), M1 = mkinsub(\"SFO\", \"M2\"), M2 = mkinsub(\"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded models <- list(SFO_lin = m_synth_SFO_lin, FOMC_lin = m_synth_FOMC_lin) datasets <- lapply(synthetic_data_for_UBA_2014[1:3], function(x) x$data) names(datasets) <- paste(\"Dataset\", 1:3) time_default <- system.time(fits.0 <- mmkin(models, datasets, quiet = TRUE)) time_1 <- system.time(fits.4 <- mmkin(models, datasets, cores = 1, quiet = TRUE)) time_default #> user system elapsed #> 1.522 0.957 0.720 time_1 #> user system elapsed #> 1.991 0.024 2.015 endpoints(fits.0[[\"SFO_lin\", 2]]) #> $ff #> parent_M1 parent_sink M1_M2 M1_sink #> 0.7340481 0.2659519 0.7505690 0.2494310 #> #> $distimes #> DT50 DT90 #> parent 0.8777689 2.915885 #> M1 2.3257403 7.725942 #> M2 33.7201060 112.015767 #> # plot.mkinfit handles rows or columns of mmkin result objects plot(fits.0[1, ]) plot(fits.0[1, ], obs_var = c(\"M1\", \"M2\")) plot(fits.0[, 1]) # Use double brackets to extract a single mkinfit object, which will be plotted # by plot.mkinfit and can be plotted using plot_sep plot(fits.0[[1, 1]], sep_obs = TRUE, show_residuals = TRUE, show_errmin = TRUE) plot_sep(fits.0[[1, 1]]) # Plotting with mmkin (single brackets, extracting an mmkin object) does not # allow to plot the observed variables separately plot(fits.0[1, 1]) # On Windows, we can use multiple cores by making a cluster first cl <- parallel::makePSOCKcluster(12) f <- mmkin(c(\"SFO\", \"FOMC\", \"DFOP\"), list(A = FOCUS_2006_A, B = FOCUS_2006_B, C = FOCUS_2006_C, D = FOCUS_2006_D), cluster = cl, quiet = TRUE) print(f) #> <mmkin> object #> Status of individual fits: #> #> dataset #> model A B C D #> SFO OK OK OK OK #> FOMC C OK OK OK #> DFOP OK OK OK OK #> #> C: Optimisation did not converge: #> false convergence (8) #> OK: No warnings # We get false convergence for the FOMC fit to FOCUS_2006_A because this # dataset is really SFO, and the FOMC fit is overparameterised parallel::stopCluster(cl) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html","id":null,"dir":"Reference","previous_headings":"","what":"Perform a hierarchical model fit with multiple starting values — multistart","title":"Perform a hierarchical model fit with multiple starting values — multistart","text":"purpose method check certain algorithm fitting nonlinear hierarchical models (also known nonlinear mixed-effects models) reliably yield results sufficiently similar , started certain range reasonable starting parameters. inspired article practical identifiabiliy frame nonlinear mixed-effects models Duchesne et al (2021).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Perform a hierarchical model fit with multiple starting values — multistart","text":"","code":"multistart( object, n = 50, cores = if (Sys.info()[\"sysname\"] == \"Windows\") 1 else parallel::detectCores(), cluster = NULL, ... ) # S3 method for class 'saem.mmkin' multistart(object, n = 50, cores = 1, cluster = NULL, ...) # S3 method for class 'multistart' print(x, ...) best(object, ...) # Default S3 method best(object, ...) which.best(object, ...) # Default S3 method which.best(object, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Perform a hierarchical model fit with multiple starting values — multistart","text":"object fit object work n many different combinations starting parameters used? cores many fits run parallel (posix platforms)? cluster cluster returned parallel::makeCluster used parallel execution. ... Passed update function. x multistart object print","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Perform a hierarchical model fit with multiple starting values — multistart","text":"list saem.mmkin objects, class attributes 'multistart.saem.mmkin' 'multistart'. object highest likelihood index object highest likelihood","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Perform a hierarchical model fit with multiple starting values — multistart","text":"Duchesne R, Guillemin , Gandrillon O, Crauste F. Practical identifiability frame nonlinear mixed effects models: example vitro erythropoiesis. BMC Bioinformatics. 2021 Oct 4;22(1):478. doi: 10.1186/s12859-021-04373-4.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Perform a hierarchical model fit with multiple starting values — multistart","text":"","code":"# \\dontrun{ library(mkin) dmta_ds <- lapply(1:7, function(i) { ds_i <- dimethenamid_2018$ds[[i]]$data ds_i[ds_i$name == \"DMTAP\", \"name\"] <- \"DMTA\" ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i] ds_i }) names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title) dmta_ds[[\"Elliot\"]] <- rbind(dmta_ds[[\"Elliot 1\"]], dmta_ds[[\"Elliot 2\"]]) dmta_ds[[\"Elliot 1\"]] <- dmta_ds[[\"Elliot 2\"]] <- NULL f_mmkin <- mmkin(\"DFOP\", dmta_ds, error_model = \"tc\", cores = 7, quiet = TRUE) f_saem_full <- saem(f_mmkin) f_saem_full_multi <- multistart(f_saem_full, n = 16, cores = 16) parplot(f_saem_full_multi, lpos = \"topleft\", las = 2) illparms(f_saem_full) #> [1] \"sd(log_k2)\" f_saem_reduced <- update(f_saem_full, no_random_effect = \"log_k2\") illparms(f_saem_reduced) # On Windows, we need to create a PSOCK cluster first and refer to it # in the call to multistart() library(parallel) cl <- makePSOCKcluster(12) f_saem_reduced_multi <- multistart(f_saem_reduced, n = 16, cluster = cl) parplot(f_saem_reduced_multi, lpos = \"topright\", ylim = c(0.5, 2), las = 2) stopCluster(cl) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html","id":null,"dir":"Reference","previous_headings":"","what":"Evaluate parent kinetics using the NAFTA guidance — nafta","title":"Evaluate parent kinetics using the NAFTA guidance — nafta","text":"function fits SFO, IORE DFOP models using mmkin returns object class nafta methods printing plotting. Print nafta objects. results three models printed order increasing model complexity, .e. SFO, IORE, finally DFOP.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Evaluate parent kinetics using the NAFTA guidance — nafta","text":"","code":"nafta(ds, title = NA, quiet = FALSE, ...) # S3 method for class 'nafta' print(x, quiet = TRUE, digits = 3, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Evaluate parent kinetics using the NAFTA guidance — nafta","text":"NAFTA (2011) Guidance evaluating calculating degradation kinetics environmental media. NAFTA Technical Working Group Pesticides https://www.epa.gov/pesticide-science--assessing-pesticide-risks/guidance-evaluating--calculating-degradation accessed 2019-02-22 US EPA (2015) Standard Operating Procedure Using NAFTA Guidance Calculate Representative Half-life Values Characterizing Pesticide Degradation https://www.epa.gov/pesticide-science--assessing-pesticide-risks/standard-operating-procedure-using-nafta-guidance","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Evaluate parent kinetics using the NAFTA guidance — nafta","text":"ds dataframe must contain one variable called \"time\" time values specified time argument, one column called \"name\" grouping observed values, finally one column observed values called \"value\". title Optional title dataset quiet evaluation text shown? ... arguments passed mmkin (printing method). x nafta object. digits Number digits used printing parameters dissipation times.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Evaluate parent kinetics using the NAFTA guidance — nafta","text":"list class nafta. list element named \"mmkin\" mmkin object containing fits three models. list element named \"title\" contains title dataset used. list element \"data\" contains dataset used fits.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Evaluate parent kinetics using the NAFTA guidance — nafta","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Evaluate parent kinetics using the NAFTA guidance — nafta","text":"","code":"nafta_evaluation <- nafta(NAFTA_SOP_Appendix_D, cores = 1) #> The SFO model is rejected as S_SFO is equal or higher than the critical value S_c #> The representative half-life of the IORE model is longer than the one corresponding #> to the terminal degradation rate found with the DFOP model. #> The representative half-life obtained from the DFOP model may be used print(nafta_evaluation) #> Sums of squares: #> SFO IORE DFOP #> 1378.6832 615.7730 517.8836 #> #> Critical sum of squares for checking the SFO model: #> [1] 717.4598 #> #> Parameters: #> $SFO #> Estimate Pr(>t) Lower Upper #> parent_0 83.7558 1.80e-14 77.18268 90.3288 #> k_parent 0.0017 7.43e-05 0.00112 0.0026 #> sigma 8.7518 1.22e-05 5.64278 11.8608 #> #> $IORE #> Estimate Pr(>t) Lower Upper #> parent_0 9.69e+01 NA 8.88e+01 1.05e+02 #> k__iore_parent 8.40e-14 NA 1.79e-18 3.94e-09 #> N_parent 6.68e+00 NA 4.19e+00 9.17e+00 #> sigma 5.85e+00 NA 3.76e+00 7.94e+00 #> #> $DFOP #> Estimate Pr(>t) Lower Upper #> parent_0 9.76e+01 1.94e-13 9.02e+01 1.05e+02 #> k1 4.24e-02 5.92e-03 2.03e-02 8.88e-02 #> k2 8.24e-04 6.48e-03 3.89e-04 1.75e-03 #> g 2.88e-01 2.47e-05 1.95e-01 4.03e-01 #> sigma 5.36e+00 2.22e-05 3.43e+00 7.30e+00 #> #> #> DTx values: #> DT50 DT90 DT50_rep #> SFO 407 1350 407 #> IORE 541 5190000 1560000 #> DFOP 429 2380 841 #> #> Representative half-life: #> [1] 841.41 plot(nafta_evaluation)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.html","id":null,"dir":"Reference","previous_headings":"","what":"Helper functions to create nlme models from mmkin row objects — nlme_function","title":"Helper functions to create nlme models from mmkin row objects — nlme_function","text":"functions facilitate setting nonlinear mixed effects model mmkin row object. mmkin row object essentially list mkinfit objects obtained fitting model list datasets. used internally nlme.mmkin() method.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Helper functions to create nlme models from mmkin row objects — nlme_function","text":"","code":"nlme_function(object) nlme_data(object)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Helper functions to create nlme models from mmkin row objects — nlme_function","text":"object mmkin row object containing several fits model different datasets","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Helper functions to create nlme models from mmkin row objects — nlme_function","text":"function can used nlme nlme::groupedData object","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Helper functions to create nlme models from mmkin row objects — nlme_function","text":"","code":"sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) m_SFO <- mkinmod(parent = mkinsub(\"SFO\")) d_SFO_1 <- mkinpredict(m_SFO, c(k_parent = 0.1), c(parent = 98), sampling_times) d_SFO_1_long <- mkin_wide_to_long(d_SFO_1, time = \"time\") d_SFO_2 <- mkinpredict(m_SFO, c(k_parent = 0.05), c(parent = 102), sampling_times) d_SFO_2_long <- mkin_wide_to_long(d_SFO_2, time = \"time\") d_SFO_3 <- mkinpredict(m_SFO, c(k_parent = 0.02), c(parent = 103), sampling_times) d_SFO_3_long <- mkin_wide_to_long(d_SFO_3, time = \"time\") d1 <- add_err(d_SFO_1, function(value) 3, n = 1) d2 <- add_err(d_SFO_2, function(value) 2, n = 1) d3 <- add_err(d_SFO_3, function(value) 4, n = 1) ds <- c(d1 = d1, d2 = d2, d3 = d3) f <- mmkin(\"SFO\", ds, cores = 1, quiet = TRUE) mean_dp <- mean_degparms(f) grouped_data <- nlme_data(f) nlme_f <- nlme_function(f) # These assignments are necessary for these objects to be # visible to nlme and augPred when evaluation is done by # pkgdown to generate the html docs. assign(\"nlme_f\", nlme_f, globalenv()) assign(\"grouped_data\", grouped_data, globalenv()) library(nlme) m_nlme <- nlme(value ~ nlme_f(name, time, parent_0, log_k_parent_sink), data = grouped_data, fixed = parent_0 + log_k_parent_sink ~ 1, random = pdDiag(parent_0 + log_k_parent_sink ~ 1), start = mean_dp) summary(m_nlme) #> Nonlinear mixed-effects model fit by maximum likelihood #> Model: value ~ nlme_f(name, time, parent_0, log_k_parent_sink) #> Data: grouped_data #> AIC BIC logLik #> 266.6428 275.8935 -128.3214 #> #> Random effects: #> Formula: list(parent_0 ~ 1, log_k_parent_sink ~ 1) #> Level: ds #> Structure: Diagonal #> parent_0 log_k_parent_sink Residual #> StdDev: 0.0003775775 0.7058039 3.065183 #> #> Fixed effects: parent_0 + log_k_parent_sink ~ 1 #> Value Std.Error DF t-value p-value #> parent_0 101.18323 0.7900461 43 128.07257 0 #> log_k_parent_sink -3.08708 0.4171755 43 -7.39995 0 #> Correlation: #> prnt_0 #> log_k_parent_sink 0.031 #> #> Standardized Within-Group Residuals: #> Min Q1 Med Q3 Max #> -2.38427070 -0.52059848 0.03593021 0.39987268 2.73188969 #> #> Number of Observations: 47 #> Number of Groups: 3 plot(augPred(m_nlme, level = 0:1), layout = c(3, 1)) # augPred does not work on fits with more than one state # variable # # The procedure is greatly simplified by the nlme.mmkin function f_nlme <- nlme(f) plot(f_nlme)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an nlme model for an mmkin row object — nlme.mmkin","title":"Create an nlme model for an mmkin row object — nlme.mmkin","text":"functions sets nonlinear mixed effects model mmkin row object. mmkin row object essentially list mkinfit objects obtained fitting model list datasets.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an nlme model for an mmkin row object — nlme.mmkin","text":"","code":"# S3 method for class 'mmkin' nlme( model, data = \"auto\", fixed = lapply(as.list(names(mean_degparms(model))), function(el) eval(parse(text = paste(el, 1, sep = \"~\")))), random = pdDiag(fixed), groups, start = mean_degparms(model, random = TRUE, test_log_parms = TRUE), correlation = NULL, weights = NULL, subset, method = c(\"ML\", \"REML\"), na.action = na.fail, naPattern, control = list(), verbose = FALSE ) # S3 method for class 'nlme.mmkin' print(x, digits = max(3, getOption(\"digits\") - 3), ...) # S3 method for class 'nlme.mmkin' update(object, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an nlme model for an mmkin row object — nlme.mmkin","text":"model mmkin row object. data Ignored, data taken mmkin model fixed Ignored, degradation parameters fitted mmkin model used fixed parameters random specified, correlations random effects set optimised degradation model parameters. achieved using nlme::pdDiag method. groups See documentation nlme start specified, mean values fitted degradation parameters taken mmkin object used correlation See documentation nlme weights passed nlme subset passed nlme method passed nlme na.action passed nlme naPattern passed nlme control passed nlme verbose passed nlme x nlme.mmkin object print digits Number digits use printing ... Update specifications passed update.nlme object nlme.mmkin object update","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an nlme model for an mmkin row object — nlme.mmkin","text":"Upon success, fitted 'nlme.mmkin' object, nlme object additional elements. also inherits 'mixed.mmkin'.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create an nlme model for an mmkin row object — nlme.mmkin","text":"Note convergence nlme algorithms depends quality data. degradation kinetics, often datasets (e.g. data soils) complicated degradation models, may make impossible obtain convergence nlme.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Create an nlme model for an mmkin row object — nlme.mmkin","text":"object inherits nlme::nlme, wealth methods automatically work 'nlme.mmkin' objects, nlme::intervals(), nlme::anova.lme() nlme::coef.lme().","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an nlme model for an mmkin row object — nlme.mmkin","text":"","code":"ds <- lapply(experimental_data_for_UBA_2019[6:10], function(x) subset(x$data[c(\"name\", \"time\", \"value\")], name == \"parent\")) # \\dontrun{ f <- mmkin(c(\"SFO\", \"DFOP\"), ds, quiet = TRUE, cores = 1) library(nlme) f_nlme_sfo <- nlme(f[\"SFO\", ]) f_nlme_dfop <- nlme(f[\"DFOP\", ]) anova(f_nlme_sfo, f_nlme_dfop) #> Model df AIC BIC logLik Test L.Ratio p-value #> f_nlme_sfo 1 5 625.0539 637.5529 -307.5269 #> f_nlme_dfop 2 9 495.1270 517.6253 -238.5635 1 vs 2 137.9269 <.0001 print(f_nlme_dfop) #> Kinetic nonlinear mixed-effects model fit by maximum likelihood #> #> Structural model: #> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * #> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) #> * parent #> #> Data: #> 90 observations of 1 variable(s) grouped in 5 datasets #> #> Log-likelihood: -238.6 #> #> Fixed effects: #> list(parent_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1) #> parent_0 log_k1 log_k2 g_qlogis #> 94.1702 -1.8002 -4.1474 0.0324 #> #> Random effects: #> Formula: list(parent_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1) #> Level: ds #> Structure: Diagonal #> parent_0 log_k1 log_k2 g_qlogis Residual #> StdDev: 2.488 0.8447 1.33 0.4652 2.321 #> plot(f_nlme_dfop) endpoints(f_nlme_dfop) #> $distimes #> DT50 DT90 DT50back DT50_k1 DT50_k2 #> parent 10.79857 100.7937 30.34192 4.193937 43.85442 #> ds_2 <- lapply(experimental_data_for_UBA_2019[6:10], function(x) x$data[c(\"name\", \"time\", \"value\")]) m_sfo_sfo <- mkinmod(parent = mkinsub(\"SFO\", \"A1\"), A1 = mkinsub(\"SFO\"), use_of_ff = \"min\", quiet = TRUE) m_sfo_sfo_ff <- mkinmod(parent = mkinsub(\"SFO\", \"A1\"), A1 = mkinsub(\"SFO\"), use_of_ff = \"max\", quiet = TRUE) m_dfop_sfo <- mkinmod(parent = mkinsub(\"DFOP\", \"A1\"), A1 = mkinsub(\"SFO\"), quiet = TRUE) f_2 <- mmkin(list(\"SFO-SFO\" = m_sfo_sfo, \"SFO-SFO-ff\" = m_sfo_sfo_ff, \"DFOP-SFO\" = m_dfop_sfo), ds_2, quiet = TRUE) f_nlme_sfo_sfo <- nlme(f_2[\"SFO-SFO\", ]) plot(f_nlme_sfo_sfo) # With formation fractions this does not coverge with defaults # f_nlme_sfo_sfo_ff <- nlme(f_2[\"SFO-SFO-ff\", ]) #plot(f_nlme_sfo_sfo_ff) # For the following, we need to increase pnlsMaxIter and the tolerance # to get convergence f_nlme_dfop_sfo <- nlme(f_2[\"DFOP-SFO\", ], control = list(pnlsMaxIter = 120, tolerance = 5e-4)) plot(f_nlme_dfop_sfo) anova(f_nlme_dfop_sfo, f_nlme_sfo_sfo) #> Model df AIC BIC logLik Test L.Ratio p-value #> f_nlme_dfop_sfo 1 13 843.8547 884.620 -408.9273 #> f_nlme_sfo_sfo 2 9 1085.1821 1113.404 -533.5910 1 vs 2 249.3274 <.0001 endpoints(f_nlme_sfo_sfo) #> $ff #> parent_sink parent_A1 A1_sink #> 0.5912432 0.4087568 1.0000000 #> #> $distimes #> DT50 DT90 #> parent 19.13518 63.5657 #> A1 66.02155 219.3189 #> endpoints(f_nlme_dfop_sfo) #> $ff #> parent_A1 parent_sink #> 0.2768574 0.7231426 #> #> $distimes #> DT50 DT90 DT50back DT50_k1 DT50_k2 #> parent 11.07091 104.6320 31.49737 4.462383 46.20825 #> A1 162.30550 539.1672 NA NA NA #> if (length(findFunction(\"varConstProp\")) > 0) { # tc error model for nlme available # Attempts to fit metabolite kinetics with the tc error model are possible, # but need tweeking of control values and sometimes do not converge f_tc <- mmkin(c(\"SFO\", \"DFOP\"), ds, quiet = TRUE, error_model = \"tc\") f_nlme_sfo_tc <- nlme(f_tc[\"SFO\", ]) f_nlme_dfop_tc <- nlme(f_tc[\"DFOP\", ]) AIC(f_nlme_sfo, f_nlme_sfo_tc, f_nlme_dfop, f_nlme_dfop_tc) print(f_nlme_dfop_tc) } #> Kinetic nonlinear mixed-effects model fit by maximum likelihood #> #> Structural model: #> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * #> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) #> * parent #> #> Data: #> 90 observations of 1 variable(s) grouped in 5 datasets #> #> Log-likelihood: -238.4 #> #> Fixed effects: #> list(parent_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1) #> parent_0 log_k1 log_k2 g_qlogis #> 94.04774 -1.82340 -4.16716 0.05685 #> #> Random effects: #> Formula: list(parent_0 ~ 1, log_k1 ~ 1, log_k2 ~ 1, g_qlogis ~ 1) #> Level: ds #> Structure: Diagonal #> parent_0 log_k1 log_k2 g_qlogis Residual #> StdDev: 2.474 0.85 1.337 0.4659 1 #> #> Variance function: #> Structure: Constant plus proportion of variance covariate #> Formula: ~fitted(.) #> Parameter estimates: #> const prop #> 2.23222933 0.01262399 f_2_obs <- update(f_2, error_model = \"obs\") f_nlme_sfo_sfo_obs <- nlme(f_2_obs[\"SFO-SFO\", ]) print(f_nlme_sfo_sfo_obs) #> Kinetic nonlinear mixed-effects model fit by maximum likelihood #> #> Structural model: #> d_parent/dt = - k_parent_sink * parent - k_parent_A1 * parent #> d_A1/dt = + k_parent_A1 * parent - k_A1_sink * A1 #> #> Data: #> 170 observations of 2 variable(s) grouped in 5 datasets #> #> Log-likelihood: -473 #> #> Fixed effects: #> list(parent_0 ~ 1, log_k_parent_sink ~ 1, log_k_parent_A1 ~ 1, log_k_A1_sink ~ 1) #> parent_0 log_k_parent_sink log_k_parent_A1 log_k_A1_sink #> 87.976 -3.670 -4.164 -4.645 #> #> Random effects: #> Formula: list(parent_0 ~ 1, log_k_parent_sink ~ 1, log_k_parent_A1 ~ 1, log_k_A1_sink ~ 1) #> Level: ds #> Structure: Diagonal #> parent_0 log_k_parent_sink log_k_parent_A1 log_k_A1_sink Residual #> StdDev: 3.992 1.777 1.055 0.4821 6.483 #> #> Variance function: #> Structure: Different standard deviations per stratum #> Formula: ~1 | name #> Parameter estimates: #> parent A1 #> 1.0000000 0.2050005 f_nlme_dfop_sfo_obs <- nlme(f_2_obs[\"DFOP-SFO\", ], control = list(pnlsMaxIter = 120, tolerance = 5e-4)) f_2_tc <- update(f_2, error_model = \"tc\") # f_nlme_sfo_sfo_tc <- nlme(f_2_tc[\"SFO-SFO\", ]) # No convergence with 50 iterations # f_nlme_dfop_sfo_tc <- nlme(f_2_tc[\"DFOP-SFO\", ], # control = list(pnlsMaxIter = 120, tolerance = 5e-4)) # Error in X[, fmap[[nm]]] <- gradnm anova(f_nlme_dfop_sfo, f_nlme_dfop_sfo_obs) #> Model df AIC BIC logLik Test L.Ratio p-value #> f_nlme_dfop_sfo 1 13 843.8547 884.620 -408.9273 #> f_nlme_dfop_sfo_obs 2 14 817.5338 861.435 -394.7669 1 vs 2 28.32084 <.0001 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nobs.mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Number of observations on which an mkinfit object was fitted — nobs.mkinfit","title":"Number of observations on which an mkinfit object was fitted — nobs.mkinfit","text":"Number observations mkinfit object fitted","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nobs.mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Number of observations on which an mkinfit object was fitted — nobs.mkinfit","text":"","code":"# S3 method for class 'mkinfit' nobs(object, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nobs.mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Number of observations on which an mkinfit object was fitted — nobs.mkinfit","text":"object mkinfit object ... compatibility generic method","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/nobs.mkinfit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Number of observations on which an mkinfit object was fitted — nobs.mkinfit","text":"number rows data included mkinfit object","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parms.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract model parameters — parms","title":"Extract model parameters — parms","text":"function returns degradation model parameters well error model parameters per default, order avoid working fitted model without considering error structure assumed fit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract model parameters — parms","text":"","code":"parms(object, ...) # S3 method for class 'mkinfit' parms(object, transformed = FALSE, errparms = TRUE, ...) # S3 method for class 'mmkin' parms(object, transformed = FALSE, errparms = TRUE, ...) # S3 method for class 'multistart' parms(object, exclude_failed = TRUE, ...) # S3 method for class 'saem.mmkin' parms(object, ci = FALSE, covariates = NULL, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract model parameters — parms","text":"object fitted model object. ... used transformed parameters returned used internally optimisation? errparms error model parameters returned addition degradation parameters? exclude_failed multistart objects, rows failed fits removed returned parameter matrix? ci matrix estimates confidence interval boundaries returned? FALSE (default), vector estimates returned covariates given, otherwise matrix estimates returned, column corresponding row data frame holding covariates covariates data frame holding covariate values return parameter values. effect 'ci' FALSE.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parms.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract model parameters — parms","text":"Depending object, numeric vector fitted model parameters, matrix (e.g. mmkin row objects), list matrices (e.g. mmkin objects one row).","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Extract model parameters — parms","text":"","code":"# mkinfit objects fit <- mkinfit(\"SFO\", FOCUS_2006_C, quiet = TRUE) parms(fit) #> parent_0 k_parent sigma #> 82.4921598 0.3060633 4.6730124 parms(fit, transformed = TRUE) #> parent_0 log_k_parent sigma #> 82.492160 -1.183963 4.673012 # mmkin objects ds <- lapply(experimental_data_for_UBA_2019[6:10], function(x) subset(x$data[c(\"name\", \"time\", \"value\")])) names(ds) <- paste(\"Dataset\", 6:10) # \\dontrun{ fits <- mmkin(c(\"SFO\", \"FOMC\", \"DFOP\"), ds, quiet = TRUE, cores = 1) parms(fits[\"SFO\", ]) #> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10 #> parent_0 88.52275400 82.666781678 86.8547308 91.7779306 82.14809450 #> k_parent 0.05794659 0.009647805 0.2102974 0.1232258 0.00720421 #> sigma 5.15274487 7.040168584 3.6769645 6.4669234 6.50457673 parms(fits[, 2]) #> $SFO #> Dataset 7 #> parent_0 82.666781678 #> k_parent 0.009647805 #> sigma 7.040168584 #> #> $FOMC #> Dataset 7 #> parent_0 92.6837649 #> alpha 0.4967832 #> beta 14.1451255 #> sigma 1.9167519 #> #> $DFOP #> Dataset 7 #> parent_0 91.058971584 #> k1 0.044946770 #> k2 0.002868336 #> g 0.526942414 #> sigma 2.221302196 #> parms(fits) #> $SFO #> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10 #> parent_0 88.52275400 82.666781678 86.8547308 91.7779306 82.14809450 #> k_parent 0.05794659 0.009647805 0.2102974 0.1232258 0.00720421 #> sigma 5.15274487 7.040168584 3.6769645 6.4669234 6.50457673 #> #> $FOMC #> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10 #> parent_0 95.558575 92.6837649 90.719787 98.383939 94.8481458 #> alpha 1.338667 0.4967832 1.639099 1.074460 0.2805272 #> beta 13.033315 14.1451255 5.007077 4.397126 6.9052224 #> sigma 1.847671 1.9167519 1.066063 3.146056 1.6222778 #> #> $DFOP #> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10 #> parent_0 96.55213663 91.058971584 90.34509493 98.14858820 94.311323735 #> k1 0.21954588 0.044946770 0.41232288 0.31697588 0.080663857 #> k2 0.02957934 0.002868336 0.07581766 0.03260384 0.003425417 #> g 0.44845068 0.526942414 0.66091967 0.65322767 0.342652880 #> sigma 1.35690468 2.221302196 1.34169076 2.87159846 1.942067831 #> parms(fits, transformed = TRUE) #> $SFO #> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10 #> parent_0 88.522754 82.666782 86.854731 91.777931 82.148095 #> log_k_parent -2.848234 -4.641025 -1.559232 -2.093737 -4.933090 #> sigma 5.152745 7.040169 3.676964 6.466923 6.504577 #> #> $FOMC #> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10 #> parent_0 95.5585751 92.6837649 90.7197870 98.38393898 94.848146 #> log_alpha 0.2916741 -0.6996015 0.4941466 0.07181816 -1.271085 #> log_beta 2.5675088 2.6493701 1.6108523 1.48095106 1.932278 #> sigma 1.8476712 1.9167519 1.0660627 3.14605557 1.622278 #> #> $DFOP #> Dataset 6 Dataset 7 Dataset 8 Dataset 9 Dataset 10 #> parent_0 96.5521366 91.0589716 90.3450949 98.1485882 94.3113237 #> log_k1 -1.5161940 -3.1022764 -0.8859486 -1.1489296 -2.5174647 #> log_k2 -3.5206791 -5.8540232 -2.5794240 -3.4233253 -5.6765322 #> g_qlogis -0.2069326 0.1078741 0.6673953 0.6332573 -0.6514943 #> sigma 1.3569047 2.2213022 1.3416908 2.8715985 1.9420678 #> # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parplot.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot parameter variability of multistart objects — parplot","title":"Plot parameter variability of multistart objects — parplot","text":"Produces boxplot parameters multiple runs, scaled either parameters run highest likelihood, medians proposed paper Duchesne et al. (2021).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parplot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot parameter variability of multistart objects — parplot","text":"","code":"parplot(object, ...) # S3 method for class 'multistart.saem.mmkin' parplot( object, llmin = -Inf, llquant = NA, scale = c(\"best\", \"median\"), lpos = \"bottomleft\", main = \"\", ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parplot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot parameter variability of multistart objects — parplot","text":"object multistart object ... Passed boxplot llmin minimum likelihood objects shown llquant Fractional value selecting fits higher likelihoods. Overrides 'llmin'. scale default, scale parameters using best available fit. 'median', parameters scaled using median parameters fits. lpos Positioning legend. main Title plot","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parplot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot parameter variability of multistart objects — parplot","text":"Starting values degradation model parameters error model parameters shown green circles. results obtained original run shown red circles.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/parplot.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Plot parameter variability of multistart objects — parplot","text":"Duchesne R, Guillemin , Gandrillon O, Crauste F. Practical identifiability frame nonlinear mixed effects models: example vitro erythropoiesis. BMC Bioinformatics. 2021 Oct 4;22(1):478. doi: 10.1186/s12859-021-04373-4.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mixed.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin","title":"Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin","text":"Plot predictions fitted nonlinear mixed model obtained via mmkin row object","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mixed.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin","text":"","code":"# S3 method for class 'mixed.mmkin' plot( x, i = 1:ncol(x$mmkin), obs_vars = names(x$mkinmod$map), standardized = TRUE, covariates = NULL, covariate_quantiles = c(0.5, 0.05, 0.95), xlab = \"Time\", xlim = range(x$data$time), resplot = c(\"predicted\", \"time\"), pop_curves = \"auto\", pred_over = NULL, test_log_parms = FALSE, conf.level = 0.6, default_log_parms = NA, ymax = \"auto\", maxabs = \"auto\", ncol.legend = ifelse(length(i) <= 3, length(i) + 1, ifelse(length(i) <= 8, 3, 4)), nrow.legend = ceiling((length(i) + 1)/ncol.legend), rel.height.legend = 0.02 + 0.07 * nrow.legend, rel.height.bottom = 1.1, pch_ds = c(1:25, 33, 35:38, 40:41, 47:57, 60:90)[1:length(i)], col_ds = pch_ds + 1, lty_ds = col_ds, frame = TRUE, ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mixed.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin","text":"x object class mixed.mmkin, saem.mmkin nlme.mmkin numeric index select datasets plot individual predictions, case plots get large obs_vars character vector names observed variables data model plotted. Defauls observed variables model. standardized residuals standardized? takes effect resplot = \"time\". covariates Data frame covariate values variables covariate models object. given, overrides 'covariate_quantiles'. line data frame result line drawn population. Rownames used legend label lines. covariate_quantiles argument effect fitted object covariate models. , default show three population curves, 5th percentile, 50th percentile 95th percentile covariate values used fitting model. xlab Label x axis. xlim Plot range x direction. resplot residuals plotted time predicted values? pop_curves Per default, one population curve drawn case population parameters fitted model, e.g. saem objects. case covariate model, behaviour depends value 'covariates' pred_over Named list alternative predictions obtained mkinpredict compatible mkinmod. test_log_parms Passed mean_degparms case mixed.mmkin object conf.level Passed mean_degparms case mixed.mmkin object default_log_parms Passed mean_degparms case mixed.mmkin object ymax Vector maximum y axis values maxabs Maximum absolute value residuals. used scaling y axis defaults \"auto\". ncol.legend Number columns use legend nrow.legend Number rows use legend rel.height.legend relative height legend shown top rel.height.bottom relative height bottom plot row pch_ds Symbols used plotting data. col_ds Colors used plotting observed data corresponding model prediction lines different datasets. lty_ds Line types used model predictions. frame frame drawn around plots? ... arguments passed plot.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mixed.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin","text":"function called side effect.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mixed.mmkin.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin","text":"Covariate models currently supported saem.mmkin objects.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mixed.mmkin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mixed.mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot predictions from a fitted nonlinear mixed model obtained via an mmkin row object — plot.mixed.mmkin","text":"","code":"ds <- lapply(experimental_data_for_UBA_2019[6:10], function(x) x$data[c(\"name\", \"time\", \"value\")]) names(ds) <- paste0(\"ds \", 6:10) dfop_sfo <- mkinmod(parent = mkinsub(\"DFOP\", \"A1\"), A1 = mkinsub(\"SFO\"), quiet = TRUE) # \\dontrun{ f <- mmkin(list(\"DFOP-SFO\" = dfop_sfo), ds, quiet = TRUE) plot(f[, 3:4], standardized = TRUE) # For this fit we need to increase pnlsMaxiter, and we increase the # tolerance in order to speed up the fit for this example evaluation # It still takes 20 seconds to run f_nlme <- nlme(f, control = list(pnlsMaxIter = 120, tolerance = 1e-3)) plot(f_nlme) f_saem <- saem(f, transformations = \"saemix\") plot(f_saem) f_obs <- mmkin(list(\"DFOP-SFO\" = dfop_sfo), ds, quiet = TRUE, error_model = \"obs\") f_nlmix <- nlmix(f_obs) #> Error in nlmix(f_obs): could not find function \"nlmix\" plot(f_nlmix) #> Error: object 'f_nlmix' not found # We can overlay the two variants if we generate predictions pred_nlme <- mkinpredict(dfop_sfo, f_nlme$bparms.optim[-1], c(parent = f_nlme$bparms.optim[[1]], A1 = 0), seq(0, 180, by = 0.2)) plot(f_saem, pred_over = list(nlme = pred_nlme)) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit","title":"Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit","text":"Solves differential equations optimised fixed parameters previous successful call mkinfit plots observed data together solution fitted model.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit","text":"","code":"# S3 method for class 'mkinfit' plot( x, fit = x, obs_vars = names(fit$mkinmod$map), xlab = \"Time\", ylab = \"Residue\", xlim = range(fit$data$time), ylim = \"default\", col_obs = 1:length(obs_vars), pch_obs = col_obs, lty_obs = rep(1, length(obs_vars)), add = FALSE, legend = !add, show_residuals = FALSE, show_errplot = FALSE, maxabs = \"auto\", sep_obs = FALSE, rel.height.middle = 0.9, row_layout = FALSE, lpos = \"topright\", inset = c(0.05, 0.05), show_errmin = FALSE, errmin_digits = 3, frame = TRUE, ... ) plot_sep( fit, show_errmin = TRUE, show_residuals = ifelse(identical(fit$err_mod, \"const\"), TRUE, \"standardized\"), ... ) plot_res( fit, sep_obs = FALSE, show_errmin = sep_obs, standardized = ifelse(identical(fit$err_mod, \"const\"), FALSE, TRUE), ... ) plot_err(fit, sep_obs = FALSE, show_errmin = sep_obs, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit","text":"x Alias fit introduced compatibility generic S3 method. fit object class mkinfit. obs_vars character vector names observed variables data model plotted. Defauls observed variables model. xlab Label x axis. ylab Label y axis. xlim Plot range x direction. ylim Plot range y direction. given list, plot ranges different plot rows can given row layout. col_obs Colors used plotting observed data corresponding model prediction lines. pch_obs Symbols used plotting data. lty_obs Line types used model predictions. add plot added existing plot? legend legend added plot? show_residuals residuals shown? one plot fits shown, residual plot lower third plot. Otherwise, .e. \"sep_obs\" given, residual plots located right plots fitted curves. set 'standardized', plot residuals divided standard deviation given fitted error model shown. show_errplot squared residuals error model shown? one plot fits shown, plot lower third plot. Otherwise, .e. \"sep_obs\" given, residual plots located right plots fitted curves. maxabs Maximum absolute value residuals. used scaling y axis defaults \"auto\". sep_obs observed variables shown separate subplots? yes, residual plots requested \"show_residuals\" shown next , plot fits. rel.height.middle relative height middle plot, two rows plots shown. row_layout use row layout residual plot error model plot shown right? lpos Position(s) legend(s). Passed legend first argument. length one, length obs_var argument. inset Passed legend applicable. show_errmin FOCUS chi2 error value shown upper margin plot? errmin_digits number significant digits rounding FOCUS chi2 error percentage. frame frame drawn around plots? ... arguments passed plot. standardized calling 'plot_res', residuals standardized residual plot?","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit","text":"function called side effect.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit","text":"current plot device tikz device, latex used formatting chi2 error level, show_errmin = TRUE.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot the observed data and the fitted model of an mkinfit object — plot.mkinfit","text":"","code":"# One parent compound, one metabolite, both single first order, path from # parent to sink included # \\dontrun{ SFO_SFO <- mkinmod(parent = mkinsub(\"SFO\", \"m1\", full = \"Parent\"), m1 = mkinsub(\"SFO\", full = \"Metabolite M1\" )) #> Temporary DLL for differentials generated and loaded fit <- mkinfit(SFO_SFO, FOCUS_2006_D, quiet = TRUE) #> Warning: Observations with value of zero were removed from the data fit <- mkinfit(SFO_SFO, FOCUS_2006_D, quiet = TRUE, error_model = \"tc\") #> Warning: Observations with value of zero were removed from the data plot(fit) plot_res(fit) plot_res(fit, standardized = FALSE) plot_err(fit) # Show the observed variables separately, with residuals plot(fit, sep_obs = TRUE, show_residuals = TRUE, lpos = c(\"topright\", \"bottomright\"), show_errmin = TRUE) # The same can be obtained with less typing, using the convenience function plot_sep plot_sep(fit, lpos = c(\"topright\", \"bottomright\")) # Show the observed variables separately, with the error model plot(fit, sep_obs = TRUE, show_errplot = TRUE, lpos = c(\"topright\", \"bottomright\"), show_errmin = TRUE) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin","title":"Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin","text":"x row selected mmkin object ([.mmkin), model fitted least one dataset shown. column, fit least one model dataset shown.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin","text":"","code":"# S3 method for class 'mmkin' plot( x, main = \"auto\", legends = 1, resplot = c(\"time\", \"errmod\"), ylab = \"Residue\", standardized = FALSE, show_errmin = TRUE, errmin_var = \"All data\", errmin_digits = 3, cex = 0.7, rel.height.middle = 0.9, ymax = \"auto\", ... )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin","text":"x object class mmkin, either one row one column. main main title placed outer margin plot. legends index fits legends shown. resplot residuals plotted time, using mkinresplot, squared residuals predicted values, error model, using mkinerrplot. ylab Label y axis. standardized residuals standardized? option passed mkinresplot, takes effect resplot = \"time\". show_errmin chi2 error level shown top plots left? errmin_var variable FOCUS chi2 error value shown. errmin_digits number significant digits rounding FOCUS chi2 error percentage. cex Passed plot functions mtext. rel.height.middle relative height middle plot, two rows plots shown. ymax Maximum y axis value plot.mkinfit. ... arguments passed plot.mkinfit mkinresplot.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin","text":"function called side effect.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mmkin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin","text":"current plot device tikz device, latex used formatting chi2 error level.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mmkin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object — plot.mmkin","text":"","code":"# \\dontrun{ # Only use one core not to offend CRAN checks fits <- mmkin(c(\"FOMC\", \"HS\"), list(\"FOCUS B\" = FOCUS_2006_B, \"FOCUS C\" = FOCUS_2006_C), # named list for titles cores = 1, quiet = TRUE, error_model = \"tc\") #> Warning: Optimisation did not converge: #> iteration limit reached without convergence (10) plot(fits[, \"FOCUS C\"]) plot(fits[\"FOMC\", ]) plot(fits[\"FOMC\", ], show_errmin = FALSE) # We can also plot a single fit, if we like the way plot.mmkin works, but then the plot # height should be smaller than the plot width (this is not possible for the html pages # generated by pkgdown, as far as I know). plot(fits[\"FOMC\", \"FOCUS C\"]) # same as plot(fits[1, 2]) # Show the error models plot(fits[\"FOMC\", ], resplot = \"errmod\") # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.nafta.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot the results of the three models used in the NAFTA scheme. — plot.nafta","title":"Plot the results of the three models used in the NAFTA scheme. — plot.nafta","text":"plots ordered increasing complexity model function (SFO, IORE, DFOP).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.nafta.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot the results of the three models used in the NAFTA scheme. — plot.nafta","text":"","code":"# S3 method for class 'nafta' plot(x, legend = FALSE, main = \"auto\", ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.nafta.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot the results of the three models used in the NAFTA scheme. — plot.nafta","text":"x object class nafta. legend legend added? main Possibility override main title plot. ... arguments passed plot.mmkin.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.nafta.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot the results of the three models used in the NAFTA scheme. — plot.nafta","text":"function called side effect.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.nafta.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plot the results of the three models used in the NAFTA scheme. — plot.nafta","text":"Calls plot.mmkin.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/plot.nafta.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot the results of the three models used in the NAFTA scheme. — plot.nafta","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/read_spreadsheet.html","id":null,"dir":"Reference","previous_headings":"","what":"Read datasets and relevant meta information from a spreadsheet file — read_spreadsheet","title":"Read datasets and relevant meta information from a spreadsheet file — read_spreadsheet","text":"function imports one dataset sheet spreadsheet file. sheets selected based contents sheet 'Datasets', column called 'Dataset Number', containing numbers identifying dataset sheets read . second column must grouping variable, often named 'Soil'. Optionally, time normalization factors can given columns named 'Temperature' 'Moisture'.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/read_spreadsheet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read datasets and relevant meta information from a spreadsheet file — read_spreadsheet","text":"","code":"read_spreadsheet( path, valid_datasets = \"all\", parent_only = FALSE, normalize = TRUE )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/read_spreadsheet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read datasets and relevant meta information from a spreadsheet file — read_spreadsheet","text":"path Absolute relative path spreadsheet file valid_datasets Optional numeric index valid datasets, default use datasets parent_only parent data used? normalize time scale normalized using temperature moisture normalisation factors sheet 'Datasets'?","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/read_spreadsheet.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Read datasets and relevant meta information from a spreadsheet file — read_spreadsheet","text":"must sheet 'Compounds', columns 'Name' 'Acronym'. first row read header read sheet assumed contain name acronym parent compound. dataset sheets named using dataset numbers read 'Datasets' sheet, .e. '1', '2', ... . dataset sheet, name observed variable (e.g. acronym parent compound one transformation products) first column, time values second colum, observed value third column. case relevant covariate data available, given sheet 'Covariates', containing one line value grouping variable specified 'Datasets'. values first column column must name second column 'Datasets'. Covariates read columns four higher. names preferably contain special characters like spaces, can easily used specifying covariate models. similar data structure defined R6 class mkindsg, probably complicated use.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. lmtest lrtest nlme intervals, nlme","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/residuals.mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract residuals from an mkinfit model — residuals.mkinfit","title":"Extract residuals from an mkinfit model — residuals.mkinfit","text":"Extract residuals mkinfit model","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/residuals.mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract residuals from an mkinfit model — residuals.mkinfit","text":"","code":"# S3 method for class 'mkinfit' residuals(object, standardized = FALSE, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/residuals.mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract residuals from an mkinfit model — residuals.mkinfit","text":"object mkinfit object standardized residuals standardized dividing standard deviation obtained fitted error model? ... used","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/residuals.mkinfit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Extract residuals from an mkinfit model — residuals.mkinfit","text":"","code":"f <- mkinfit(\"DFOP\", FOCUS_2006_C, quiet = TRUE) residuals(f) #> [1] 0.09726374 -0.13912142 -0.15351210 0.73388322 -0.08657004 -0.93204702 #> [7] -0.03269080 1.45347823 -0.88423697 residuals(f, standardized = TRUE) #> [1] 0.13969917 -0.19981904 -0.22048826 1.05407091 -0.12433989 -1.33869208 #> [7] -0.04695355 2.08761977 -1.27002287"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/saem.html","id":null,"dir":"Reference","previous_headings":"","what":"Fit nonlinear mixed models with SAEM — saem","title":"Fit nonlinear mixed models with SAEM — saem","text":"function uses saemix::saemix() backend fitting nonlinear mixed effects models created mmkin row objects using Stochastic Approximation Expectation Maximisation algorithm (SAEM).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/saem.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Fit nonlinear mixed models with SAEM — saem","text":"","code":"saem(object, ...) # S3 method for class 'mmkin' saem( object, transformations = c(\"mkin\", \"saemix\"), error_model = \"auto\", degparms_start = numeric(), test_log_parms = TRUE, conf.level = 0.6, solution_type = \"auto\", covariance.model = \"auto\", omega.init = \"auto\", covariates = NULL, covariate_models = NULL, no_random_effect = NULL, error.init = c(1, 1), nbiter.saemix = c(300, 100), control = list(displayProgress = FALSE, print = FALSE, nbiter.saemix = nbiter.saemix, save = FALSE, save.graphs = FALSE), verbose = FALSE, quiet = FALSE, ... ) # S3 method for class 'saem.mmkin' print(x, digits = max(3, getOption(\"digits\") - 3), ...) saemix_model( object, solution_type = \"auto\", transformations = c(\"mkin\", \"saemix\"), error_model = \"auto\", degparms_start = numeric(), covariance.model = \"auto\", no_random_effect = NULL, omega.init = \"auto\", covariates = NULL, covariate_models = NULL, error.init = numeric(), test_log_parms = FALSE, conf.level = 0.6, verbose = FALSE, ... ) saemix_data(object, covariates = NULL, verbose = FALSE, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/saem.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Fit nonlinear mixed models with SAEM — saem","text":"object mmkin row object containing several fits mkinmod model different datasets ... parameters passed saemix::saemixModel. transformations Per default, parameter transformations done mkin. argument set 'saemix', parameter transformations done 'saemix' supported cases, .e. (version 1.1.2) SFO, FOMC, DFOP HS without fixing parent_0, SFO DFOP one SFO metabolite. error_model Possibility override error model used mmkin object degparms_start Parameter values given named numeric vector used override starting values obtained 'mmkin' object. test_log_parms TRUE, attempt made use robust starting values population parameters fitted log parameters mkin (like rate constants) considering rate constants pass t-test calculating mean degradation parameters using mean_degparms. conf.level Possibility adjust required confidence level parameter tested requested 'test_log_parms'. solution_type Possibility specify solution type case automatic choice desired covariance.model passed saemix::saemixModel(). Per default, uncorrelated random effects specified degradation parameters. omega.init passed saemix::saemixModel(). using mkin transformations default covariance model optionally excluded random effects, variances degradation parameters estimated using mean_degparms, testing untransformed log parameters significant difference zero. using mkin transformations custom covariance model, default initialisation saemix::saemixModel used omega.init. covariates data frame covariate data use 'covariate_models', dataset names row names. covariate_models list containing linear model formulas one explanatory variable, .e. type 'parameter ~ covariate'. Covariates must available 'covariates' data frame. no_random_effect Character vector degradation parameters variability groups. used covariance model explicitly specified. error.init passed saemix::saemixModel(). nbiter.saemix Convenience option increase number iterations control Passed saemix::saemix. verbose print information created objects type saemix::SaemixModel saemix::SaemixData? quiet suppress messages saemix prints beginning end optimisation process? x saem.mmkin object print digits Number digits use printing","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/saem.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Fit nonlinear mixed models with SAEM — saem","text":"S3 object class 'saem.mmkin', containing fitted saemix::SaemixObject list component named ''. object also inherits 'mixed.mmkin'. saemix::SaemixModel object. saemix::SaemixData object.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/saem.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Fit nonlinear mixed models with SAEM — saem","text":"mmkin row object essentially list mkinfit objects obtained fitting model list datasets using mkinfit. Starting values fixed effects (population mean parameters, argument psi0 saemix::saemixModel() mean values parameters found using mmkin.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/saem.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Fit nonlinear mixed models with SAEM — saem","text":"","code":"# \\dontrun{ ds <- lapply(experimental_data_for_UBA_2019[6:10], function(x) subset(x$data[c(\"name\", \"time\", \"value\")])) names(ds) <- paste(\"Dataset\", 6:10) f_mmkin_parent_p0_fixed <- mmkin(\"FOMC\", ds, state.ini = c(parent = 100), fixed_initials = \"parent\", quiet = TRUE) f_saem_p0_fixed <- saem(f_mmkin_parent_p0_fixed) f_mmkin_parent <- mmkin(c(\"SFO\", \"FOMC\", \"DFOP\"), ds, quiet = TRUE) f_saem_sfo <- saem(f_mmkin_parent[\"SFO\", ]) f_saem_fomc <- saem(f_mmkin_parent[\"FOMC\", ]) f_saem_dfop <- saem(f_mmkin_parent[\"DFOP\", ]) anova(f_saem_sfo, f_saem_fomc, f_saem_dfop) #> Data: 90 observations of 1 variable(s) grouped in 5 datasets #> #> npar AIC BIC Lik #> f_saem_sfo 5 624.33 622.38 -307.17 #> f_saem_fomc 7 467.85 465.11 -226.92 #> f_saem_dfop 9 493.76 490.24 -237.88 anova(f_saem_sfo, f_saem_dfop, test = TRUE) #> Data: 90 observations of 1 variable(s) grouped in 5 datasets #> #> npar AIC BIC Lik Chisq Df Pr(>Chisq) #> f_saem_sfo 5 624.33 622.38 -307.17 #> f_saem_dfop 9 493.76 490.24 -237.88 138.57 4 < 2.2e-16 *** #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 illparms(f_saem_dfop) #> [1] \"sd(g_qlogis)\" f_saem_dfop_red <- update(f_saem_dfop, no_random_effect = \"g_qlogis\") anova(f_saem_dfop, f_saem_dfop_red, test = TRUE) #> Data: 90 observations of 1 variable(s) grouped in 5 datasets #> #> npar AIC BIC Lik Chisq Df Pr(>Chisq) #> f_saem_dfop_red 8 488.68 485.55 -236.34 #> f_saem_dfop 9 493.76 490.24 -237.88 0 1 1 anova(f_saem_sfo, f_saem_fomc, f_saem_dfop) #> Data: 90 observations of 1 variable(s) grouped in 5 datasets #> #> npar AIC BIC Lik #> f_saem_sfo 5 624.33 622.38 -307.17 #> f_saem_fomc 7 467.85 465.11 -226.92 #> f_saem_dfop 9 493.76 490.24 -237.88 # The returned saem.mmkin object contains an SaemixObject, therefore we can use # functions from saemix library(saemix) #> Loading required package: npde #> Package saemix, version 3.3, March 2024 #> please direct bugs, questions and feedback to emmanuelle.comets@inserm.fr #> #> Attaching package: ‘saemix’ #> The following objects are masked from ‘package:npde’: #> #> kurtosis, skewness compare.saemix(f_saem_sfo$so, f_saem_fomc$so, f_saem_dfop$so) #> Likelihoods calculated by importance sampling #> AIC BIC #> 1 624.3316 622.3788 #> 2 467.8472 465.1132 #> 3 493.7592 490.2441 plot(f_saem_fomc$so, plot.type = \"convergence\") plot(f_saem_fomc$so, plot.type = \"individual.fit\") #> Simulating data using nsim = 1000 simulated datasets #> Computing WRES and npde . plot(f_saem_fomc$so, plot.type = \"npde\") #> Simulating data using nsim = 1000 simulated datasets #> Computing WRES and npde . #> Please use npdeSaemix to obtain VPC and npde plot(f_saem_fomc$so, plot.type = \"vpc\") f_mmkin_parent_tc <- update(f_mmkin_parent, error_model = \"tc\") f_saem_fomc_tc <- saem(f_mmkin_parent_tc[\"FOMC\", ]) anova(f_saem_fomc, f_saem_fomc_tc, test = TRUE) #> Data: 90 observations of 1 variable(s) grouped in 5 datasets #> #> npar AIC BIC Lik Chisq Df Pr(>Chisq) #> f_saem_fomc 7 467.85 465.11 -226.92 #> f_saem_fomc_tc 8 469.90 466.77 -226.95 0 1 1 sfo_sfo <- mkinmod(parent = mkinsub(\"SFO\", \"A1\"), A1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded fomc_sfo <- mkinmod(parent = mkinsub(\"FOMC\", \"A1\"), A1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded dfop_sfo <- mkinmod(parent = mkinsub(\"DFOP\", \"A1\"), A1 = mkinsub(\"SFO\")) #> Temporary DLL for differentials generated and loaded # The following fit uses analytical solutions for SFO-SFO and DFOP-SFO, # and compiled ODEs for FOMC that are much slower f_mmkin <- mmkin(list( \"SFO-SFO\" = sfo_sfo, \"FOMC-SFO\" = fomc_sfo, \"DFOP-SFO\" = dfop_sfo), ds, quiet = TRUE) # saem fits of SFO-SFO and DFOP-SFO to these data take about five seconds # each on this system, as we use analytical solutions written for saemix. # When using the analytical solutions written for mkin this took around # four minutes f_saem_sfo_sfo <- saem(f_mmkin[\"SFO-SFO\", ]) f_saem_dfop_sfo <- saem(f_mmkin[\"DFOP-SFO\", ]) # We can use print, plot and summary methods to check the results print(f_saem_dfop_sfo) #> Kinetic nonlinear mixed-effects model fit by SAEM #> Structural model: #> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * #> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) #> * parent #> d_A1/dt = + f_parent_to_A1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) #> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * #> exp(-k2 * time))) * parent - k_A1 * A1 #> #> Data: #> 170 observations of 2 variable(s) grouped in 5 datasets #> #> Likelihood computed by importance sampling #> AIC BIC logLik #> 839.2 834.1 -406.6 #> #> Fitted parameters: #> estimate lower upper #> parent_0 93.70402 91.04104 96.3670 #> log_k_A1 -5.83760 -7.66452 -4.0107 #> f_parent_qlogis -0.95718 -1.35955 -0.5548 #> log_k1 -2.35514 -3.39402 -1.3163 #> log_k2 -3.79634 -5.64009 -1.9526 #> g_qlogis -0.02108 -0.66463 0.6225 #> a.1 1.88191 1.66491 2.0989 #> SD.parent_0 2.81628 0.78922 4.8433 #> SD.log_k_A1 1.78751 0.42105 3.1540 #> SD.f_parent_qlogis 0.45016 0.16116 0.7391 #> SD.log_k1 1.06923 0.31676 1.8217 #> SD.log_k2 2.03768 0.70938 3.3660 #> SD.g_qlogis 0.44024 -0.09262 0.9731 plot(f_saem_dfop_sfo) summary(f_saem_dfop_sfo, data = TRUE) #> saemix version used for fitting: 3.3 #> mkin version used for pre-fitting: 1.2.10 #> R version used for fitting: 4.4.2 #> Date of fit: Fri Feb 14 07:32:13 2025 #> Date of summary: Fri Feb 14 07:32:13 2025 #> #> Equations: #> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * #> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) #> * parent #> d_A1/dt = + f_parent_to_A1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) #> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * #> exp(-k2 * time))) * parent - k_A1 * A1 #> #> Data: #> 170 observations of 2 variable(s) grouped in 5 datasets #> #> Model predictions using solution type analytical #> #> Fitted in 3.605 s #> Using 300, 100 iterations and 10 chains #> #> Variance model: Constant variance #> #> Starting values for degradation parameters: #> parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 #> 93.8102 -5.3734 -0.9711 -1.8799 -4.2708 #> g_qlogis #> 0.1356 #> #> Fixed degradation parameter values: #> None #> #> Starting values for random effects (square root of initial entries in omega): #> parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis #> parent_0 4.941 0.000 0.0000 0.000 0.000 0.0000 #> log_k_A1 0.000 2.551 0.0000 0.000 0.000 0.0000 #> f_parent_qlogis 0.000 0.000 0.7251 0.000 0.000 0.0000 #> log_k1 0.000 0.000 0.0000 1.449 0.000 0.0000 #> log_k2 0.000 0.000 0.0000 0.000 2.228 0.0000 #> g_qlogis 0.000 0.000 0.0000 0.000 0.000 0.7814 #> #> Starting values for error model parameters: #> a.1 #> 1 #> #> Results: #> #> Likelihood computed by importance sampling #> AIC BIC logLik #> 839.2 834.1 -406.6 #> #> Optimised parameters: #> est. lower upper #> parent_0 93.70402 91.04104 96.3670 #> log_k_A1 -5.83760 -7.66452 -4.0107 #> f_parent_qlogis -0.95718 -1.35955 -0.5548 #> log_k1 -2.35514 -3.39402 -1.3163 #> log_k2 -3.79634 -5.64009 -1.9526 #> g_qlogis -0.02108 -0.66463 0.6225 #> a.1 1.88191 1.66491 2.0989 #> SD.parent_0 2.81628 0.78922 4.8433 #> SD.log_k_A1 1.78751 0.42105 3.1540 #> SD.f_parent_qlogis 0.45016 0.16116 0.7391 #> SD.log_k1 1.06923 0.31676 1.8217 #> SD.log_k2 2.03768 0.70938 3.3660 #> SD.g_qlogis 0.44024 -0.09262 0.9731 #> #> Correlation: #> parnt_0 lg_k_A1 f_prnt_ log_k1 log_k2 #> log_k_A1 -0.0147 #> f_parent_qlogis -0.0269 0.0573 #> log_k1 0.0263 -0.0011 -0.0040 #> log_k2 0.0020 0.0065 -0.0002 -0.0776 #> g_qlogis -0.0248 -0.0180 -0.0004 -0.0903 -0.0603 #> #> Random effects: #> est. lower upper #> SD.parent_0 2.8163 0.78922 4.8433 #> SD.log_k_A1 1.7875 0.42105 3.1540 #> SD.f_parent_qlogis 0.4502 0.16116 0.7391 #> SD.log_k1 1.0692 0.31676 1.8217 #> SD.log_k2 2.0377 0.70938 3.3660 #> SD.g_qlogis 0.4402 -0.09262 0.9731 #> #> Variance model: #> est. lower upper #> a.1 1.882 1.665 2.099 #> #> Backtransformed parameters: #> est. lower upper #> parent_0 93.704015 9.104e+01 96.36699 #> k_A1 0.002916 4.692e-04 0.01812 #> f_parent_to_A1 0.277443 2.043e-01 0.36475 #> k1 0.094880 3.357e-02 0.26813 #> k2 0.022453 3.553e-03 0.14191 #> g 0.494731 3.397e-01 0.65078 #> #> Resulting formation fractions: #> ff #> parent_A1 0.2774 #> parent_sink 0.7226 #> #> Estimated disappearance times: #> DT50 DT90 DT50back DT50_k1 DT50_k2 #> parent 14.0 72.38 21.79 7.306 30.87 #> A1 237.7 789.68 NA NA NA #> #> Data: #> ds name time observed predicted residual std standardized #> Dataset 6 parent 0 97.2 95.70025 1.49975 1.882 0.79693 #> Dataset 6 parent 0 96.4 95.70025 0.69975 1.882 0.37183 #> Dataset 6 parent 3 71.1 71.44670 -0.34670 1.882 -0.18423 #> Dataset 6 parent 3 69.2 71.44670 -2.24670 1.882 -1.19384 #> Dataset 6 parent 6 58.1 56.59283 1.50717 1.882 0.80087 #> Dataset 6 parent 6 56.6 56.59283 0.00717 1.882 0.00381 #> Dataset 6 parent 10 44.4 44.56648 -0.16648 1.882 -0.08847 #> Dataset 6 parent 10 43.4 44.56648 -1.16648 1.882 -0.61984 #> Dataset 6 parent 20 33.3 29.76020 3.53980 1.882 1.88096 #> Dataset 6 parent 20 29.2 29.76020 -0.56020 1.882 -0.29767 #> Dataset 6 parent 34 17.6 19.39208 -1.79208 1.882 -0.95226 #> Dataset 6 parent 34 18.0 19.39208 -1.39208 1.882 -0.73971 #> Dataset 6 parent 55 10.5 10.55761 -0.05761 1.882 -0.03061 #> Dataset 6 parent 55 9.3 10.55761 -1.25761 1.882 -0.66826 #> Dataset 6 parent 90 4.5 3.84742 0.65258 1.882 0.34676 #> Dataset 6 parent 90 4.7 3.84742 0.85258 1.882 0.45304 #> Dataset 6 parent 112 3.0 2.03997 0.96003 1.882 0.51013 #> Dataset 6 parent 112 3.4 2.03997 1.36003 1.882 0.72268 #> Dataset 6 parent 132 2.3 1.14585 1.15415 1.882 0.61328 #> Dataset 6 parent 132 2.7 1.14585 1.55415 1.882 0.82583 #> Dataset 6 A1 3 4.3 4.86054 -0.56054 1.882 -0.29786 #> Dataset 6 A1 3 4.6 4.86054 -0.26054 1.882 -0.13844 #> Dataset 6 A1 6 7.0 7.74179 -0.74179 1.882 -0.39417 #> Dataset 6 A1 6 7.2 7.74179 -0.54179 1.882 -0.28789 #> Dataset 6 A1 10 8.2 9.94048 -1.74048 1.882 -0.92485 #> Dataset 6 A1 10 8.0 9.94048 -1.94048 1.882 -1.03112 #> Dataset 6 A1 20 11.0 12.19109 -1.19109 1.882 -0.63291 #> Dataset 6 A1 20 13.7 12.19109 1.50891 1.882 0.80180 #> Dataset 6 A1 34 11.5 13.10706 -1.60706 1.882 -0.85395 #> Dataset 6 A1 34 12.7 13.10706 -0.40706 1.882 -0.21630 #> Dataset 6 A1 55 14.9 13.06131 1.83869 1.882 0.97703 #> Dataset 6 A1 55 14.5 13.06131 1.43869 1.882 0.76448 #> Dataset 6 A1 90 12.1 11.54495 0.55505 1.882 0.29494 #> Dataset 6 A1 90 12.3 11.54495 0.75505 1.882 0.40122 #> Dataset 6 A1 112 9.9 10.31533 -0.41533 1.882 -0.22070 #> Dataset 6 A1 112 10.2 10.31533 -0.11533 1.882 -0.06128 #> Dataset 6 A1 132 8.8 9.20222 -0.40222 1.882 -0.21373 #> Dataset 6 A1 132 7.8 9.20222 -1.40222 1.882 -0.74510 #> Dataset 7 parent 0 93.6 90.82357 2.77643 1.882 1.47532 #> Dataset 7 parent 0 92.3 90.82357 1.47643 1.882 0.78453 #> Dataset 7 parent 3 87.0 84.73448 2.26552 1.882 1.20384 #> Dataset 7 parent 3 82.2 84.73448 -2.53448 1.882 -1.34675 #> Dataset 7 parent 7 74.0 77.65013 -3.65013 1.882 -1.93958 #> Dataset 7 parent 7 73.9 77.65013 -3.75013 1.882 -1.99272 #> Dataset 7 parent 14 64.2 67.60639 -3.40639 1.882 -1.81007 #> Dataset 7 parent 14 69.5 67.60639 1.89361 1.882 1.00621 #> Dataset 7 parent 30 54.0 52.53663 1.46337 1.882 0.77760 #> Dataset 7 parent 30 54.6 52.53663 2.06337 1.882 1.09642 #> Dataset 7 parent 60 41.1 39.42728 1.67272 1.882 0.88884 #> Dataset 7 parent 60 38.4 39.42728 -1.02728 1.882 -0.54587 #> Dataset 7 parent 90 32.5 33.76360 -1.26360 1.882 -0.67144 #> Dataset 7 parent 90 35.5 33.76360 1.73640 1.882 0.92268 #> Dataset 7 parent 120 28.1 30.39975 -2.29975 1.882 -1.22203 #> Dataset 7 parent 120 29.0 30.39975 -1.39975 1.882 -0.74379 #> Dataset 7 parent 180 26.5 25.62379 0.87621 1.882 0.46559 #> Dataset 7 parent 180 27.6 25.62379 1.97621 1.882 1.05010 #> Dataset 7 A1 3 3.9 2.70005 1.19995 1.882 0.63762 #> Dataset 7 A1 3 3.1 2.70005 0.39995 1.882 0.21252 #> Dataset 7 A1 7 6.9 5.83475 1.06525 1.882 0.56605 #> Dataset 7 A1 7 6.6 5.83475 0.76525 1.882 0.40663 #> Dataset 7 A1 14 10.4 10.26142 0.13858 1.882 0.07364 #> Dataset 7 A1 14 8.3 10.26142 -1.96142 1.882 -1.04225 #> Dataset 7 A1 30 14.4 16.82999 -2.42999 1.882 -1.29123 #> Dataset 7 A1 30 13.7 16.82999 -3.12999 1.882 -1.66319 #> Dataset 7 A1 60 22.1 22.32486 -0.22486 1.882 -0.11949 #> Dataset 7 A1 60 22.3 22.32486 -0.02486 1.882 -0.01321 #> Dataset 7 A1 90 27.5 24.45927 3.04073 1.882 1.61576 #> Dataset 7 A1 90 25.4 24.45927 0.94073 1.882 0.49988 #> Dataset 7 A1 120 28.0 25.54862 2.45138 1.882 1.30260 #> Dataset 7 A1 120 26.6 25.54862 1.05138 1.882 0.55868 #> Dataset 7 A1 180 25.8 26.82277 -1.02277 1.882 -0.54347 #> Dataset 7 A1 180 25.3 26.82277 -1.52277 1.882 -0.80916 #> Dataset 8 parent 0 91.9 91.16791 0.73209 1.882 0.38901 #> Dataset 8 parent 0 90.8 91.16791 -0.36791 1.882 -0.19550 #> Dataset 8 parent 1 64.9 67.58358 -2.68358 1.882 -1.42598 #> Dataset 8 parent 1 66.2 67.58358 -1.38358 1.882 -0.73520 #> Dataset 8 parent 3 43.5 41.62086 1.87914 1.882 0.99853 #> Dataset 8 parent 3 44.1 41.62086 2.47914 1.882 1.31735 #> Dataset 8 parent 8 18.3 19.60116 -1.30116 1.882 -0.69140 #> Dataset 8 parent 8 18.1 19.60116 -1.50116 1.882 -0.79768 #> Dataset 8 parent 14 10.2 10.63101 -0.43101 1.882 -0.22903 #> Dataset 8 parent 14 10.8 10.63101 0.16899 1.882 0.08980 #> Dataset 8 parent 27 4.9 3.12435 1.77565 1.882 0.94354 #> Dataset 8 parent 27 3.3 3.12435 0.17565 1.882 0.09334 #> Dataset 8 parent 48 1.6 0.43578 1.16422 1.882 0.61864 #> Dataset 8 parent 48 1.5 0.43578 1.06422 1.882 0.56550 #> Dataset 8 parent 70 1.1 0.05534 1.04466 1.882 0.55510 #> Dataset 8 parent 70 0.9 0.05534 0.84466 1.882 0.44883 #> Dataset 8 A1 1 9.6 7.63450 1.96550 1.882 1.04442 #> Dataset 8 A1 1 7.7 7.63450 0.06550 1.882 0.03481 #> Dataset 8 A1 3 15.0 15.52593 -0.52593 1.882 -0.27947 #> Dataset 8 A1 3 15.1 15.52593 -0.42593 1.882 -0.22633 #> Dataset 8 A1 8 21.2 20.32192 0.87808 1.882 0.46659 #> Dataset 8 A1 8 21.1 20.32192 0.77808 1.882 0.41345 #> Dataset 8 A1 14 19.7 20.09721 -0.39721 1.882 -0.21107 #> Dataset 8 A1 14 18.9 20.09721 -1.19721 1.882 -0.63617 #> Dataset 8 A1 27 17.5 16.37477 1.12523 1.882 0.59792 #> Dataset 8 A1 27 15.9 16.37477 -0.47477 1.882 -0.25228 #> Dataset 8 A1 48 9.5 10.13141 -0.63141 1.882 -0.33551 #> Dataset 8 A1 48 9.8 10.13141 -0.33141 1.882 -0.17610 #> Dataset 8 A1 70 6.2 5.81827 0.38173 1.882 0.20284 #> Dataset 8 A1 70 6.1 5.81827 0.28173 1.882 0.14970 #> Dataset 9 parent 0 99.8 97.48728 2.31272 1.882 1.22892 #> Dataset 9 parent 0 98.3 97.48728 0.81272 1.882 0.43186 #> Dataset 9 parent 1 77.1 79.29476 -2.19476 1.882 -1.16624 #> Dataset 9 parent 1 77.2 79.29476 -2.09476 1.882 -1.11310 #> Dataset 9 parent 3 59.0 55.67060 3.32940 1.882 1.76915 #> Dataset 9 parent 3 58.1 55.67060 2.42940 1.882 1.29092 #> Dataset 9 parent 8 27.4 31.57871 -4.17871 1.882 -2.22046 #> Dataset 9 parent 8 29.2 31.57871 -2.37871 1.882 -1.26398 #> Dataset 9 parent 14 19.1 22.51546 -3.41546 1.882 -1.81489 #> Dataset 9 parent 14 29.6 22.51546 7.08454 1.882 3.76454 #> Dataset 9 parent 27 10.1 14.09074 -3.99074 1.882 -2.12057 #> Dataset 9 parent 27 18.2 14.09074 4.10926 1.882 2.18355 #> Dataset 9 parent 48 4.5 6.95747 -2.45747 1.882 -1.30584 #> Dataset 9 parent 48 9.1 6.95747 2.14253 1.882 1.13848 #> Dataset 9 parent 70 2.3 3.32472 -1.02472 1.882 -0.54451 #> Dataset 9 parent 70 2.9 3.32472 -0.42472 1.882 -0.22569 #> Dataset 9 parent 91 2.0 1.64300 0.35700 1.882 0.18970 #> Dataset 9 parent 91 1.8 1.64300 0.15700 1.882 0.08343 #> Dataset 9 parent 120 2.0 0.62073 1.37927 1.882 0.73291 #> Dataset 9 parent 120 2.2 0.62073 1.57927 1.882 0.83918 #> Dataset 9 A1 1 4.2 3.64568 0.55432 1.882 0.29455 #> Dataset 9 A1 1 3.9 3.64568 0.25432 1.882 0.13514 #> Dataset 9 A1 3 7.4 8.30173 -0.90173 1.882 -0.47916 #> Dataset 9 A1 3 7.9 8.30173 -0.40173 1.882 -0.21347 #> Dataset 9 A1 8 14.5 12.71589 1.78411 1.882 0.94803 #> Dataset 9 A1 8 13.7 12.71589 0.98411 1.882 0.52293 #> Dataset 9 A1 14 14.2 13.90452 0.29548 1.882 0.15701 #> Dataset 9 A1 14 12.2 13.90452 -1.70452 1.882 -0.90574 #> Dataset 9 A1 27 13.7 14.15523 -0.45523 1.882 -0.24190 #> Dataset 9 A1 27 13.2 14.15523 -0.95523 1.882 -0.50759 #> Dataset 9 A1 48 13.6 13.31038 0.28962 1.882 0.15389 #> Dataset 9 A1 48 15.4 13.31038 2.08962 1.882 1.11037 #> Dataset 9 A1 70 10.4 11.85965 -1.45965 1.882 -0.77562 #> Dataset 9 A1 70 11.6 11.85965 -0.25965 1.882 -0.13797 #> Dataset 9 A1 91 10.0 10.36294 -0.36294 1.882 -0.19286 #> Dataset 9 A1 91 9.5 10.36294 -0.86294 1.882 -0.45855 #> Dataset 9 A1 120 9.1 8.43003 0.66997 1.882 0.35601 #> Dataset 9 A1 120 9.0 8.43003 0.56997 1.882 0.30287 #> Dataset 10 parent 0 96.1 93.95603 2.14397 1.882 1.13925 #> Dataset 10 parent 0 94.3 93.95603 0.34397 1.882 0.18278 #> Dataset 10 parent 8 73.9 77.70592 -3.80592 1.882 -2.02237 #> Dataset 10 parent 8 73.9 77.70592 -3.80592 1.882 -2.02237 #> Dataset 10 parent 14 69.4 70.04570 -0.64570 1.882 -0.34311 #> Dataset 10 parent 14 73.1 70.04570 3.05430 1.882 1.62298 #> Dataset 10 parent 21 65.6 64.01710 1.58290 1.882 0.84111 #> Dataset 10 parent 21 65.3 64.01710 1.28290 1.882 0.68170 #> Dataset 10 parent 41 55.9 54.98434 0.91566 1.882 0.48656 #> Dataset 10 parent 41 54.4 54.98434 -0.58434 1.882 -0.31050 #> Dataset 10 parent 63 47.0 49.87137 -2.87137 1.882 -1.52577 #> Dataset 10 parent 63 49.3 49.87137 -0.57137 1.882 -0.30361 #> Dataset 10 parent 91 44.7 45.06727 -0.36727 1.882 -0.19516 #> Dataset 10 parent 91 46.7 45.06727 1.63273 1.882 0.86759 #> Dataset 10 parent 120 42.1 40.76402 1.33598 1.882 0.70991 #> Dataset 10 parent 120 41.3 40.76402 0.53598 1.882 0.28481 #> Dataset 10 A1 8 3.3 4.14599 -0.84599 1.882 -0.44954 #> Dataset 10 A1 8 3.4 4.14599 -0.74599 1.882 -0.39640 #> Dataset 10 A1 14 3.9 6.08478 -2.18478 1.882 -1.16093 #> Dataset 10 A1 14 2.9 6.08478 -3.18478 1.882 -1.69231 #> Dataset 10 A1 21 6.4 7.59411 -1.19411 1.882 -0.63452 #> Dataset 10 A1 21 7.2 7.59411 -0.39411 1.882 -0.20942 #> Dataset 10 A1 41 9.1 9.78292 -0.68292 1.882 -0.36289 #> Dataset 10 A1 41 8.5 9.78292 -1.28292 1.882 -0.68171 #> Dataset 10 A1 63 11.7 10.93274 0.76726 1.882 0.40770 #> Dataset 10 A1 63 12.0 10.93274 1.06726 1.882 0.56711 #> Dataset 10 A1 91 13.3 11.93986 1.36014 1.882 0.72274 #> Dataset 10 A1 91 13.2 11.93986 1.26014 1.882 0.66961 #> Dataset 10 A1 120 14.3 12.79238 1.50762 1.882 0.80111 #> Dataset 10 A1 120 12.1 12.79238 -0.69238 1.882 -0.36791 # The following takes about 6 minutes f_saem_dfop_sfo_deSolve <- saem(f_mmkin[\"DFOP-SFO\", ], solution_type = \"deSolve\", nbiter.saemix = c(200, 80)) #> DINTDY- T (=R1) illegal #> In above message, R1 = 70 #> #> T not in interval TCUR - HU (= R1) to TCUR (=R2) #> In above message, R1 = 53.1042, R2 = 56.6326 #> #> DINTDY- T (=R1) illegal #> In above message, R1 = 91 #> #> T not in interval TCUR - HU (= R1) to TCUR (=R2) #> In above message, R1 = 53.1042, R2 = 56.6326 #> #> DLSODA- Trouble in DINTDY. ITASK = I1, TOUT = R1 #> In above message, I1 = 1 #> #> In above message, R1 = 91 #> #> Error in deSolve::lsoda(y = odeini, times = outtimes, func = lsoda_func, : #> illegal input detected before taking any integration steps - see written message #anova( # f_saem_dfop_sfo, # f_saem_dfop_sfo_deSolve)) # If the model supports it, we can also use eigenvalue based solutions, which # take a similar amount of time #f_saem_sfo_sfo_eigen <- saem(f_mmkin[\"SFO-SFO\", ], solution_type = \"eigen\", # control = list(nbiter.saemix = c(200, 80), nbdisplay = 10)) # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/schaefer07_complex_case.html","id":null,"dir":"Reference","previous_headings":"","what":"Metabolism data set used for checking the software quality of KinGUI — schaefer07_complex_case","title":"Metabolism data set used for checking the software quality of KinGUI — schaefer07_complex_case","text":"dataset used comparison KinGUI ModelMaker check software quality KinGUI original publication (Schäfer et al., 2007). results fitting also included.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/schaefer07_complex_case.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Metabolism data set used for checking the software quality of KinGUI — schaefer07_complex_case","text":"","code":"schaefer07_complex_case"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/schaefer07_complex_case.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Metabolism data set used for checking the software quality of KinGUI — schaefer07_complex_case","text":"data set data frame 8 observations following 6 variables. time numeric vector parent numeric vector A1 numeric vector B1 numeric vector C1 numeric vector A2 numeric vector results data frame 14 results different parameter values","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/schaefer07_complex_case.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Metabolism data set used for checking the software quality of KinGUI — schaefer07_complex_case","text":"Schäfer D, Mikolasch B, Rainbird P Harvey B (2007). KinGUI: new kinetic software tool evaluations according FOCUS degradation kinetics. : Del Re AAM, Capri E, Fragoulis G Trevisan M (Eds.). Proceedings XIII Symposium Pesticide Chemistry, Piacenza, 2007, p. 916-923.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/schaefer07_complex_case.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Metabolism data set used for checking the software quality of KinGUI — schaefer07_complex_case","text":"","code":"data <- mkin_wide_to_long(schaefer07_complex_case, time = \"time\") model <- mkinmod( parent = list(type = \"SFO\", to = c(\"A1\", \"B1\", \"C1\"), sink = FALSE), A1 = list(type = \"SFO\", to = \"A2\"), B1 = list(type = \"SFO\"), C1 = list(type = \"SFO\"), A2 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded # \\dontrun{ fit <- mkinfit(model, data, quiet = TRUE) plot(fit) endpoints(fit) #> $ff #> parent_A1 parent_B1 parent_C1 parent_sink A1_A2 A1_sink #> 0.3809618 0.1954668 0.4235714 0.0000000 0.4479540 0.5520460 #> #> $distimes #> DT50 DT90 #> parent 13.95078 46.34349 #> A1 49.75347 165.27745 #> B1 37.26905 123.80511 #> C1 11.23129 37.30955 #> A2 28.50690 94.69789 #> # } # Compare with the results obtained in the original publication print(schaefer07_complex_results) #> compound parameter KinGUI ModelMaker deviation #> 1 parent degradation rate 0.0496 0.0506 2.0 #> 2 parent DT50 13.9900 13.6900 2.2 #> 3 metabolite A1 formation fraction 0.3803 0.3696 2.9 #> 4 metabolite A1 degradation rate 0.0139 0.0136 2.2 #> 5 metabolite A1 DT50 49.9600 50.8900 1.8 #> 6 metabolite B1 formation fraction 0.1866 0.1818 2.6 #> 7 metabolite B1 degradation rate 0.0175 0.0172 1.7 #> 8 metabolite B1 DT50 39.6100 40.2400 1.6 #> 9 metabolite C1 formation fraction 0.4331 0.4486 3.5 #> 10 metabolite C1 degradation rate 0.0638 0.0700 8.9 #> 11 metabolite C1 DT50 10.8700 9.9000 9.8 #> 12 metabolite A2 formation fraction 0.4529 0.4559 0.7 #> 13 metabolite A2 degradation rate 0.0245 0.0244 0.4 #> 14 metabolite A2 DT50 28.2400 28.4500 0.7"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html","id":null,"dir":"Reference","previous_headings":"","what":"Set non-detects and unquantified values in residue series without replicates — set_nd_nq","title":"Set non-detects and unquantified values in residue series without replicates — set_nd_nq","text":"function automates replacing unquantified values residue time depth series. time series, function performs part residue processing proposed FOCUS kinetics guidance parent compounds metabolites. two-dimensional residue series time depth, automates proposal Boesten et al (2015).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set non-detects and unquantified values in residue series without replicates — set_nd_nq","text":"","code":"set_nd_nq(res_raw, lod, loq = NA, time_zero_presence = FALSE) set_nd_nq_focus( res_raw, lod, loq = NA, set_first_sample_nd = TRUE, first_sample_nd_value = 0, ignore_below_loq_after_first_nd = TRUE )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set non-detects and unquantified values in residue series without replicates — set_nd_nq","text":"res_raw Character vector residue time series, matrix residue values rows representing depth profiles specific sampling time, columns representing time series residues depth. Values limit detection (lod) coded \"nd\", values limit detection limit quantification, , coded \"nq\". Samples analysed coded \"na\". values \"na\", \"nd\" \"nq\" coercible numeric lod Limit detection (numeric) loq Limit quantification(numeric). Must specified FOCUS rule stop first non-detection applied time_zero_presence assume residues occur time zero? affects samples first sampling time reported \"nd\" (detected). set_first_sample_nd first sample set \"first_sample_nd_value\" case non-detection? first_sample_nd_value Value used first sample non-detection ignore_below_loq_after_first_nd ignore values LOQ first non-detection occurs quantified values?","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set non-detects and unquantified values in residue series without replicates — set_nd_nq","text":"numeric vector, vector supplied, numeric matrix otherwise","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Set non-detects and unquantified values in residue series without replicates — set_nd_nq","text":"set_nd_nq_focus(): Set non-detects residue time series according FOCUS rules","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Set non-detects and unquantified values in residue series without replicates — set_nd_nq","text":"Boesten, J. J. T. ., van der Linden, . M. ., Beltman, W. H. J. Pol, J. W. (2015). Leaching plant protection products transformation products; Proposals improving assessment leaching groundwater Netherlands — Version 2. Alterra report 2630, Alterra Wageningen UR (University & Research centre) FOCUS (2014) Generic Guidance Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration, Version 1.1, 18 December 2014, p. 251","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set non-detects and unquantified values in residue series without replicates — set_nd_nq","text":"","code":"# FOCUS (2014) p. 75/76 and 131/132 parent_1 <- c(.12, .09, .05, .03, \"nd\", \"nd\", \"nd\", \"nd\", \"nd\", \"nd\") set_nd_nq(parent_1, 0.02) #> [1] 0.12 0.09 0.05 0.03 0.01 NA NA NA NA NA parent_2 <- c(.12, .09, .05, .03, \"nd\", \"nd\", .03, \"nd\", \"nd\", \"nd\") set_nd_nq(parent_2, 0.02) #> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.03 0.01 NA NA set_nd_nq_focus(parent_2, 0.02, loq = 0.05) #> [1] 0.12 0.09 0.05 0.03 0.01 NA NA NA NA NA parent_3 <- c(.12, .09, .05, .03, \"nd\", \"nd\", .06, \"nd\", \"nd\", \"nd\") set_nd_nq(parent_3, 0.02) #> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.06 0.01 NA NA set_nd_nq_focus(parent_3, 0.02, loq = 0.05) #> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.06 0.01 NA NA metabolite <- c(\"nd\", \"nd\", \"nd\", 0.03, 0.06, 0.10, 0.11, 0.10, 0.09, 0.05, 0.03, \"nd\", \"nd\") set_nd_nq(metabolite, 0.02) #> [1] NA NA 0.01 0.03 0.06 0.10 0.11 0.10 0.09 0.05 0.03 0.01 NA set_nd_nq_focus(metabolite, 0.02, 0.05) #> [1] 0.00 NA 0.01 0.03 0.06 0.10 0.11 0.10 0.09 0.05 0.03 0.01 NA # # Boesten et al. (2015), p. 57/58 table_8 <- matrix( c(10, 10, rep(\"nd\", 4), 10, 10, rep(\"nq\", 2), rep(\"nd\", 2), 10, 10, 10, \"nq\", \"nd\", \"nd\", \"nq\", 10, \"nq\", rep(\"nd\", 3), \"nd\", \"nq\", \"nq\", rep(\"nd\", 3), rep(\"nd\", 6), rep(\"nd\", 6)), ncol = 6, byrow = TRUE) set_nd_nq(table_8, 0.5, 1.5, time_zero_presence = TRUE) #> [,1] [,2] [,3] [,4] [,5] [,6] #> [1,] 10.00 10.00 0.25 0.25 NA NA #> [2,] 10.00 10.00 1.00 1.00 0.25 NA #> [3,] 10.00 10.00 10.00 1.00 0.25 NA #> [4,] 1.00 10.00 1.00 0.25 NA NA #> [5,] 0.25 1.00 1.00 0.25 NA NA #> [6,] NA 0.25 0.25 NA NA NA #> [7,] NA NA NA NA NA NA table_10 <- matrix( c(10, 10, rep(\"nd\", 4), 10, 10, rep(\"nd\", 4), 10, 10, 10, rep(\"nd\", 3), \"nd\", 10, rep(\"nd\", 4), rep(\"nd\", 18)), ncol = 6, byrow = TRUE) set_nd_nq(table_10, 0.5, time_zero_presence = TRUE) #> [,1] [,2] [,3] [,4] [,5] [,6] #> [1,] 10.00 10.00 0.25 NA NA NA #> [2,] 10.00 10.00 0.25 NA NA NA #> [3,] 10.00 10.00 10.00 0.25 NA NA #> [4,] 0.25 10.00 0.25 NA NA NA #> [5,] NA 0.25 NA NA NA NA #> [6,] NA NA NA NA NA NA #> [7,] NA NA NA NA NA NA"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/sigma_twocomp.html","id":null,"dir":"Reference","previous_headings":"","what":"Two-component error model — sigma_twocomp","title":"Two-component error model — sigma_twocomp","text":"Function describing standard deviation measurement error dependence measured value \\(y\\):","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/sigma_twocomp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Two-component error model — sigma_twocomp","text":"","code":"sigma_twocomp(y, sigma_low, rsd_high)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/sigma_twocomp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Two-component error model — sigma_twocomp","text":"y magnitude observed value sigma_low asymptotic minimum standard deviation low observed values rsd_high coefficient describing increase standard deviation magnitude observed value","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/sigma_twocomp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Two-component error model — sigma_twocomp","text":"standard deviation response variable.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/sigma_twocomp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Two-component error model — sigma_twocomp","text":"$$\\sigma = \\sqrt{ \\sigma_{low}^2 + y^2 * {rsd}_{high}^2}$$ sigma = sqrt(sigma_low^2 + y^2 * rsd_high^2) error model used example Werner et al. (1978). model proposed Rocke Lorenzato (1995) can written form well, assumes approximate lognormal distribution errors high values y.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/sigma_twocomp.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Two-component error model — sigma_twocomp","text":"Werner, Mario, Brooks, Samuel H., Knott, Lancaster B. (1978) Additive, Multiplicative, Mixed Analytical Errors. Clinical Chemistry 24(11), 1895-1898. Rocke, David M. Lorenzato, Stefan (1995) two-component model measurement error analytical chemistry. Technometrics 37(2), 176-184. Ranke J Meinecke S (2019) Error Models Kinetic Evaluation Chemical Degradation Data. Environments 6(12) 124 doi:10.3390/environments6120124 .","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/sigma_twocomp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Two-component error model — sigma_twocomp","text":"","code":"times <- c(0, 1, 3, 7, 14, 28, 60, 90, 120) d_pred <- data.frame(time = times, parent = 100 * exp(- 0.03 * times)) set.seed(123456) d_syn <- add_err(d_pred, function(y) sigma_twocomp(y, 1, 0.07), reps = 2, n = 1)[[1]] f_nls <- nls(value ~ SSasymp(time, 0, parent_0, lrc), data = d_syn, start = list(parent_0 = 100, lrc = -3)) library(nlme) f_gnls <- gnls(value ~ SSasymp(time, 0, parent_0, lrc), data = d_syn, na.action = na.omit, start = list(parent_0 = 100, lrc = -3)) if (length(findFunction(\"varConstProp\")) > 0) { f_gnls_tc <- update(f_gnls, weights = varConstProp()) f_gnls_tc_sf <- update(f_gnls_tc, control = list(sigma = 1)) } f_mkin <- mkinfit(\"SFO\", d_syn, error_model = \"const\", quiet = TRUE) f_mkin_tc <- mkinfit(\"SFO\", d_syn, error_model = \"tc\", quiet = TRUE) plot_res(f_mkin_tc, standardized = TRUE) AIC(f_nls, f_gnls, f_gnls_tc, f_gnls_tc_sf, f_mkin, f_mkin_tc) #> df AIC #> f_nls 3 114.4817 #> f_gnls 3 114.4817 #> f_gnls_tc 5 103.6447 #> f_gnls_tc_sf 4 101.6447 #> f_mkin 3 114.4817 #> f_mkin_tc 4 101.6446"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/status.html","id":null,"dir":"Reference","previous_headings":"","what":"Method to get status information for fit array objects — status","title":"Method to get status information for fit array objects — status","text":"Method get status information fit array objects","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/status.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Method to get status information for fit array objects — status","text":"","code":"status(object, ...) # S3 method for class 'mmkin' status(object, ...) # S3 method for class 'status.mmkin' print(x, ...) # S3 method for class 'mhmkin' status(object, ...) # S3 method for class 'status.mhmkin' print(x, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/status.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Method to get status information for fit array objects — status","text":"object object investigate ... potential future extensions x object printed","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/status.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Method to get status information for fit array objects — status","text":"object dimensions fit array suitable printing method.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/status.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Method to get status information for fit array objects — status","text":"","code":"# \\dontrun{ fits <- mmkin( c(\"SFO\", \"FOMC\"), list(\"FOCUS A\" = FOCUS_2006_A, \"FOCUS B\" = FOCUS_2006_C), quiet = TRUE) status(fits) #> dataset #> model FOCUS A FOCUS B #> SFO OK OK #> FOMC C OK #> #> C: Optimisation did not converge: #> false convergence (8) #> OK: No warnings # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Summary method for class ","title":"Summary method for class ","text":"Lists model equations, initial parameter values, optimised parameters uncertainty statistics, chi2 error levels calculated according FOCUS guidance (2006) defined therein, formation fractions, DT50 values optionally data, consisting observed, predicted residual values.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summary method for class ","text":"","code":"# S3 method for class 'mkinfit' summary(object, data = TRUE, distimes = TRUE, alpha = 0.05, ...) # S3 method for class 'summary.mkinfit' print(x, digits = max(3, getOption(\"digits\") - 3), ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summary method for class ","text":"object object class mkinfit. data logical, indicating whether data included summary. distimes logical, indicating whether DT50 DT90 values included. alpha error level confidence interval estimation t distribution ... optional arguments passed methods like print. x object class summary.mkinfit. digits Number digits use printing","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summary method for class ","text":"summary function returns list components, among others version, Rversion mkin R versions used date.fit, date.summary dates fit summary produced diffs differential equations used model use_of_ff maximum minimum use made formation fractions bpar Optimised backtransformed parameters data data (see Description ). start starting values bounds, applicable, optimised parameters. fixed values fixed parameters. errmin chi2 error levels observed variable. bparms.ode backtransformed ODE parameters, use starting parameters related models. errparms Error model parameters. ff estimated formation fractions derived fitted model. distimes DT50 DT90 values observed variable. SFORB applicable, eigenvalues fractional eigenvector component g SFORB systems model. print method called side effect, .e. printing summary.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Summary method for class ","text":"FOCUS (2006) “Guidance Document Estimating Persistence Degradation Kinetics Environmental Fate Studies Pesticides EU Registration” Report FOCUS Work Group Degradation Kinetics, EC Document Reference Sanco/10058/2005 version 2.0, 434 pp, http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summary method for class ","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Summary method for class ","text":"","code":"summary(mkinfit(\"SFO\", FOCUS_2006_A, quiet = TRUE)) #> mkin version used for fitting: 1.2.10 #> R version used for fitting: 4.4.2 #> Date of fit: Fri Feb 14 07:34:16 2025 #> Date of summary: Fri Feb 14 07:34:16 2025 #> #> Equations: #> d_parent/dt = - k_parent * parent #> #> Model predictions using solution type analytical #> #> Fitted using 131 model solutions performed in 0.009 s #> #> Error model: Constant variance #> #> Error model algorithm: OLS #> #> Starting values for parameters to be optimised: #> value type #> parent_0 101.24 state #> k_parent 0.10 deparm #> #> Starting values for the transformed parameters actually optimised: #> value lower upper #> parent_0 101.240000 -Inf Inf #> log_k_parent -2.302585 -Inf Inf #> #> Fixed parameter values: #> None #> #> Results: #> #> AIC BIC logLik #> 55.28197 55.5203 -24.64099 #> #> Optimised, transformed parameters with symmetric confidence intervals: #> Estimate Std. Error Lower Upper #> parent_0 109.200 3.70400 99.630 118.700 #> log_k_parent -3.291 0.09176 -3.527 -3.055 #> sigma 5.266 1.31600 1.882 8.649 #> #> Parameter correlation: #> parent_0 log_k_parent sigma #> parent_0 1.000e+00 5.428e-01 1.642e-07 #> log_k_parent 5.428e-01 1.000e+00 2.507e-07 #> sigma 1.642e-07 2.507e-07 1.000e+00 #> #> Backtransformed parameters: #> Confidence intervals for internally transformed parameters are asymmetric. #> t-test (unrealistically) based on the assumption of normal distribution #> for estimators of untransformed parameters. #> Estimate t value Pr(>t) Lower Upper #> parent_0 109.20000 29.47 4.218e-07 99.6300 118.70000 #> k_parent 0.03722 10.90 5.650e-05 0.0294 0.04712 #> sigma 5.26600 4.00 5.162e-03 1.8820 8.64900 #> #> FOCUS Chi2 error levels in percent: #> err.min n.optim df #> All data 8.385 2 6 #> parent 8.385 2 6 #> #> Estimated disappearance times: #> DT50 DT90 #> parent 18.62 61.87 #> #> Data: #> time variable observed predicted residual #> 0 parent 101.24 109.153 -7.9132 #> 3 parent 99.27 97.622 1.6484 #> 7 parent 90.11 84.119 5.9913 #> 14 parent 72.19 64.826 7.3641 #> 30 parent 29.71 35.738 -6.0283 #> 62 parent 5.98 10.862 -4.8818 #> 90 parent 1.54 3.831 -2.2911 #> 118 parent 0.39 1.351 -0.9613"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Summary method for class ","title":"Summary method for class ","text":"Shows status information mkinfit objects contained object gives overview ill-defined parameters calculated illparms.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summary method for class ","text":"","code":"# S3 method for class 'mmkin' summary(object, conf.level = 0.95, ...) # S3 method for class 'summary.mmkin' print(x, digits = max(3, getOption(\"digits\") - 3), ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summary method for class ","text":"object object class mmkin conf.level confidence level testing parameters ... optional arguments passed methods like print. x object class summary.mmkin. digits number digits use printing","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Summary method for class ","text":"","code":"fits <- mmkin( c(\"SFO\", \"FOMC\"), list(\"FOCUS A\" = FOCUS_2006_A, \"FOCUS C\" = FOCUS_2006_C), quiet = TRUE, cores = 1) #> Warning: Optimisation did not converge: #> false convergence (8) summary(fits) #> Error model: Constant variance #> Fitted in 0.512 s #> #> Status: #> dataset #> model FOCUS A FOCUS C #> SFO OK OK #> FOMC C OK #> #> C: Optimisation did not converge: #> false convergence (8) #> OK: No warnings #> #> Ill-defined parameters: #> dataset #> model FOCUS A FOCUS C #> SFO #> FOMC parent_0, alpha, beta, sigma"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Summary method for class ","title":"Summary method for class ","text":"Lists model equations, initial parameter values, optimised parameters fixed effects (population), random effects (deviations population mean) residual error model, well resulting endpoints formation fractions DT50 values. Optionally (default FALSE), data listed full.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summary method for class ","text":"","code":"# S3 method for class 'nlme.mmkin' summary( object, data = FALSE, verbose = FALSE, distimes = TRUE, alpha = 0.05, ... ) # S3 method for class 'summary.nlme.mmkin' print(x, digits = max(3, getOption(\"digits\") - 3), verbose = x$verbose, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summary method for class ","text":"object object class nlme.mmkin data logical, indicating whether full data included summary. verbose summary verbose? distimes logical, indicating whether DT50 DT90 values included. alpha error level confidence interval estimation t distribution ... optional arguments passed methods like print. x object class summary.nlme.mmkin digits Number digits use printing","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summary method for class ","text":"summary function returns list based nlme object obtained fit, least following additional components nlmeversion, mkinversion, Rversion nlme, mkin R versions used date.fit, date.summary dates fit summary produced diffs differential equations used degradation model use_of_ff maximum minimum use made formation fractions data data confint_trans Transformed parameters used optimisation, confidence intervals confint_back Backtransformed parameters, confidence intervals available ff estimated formation fractions derived fitted model. distimes DT50 DT90 values observed variable. SFORB applicable, eigenvalues SFORB components model. print method called side effect, .e. printing summary.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summary method for class ","text":"Johannes Ranke mkin specific parts José Pinheiro Douglas Bates components inherited nlme","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Summary method for class ","text":"","code":"# Generate five datasets following SFO kinetics sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) dt50_sfo_in_pop <- 50 k_in_pop <- log(2) / dt50_sfo_in_pop set.seed(1234) k_in <- rlnorm(5, log(k_in_pop), 0.5) SFO <- mkinmod(parent = mkinsub(\"SFO\")) pred_sfo <- function(k) { mkinpredict(SFO, c(k_parent = k), c(parent = 100), sampling_times) } ds_sfo_mean <- lapply(k_in, pred_sfo) names(ds_sfo_mean) <- paste(\"ds\", 1:5) set.seed(12345) ds_sfo_syn <- lapply(ds_sfo_mean, function(ds) { add_err(ds, sdfunc = function(value) sqrt(1^2 + value^2 * 0.07^2), n = 1)[[1]] }) # \\dontrun{ # Evaluate using mmkin and nlme library(nlme) f_mmkin <- mmkin(\"SFO\", ds_sfo_syn, quiet = TRUE, error_model = \"tc\", cores = 1) #> Warning: Optimisation did not converge: #> iteration limit reached without convergence (10) f_nlme <- nlme(f_mmkin) summary(f_nlme, data = TRUE) #> nlme version used for fitting: 3.1.166 #> mkin version used for pre-fitting: 1.2.10 #> R version used for fitting: 4.4.2 #> Date of fit: Fri Feb 14 07:34:18 2025 #> Date of summary: Fri Feb 14 07:34:18 2025 #> #> Equations: #> d_parent/dt = - k_parent * parent #> #> Data: #> 90 observations of 1 variable(s) grouped in 5 datasets #> #> Model predictions using solution type analytical #> #> Fitted in 0.187 s using 4 iterations #> #> Variance model: Two-component variance function #> #> Mean of starting values for individual parameters: #> parent_0 log_k_parent #> 101.569 -4.454 #> #> Fixed degradation parameter values: #> None #> #> Results: #> #> AIC BIC logLik #> 584.5 599.5 -286.2 #> #> Optimised, transformed parameters with symmetric confidence intervals: #> lower est. upper #> parent_0 99.371 101.592 103.814 #> log_k_parent -4.973 -4.449 -3.926 #> #> Correlation: #> parnt_0 #> log_k_parent 0.0507 #> #> Random effects: #> Formula: list(parent_0 ~ 1, log_k_parent ~ 1) #> Level: ds #> Structure: Diagonal #> parent_0 log_k_parent Residual #> StdDev: 6.921e-05 0.5863 1 #> #> Variance function: #> Structure: Constant plus proportion of variance covariate #> Formula: ~fitted(.) #> Parameter estimates: #> const prop #> 0.0001208313 0.0789967985 #> #> Backtransformed parameters with asymmetric confidence intervals: #> lower est. upper #> parent_0 99.370882 101.59243 103.81398 #> k_parent 0.006923 0.01168 0.01972 #> #> Estimated disappearance times: #> DT50 DT90 #> parent 59.32 197.1 #> #> Data: #> ds name time observed predicted residual std standardized #> ds 1 parent 0 104.1 101.592 2.50757 8.0255 0.312451 #> ds 1 parent 0 105.0 101.592 3.40757 8.0255 0.424594 #> ds 1 parent 1 98.5 100.796 -2.29571 7.9625 -0.288313 #> ds 1 parent 1 96.1 100.796 -4.69571 7.9625 -0.589725 #> ds 1 parent 3 101.9 99.221 2.67904 7.8381 0.341796 #> ds 1 parent 3 85.2 99.221 -14.02096 7.8381 -1.788812 #> ds 1 parent 7 99.1 96.145 2.95512 7.5951 0.389081 #> ds 1 parent 7 93.0 96.145 -3.14488 7.5951 -0.414065 #> ds 1 parent 14 88.1 90.989 -2.88944 7.1879 -0.401987 #> ds 1 parent 14 84.1 90.989 -6.88944 7.1879 -0.958480 #> ds 1 parent 28 80.2 81.493 -1.29305 6.4377 -0.200857 #> ds 1 parent 28 91.3 81.493 9.80695 6.4377 1.523364 #> ds 1 parent 60 65.1 63.344 1.75642 5.0039 0.351008 #> ds 1 parent 60 65.8 63.344 2.45642 5.0039 0.490898 #> ds 1 parent 90 47.8 50.018 -2.21764 3.9512 -0.561252 #> ds 1 parent 90 53.5 50.018 3.48236 3.9512 0.881335 #> ds 1 parent 120 37.6 39.495 -1.89515 3.1200 -0.607423 #> ds 1 parent 120 39.3 39.495 -0.19515 3.1200 -0.062549 #> ds 2 parent 0 107.9 101.592 6.30757 8.0255 0.785943 #> ds 2 parent 0 102.1 101.592 0.50757 8.0255 0.063245 #> ds 2 parent 1 103.8 100.058 3.74159 7.9043 0.473361 #> ds 2 parent 1 108.6 100.058 8.54159 7.9043 1.080626 #> ds 2 parent 3 91.0 97.060 -6.05952 7.6674 -0.790297 #> ds 2 parent 3 84.9 97.060 -12.15952 7.6674 -1.585874 #> ds 2 parent 7 79.3 91.329 -12.02867 7.2147 -1.667251 #> ds 2 parent 7 100.9 91.329 9.57133 7.2147 1.326647 #> ds 2 parent 14 77.3 82.102 -4.80185 6.4858 -0.740366 #> ds 2 parent 14 83.5 82.102 1.39815 6.4858 0.215571 #> ds 2 parent 28 66.8 66.351 0.44945 5.2415 0.085748 #> ds 2 parent 28 63.3 66.351 -3.05055 5.2415 -0.582002 #> ds 2 parent 60 40.8 40.775 0.02474 3.2211 0.007679 #> ds 2 parent 60 44.8 40.775 4.02474 3.2211 1.249485 #> ds 2 parent 90 27.8 25.832 1.96762 2.0407 0.964198 #> ds 2 parent 90 27.0 25.832 1.16762 2.0407 0.572171 #> ds 2 parent 120 15.2 16.366 -1.16561 1.2928 -0.901595 #> ds 2 parent 120 15.5 16.366 -0.86561 1.2928 -0.669547 #> ds 3 parent 0 97.7 101.592 -3.89243 8.0255 -0.485009 #> ds 3 parent 0 88.2 101.592 -13.39243 8.0255 -1.668740 #> ds 3 parent 1 109.9 99.218 10.68196 7.8379 1.362858 #> ds 3 parent 1 97.8 99.218 -1.41804 7.8379 -0.180921 #> ds 3 parent 3 100.5 94.634 5.86555 7.4758 0.784603 #> ds 3 parent 3 77.4 94.634 -17.23445 7.4758 -2.305360 #> ds 3 parent 7 78.3 86.093 -7.79273 6.8011 -1.145813 #> ds 3 parent 7 90.3 86.093 4.20727 6.8011 0.618620 #> ds 3 parent 14 76.0 72.958 3.04222 5.7634 0.527848 #> ds 3 parent 14 79.1 72.958 6.14222 5.7634 1.065722 #> ds 3 parent 28 46.0 52.394 -6.39404 4.1390 -1.544842 #> ds 3 parent 28 53.4 52.394 1.00596 4.1390 0.243046 #> ds 3 parent 60 25.1 24.582 0.51786 1.9419 0.266676 #> ds 3 parent 60 21.4 24.582 -3.18214 1.9419 -1.638664 #> ds 3 parent 90 11.0 12.092 -1.09202 0.9552 -1.143199 #> ds 3 parent 90 14.2 12.092 2.10798 0.9552 2.206777 #> ds 3 parent 120 5.8 5.948 -0.14810 0.4699 -0.315178 #> ds 3 parent 120 6.1 5.948 0.15190 0.4699 0.323282 #> ds 4 parent 0 95.3 101.592 -6.29243 8.0255 -0.784057 #> ds 4 parent 0 102.0 101.592 0.40757 8.0255 0.050784 #> ds 4 parent 1 104.4 101.125 3.27549 7.9885 0.410025 #> ds 4 parent 1 105.4 101.125 4.27549 7.9885 0.535205 #> ds 4 parent 3 113.7 100.195 13.50487 7.9151 1.706218 #> ds 4 parent 3 82.3 100.195 -17.89513 7.9151 -2.260886 #> ds 4 parent 7 98.1 98.362 -0.26190 7.7703 -0.033706 #> ds 4 parent 7 87.8 98.362 -10.56190 7.7703 -1.359270 #> ds 4 parent 14 97.9 95.234 2.66590 7.5232 0.354357 #> ds 4 parent 14 104.8 95.234 9.56590 7.5232 1.271521 #> ds 4 parent 28 85.0 89.274 -4.27372 7.0523 -0.606001 #> ds 4 parent 28 77.2 89.274 -12.07372 7.0523 -1.712017 #> ds 4 parent 60 82.2 77.013 5.18661 6.0838 0.852526 #> ds 4 parent 60 86.1 77.013 9.08661 6.0838 1.493571 #> ds 4 parent 90 70.5 67.053 3.44692 5.2970 0.650733 #> ds 4 parent 90 61.7 67.053 -5.35308 5.2970 -1.010591 #> ds 4 parent 120 60.0 58.381 1.61905 4.6119 0.351058 #> ds 4 parent 120 56.4 58.381 -1.98095 4.6119 -0.429530 #> ds 5 parent 0 92.6 101.592 -8.99243 8.0255 -1.120485 #> ds 5 parent 0 116.5 101.592 14.90757 8.0255 1.857531 #> ds 5 parent 1 108.0 99.914 8.08560 7.8929 1.024413 #> ds 5 parent 1 104.9 99.914 4.98560 7.8929 0.631655 #> ds 5 parent 3 100.5 96.641 3.85898 7.6343 0.505477 #> ds 5 parent 3 89.5 96.641 -7.14102 7.6343 -0.935383 #> ds 5 parent 7 91.7 90.412 1.28752 7.1423 0.180267 #> ds 5 parent 7 95.1 90.412 4.68752 7.1423 0.656304 #> ds 5 parent 14 82.2 80.463 1.73715 6.3563 0.273295 #> ds 5 parent 14 84.5 80.463 4.03715 6.3563 0.635141 #> ds 5 parent 28 60.5 63.728 -3.22788 5.0343 -0.641178 #> ds 5 parent 28 72.8 63.728 9.07212 5.0343 1.802062 #> ds 5 parent 60 38.3 37.399 0.90061 2.9544 0.304835 #> ds 5 parent 60 40.7 37.399 3.30061 2.9544 1.117174 #> ds 5 parent 90 22.5 22.692 -0.19165 1.7926 -0.106913 #> ds 5 parent 90 20.8 22.692 -1.89165 1.7926 -1.055273 #> ds 5 parent 120 13.4 13.768 -0.36790 1.0876 -0.338259 #> ds 5 parent 120 13.8 13.768 0.03210 1.0876 0.029517 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html","id":null,"dir":"Reference","previous_headings":"","what":"Summary method for class ","title":"Summary method for class ","text":"Lists model equations, initial parameter values, optimised parameters fixed effects (population), random effects (deviations population mean) residual error model, well resulting endpoints formation fractions DT50 values. Optionally (default FALSE), data listed full.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summary method for class ","text":"","code":"# S3 method for class 'saem.mmkin' summary( object, data = FALSE, verbose = FALSE, covariates = NULL, covariate_quantile = 0.5, distimes = TRUE, ... ) # S3 method for class 'summary.saem.mmkin' print(x, digits = max(3, getOption(\"digits\") - 3), verbose = x$verbose, ...)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summary method for class ","text":"object object class saem.mmkin data logical, indicating whether full data included summary. verbose summary verbose? covariates Numeric vector covariate values variables covariate models object. given, overrides 'covariate_quantile'. covariate_quantile argument effect fitted object covariate models. , default show endpoints median covariate values (50th percentile). distimes logical, indicating whether DT50 DT90 values included. ... optional arguments passed methods like print. x object class summary.saem.mmkin digits Number digits use printing","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summary method for class ","text":"summary function returns list based saemix::SaemixObject obtained fit, least following additional components saemixversion, mkinversion, Rversion saemix, mkin R versions used date.fit, date.summary dates fit summary produced diffs differential equations used degradation model use_of_ff maximum minimum use made formation fractions data data confint_trans Transformed parameters used optimisation, confidence intervals confint_back Backtransformed parameters, confidence intervals available confint_errmod Error model parameters confidence intervals ff estimated formation fractions derived fitted model. distimes DT50 DT90 values observed variable. SFORB applicable, eigenvalues SFORB components model. print method called side effect, .e. printing summary.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summary method for class ","text":"Johannes Ranke mkin specific parts saemix authors parts inherited saemix.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Summary method for class ","text":"","code":"# Generate five datasets following DFOP-SFO kinetics sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) dfop_sfo <- mkinmod(parent = mkinsub(\"DFOP\", \"m1\"), m1 = mkinsub(\"SFO\"), quiet = TRUE) set.seed(1234) k1_in <- rlnorm(5, log(0.1), 0.3) k2_in <- rlnorm(5, log(0.02), 0.3) g_in <- plogis(rnorm(5, qlogis(0.5), 0.3)) f_parent_to_m1_in <- plogis(rnorm(5, qlogis(0.3), 0.3)) k_m1_in <- rlnorm(5, log(0.02), 0.3) pred_dfop_sfo <- function(k1, k2, g, f_parent_to_m1, k_m1) { mkinpredict(dfop_sfo, c(k1 = k1, k2 = k2, g = g, f_parent_to_m1 = f_parent_to_m1, k_m1 = k_m1), c(parent = 100, m1 = 0), sampling_times) } ds_mean_dfop_sfo <- lapply(1:5, function(i) { mkinpredict(dfop_sfo, c(k1 = k1_in[i], k2 = k2_in[i], g = g_in[i], f_parent_to_m1 = f_parent_to_m1_in[i], k_m1 = k_m1_in[i]), c(parent = 100, m1 = 0), sampling_times) }) names(ds_mean_dfop_sfo) <- paste(\"ds\", 1:5) ds_syn_dfop_sfo <- lapply(ds_mean_dfop_sfo, function(ds) { add_err(ds, sdfunc = function(value) sqrt(1^2 + value^2 * 0.07^2), n = 1)[[1]] }) # \\dontrun{ # Evaluate using mmkin and saem f_mmkin_dfop_sfo <- mmkin(list(dfop_sfo), ds_syn_dfop_sfo, quiet = TRUE, error_model = \"tc\", cores = 5) f_saem_dfop_sfo <- saem(f_mmkin_dfop_sfo) print(f_saem_dfop_sfo) #> Kinetic nonlinear mixed-effects model fit by SAEM #> Structural model: #> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * #> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) #> * parent #> d_m1/dt = + f_parent_to_m1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) #> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * #> exp(-k2 * time))) * parent - k_m1 * m1 #> #> Data: #> 171 observations of 2 variable(s) grouped in 5 datasets #> #> Likelihood computed by importance sampling #> AIC BIC logLik #> 810.8 805.4 -391.4 #> #> Fitted parameters: #> estimate lower upper #> parent_0 100.966822 97.90584 104.02780 #> log_k_m1 -4.076164 -4.17485 -3.97748 #> f_parent_qlogis -0.940902 -1.35358 -0.52823 #> log_k1 -2.363988 -2.71690 -2.01107 #> log_k2 -4.060016 -4.21743 -3.90260 #> g_qlogis -0.029999 -0.44766 0.38766 #> a.1 0.876272 0.67790 1.07464 #> b.1 0.079594 0.06521 0.09398 #> SD.parent_0 0.076322 -76.45825 76.61089 #> SD.log_k_m1 0.005052 -1.08943 1.09953 #> SD.f_parent_qlogis 0.446968 0.16577 0.72816 #> SD.log_k1 0.348786 0.09502 0.60255 #> SD.log_k2 0.147456 0.03111 0.26380 #> SD.g_qlogis 0.348244 0.02794 0.66854 illparms(f_saem_dfop_sfo) #> [1] \"sd(parent_0)\" \"sd(log_k_m1)\" f_saem_dfop_sfo_2 <- update(f_saem_dfop_sfo, no_random_effect = c(\"parent_0\", \"log_k_m1\")) illparms(f_saem_dfop_sfo_2) intervals(f_saem_dfop_sfo_2) #> Approximate 95% confidence intervals #> #> Fixed effects: #> lower est. upper #> parent_0 98.04247057 101.09950884 104.15654711 #> k_m1 0.01528983 0.01687734 0.01862969 #> f_parent_to_m1 0.20447650 0.27932896 0.36887691 #> k1 0.06779844 0.09638524 0.13702550 #> k2 0.01495629 0.01741775 0.02028431 #> g 0.37669311 0.48368409 0.59219202 #> #> Random effects: #> lower est. upper #> sd(f_parent_qlogis) 0.16515113 0.4448330 0.7245148 #> sd(log_k1) 0.08982399 0.3447403 0.5996565 #> sd(log_k2) 0.02806780 0.1419560 0.2558443 #> sd(g_qlogis) 0.04908644 0.3801993 0.7113121 #> #> #> lower est. upper #> a.1 0.67993373 0.87630147 1.07266921 #> b.1 0.06522297 0.07920531 0.09318766 summary(f_saem_dfop_sfo_2, data = TRUE) #> saemix version used for fitting: 3.3 #> mkin version used for pre-fitting: 1.2.10 #> R version used for fitting: 4.4.2 #> Date of fit: Fri Feb 14 07:34:33 2025 #> Date of summary: Fri Feb 14 07:34:33 2025 #> #> Equations: #> d_parent/dt = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * #> time)) / (g * exp(-k1 * time) + (1 - g) * exp(-k2 * time))) #> * parent #> d_m1/dt = + f_parent_to_m1 * ((k1 * g * exp(-k1 * time) + k2 * (1 - g) #> * exp(-k2 * time)) / (g * exp(-k1 * time) + (1 - g) * #> exp(-k2 * time))) * parent - k_m1 * m1 #> #> Data: #> 171 observations of 2 variable(s) grouped in 5 datasets #> #> Model predictions using solution type analytical #> #> Fitted in 8.903 s #> Using 300, 100 iterations and 10 chains #> #> Variance model: Two-component variance function #> #> Starting values for degradation parameters: #> parent_0 log_k_m1 f_parent_qlogis log_k1 log_k2 #> 101.65645 -4.05368 -0.94311 -2.35943 -4.07006 #> g_qlogis #> -0.01133 #> #> Fixed degradation parameter values: #> None #> #> Starting values for random effects (square root of initial entries in omega): #> parent_0 log_k_m1 f_parent_qlogis log_k1 log_k2 g_qlogis #> parent_0 6.742 0.0000 0.0000 0.0000 0.0000 0.000 #> log_k_m1 0.000 0.2236 0.0000 0.0000 0.0000 0.000 #> f_parent_qlogis 0.000 0.0000 0.5572 0.0000 0.0000 0.000 #> log_k1 0.000 0.0000 0.0000 0.8031 0.0000 0.000 #> log_k2 0.000 0.0000 0.0000 0.0000 0.2931 0.000 #> g_qlogis 0.000 0.0000 0.0000 0.0000 0.0000 0.807 #> #> Starting values for error model parameters: #> a.1 b.1 #> 1 1 #> #> Results: #> #> Likelihood computed by importance sampling #> AIC BIC logLik #> 806.9 802.2 -391.5 #> #> Optimised parameters: #> est. lower upper #> parent_0 101.09951 98.04247 104.15655 #> log_k_m1 -4.08178 -4.18057 -3.98300 #> f_parent_qlogis -0.94779 -1.35855 -0.53704 #> log_k1 -2.33940 -2.69122 -1.98759 #> log_k2 -4.05027 -4.20262 -3.89791 #> g_qlogis -0.06529 -0.50361 0.37303 #> a.1 0.87630 0.67993 1.07267 #> b.1 0.07921 0.06522 0.09319 #> SD.f_parent_qlogis 0.44483 0.16515 0.72451 #> SD.log_k1 0.34474 0.08982 0.59966 #> SD.log_k2 0.14196 0.02807 0.25584 #> SD.g_qlogis 0.38020 0.04909 0.71131 #> #> Correlation: #> parnt_0 lg_k_m1 f_prnt_ log_k1 log_k2 #> log_k_m1 -0.4716 #> f_parent_qlogis -0.2394 0.2617 #> log_k1 0.1677 -0.1566 -0.0659 #> log_k2 0.0165 0.0638 0.0045 0.2013 #> g_qlogis 0.1118 -0.1118 -0.0340 -0.2324 -0.3419 #> #> Random effects: #> est. lower upper #> SD.f_parent_qlogis 0.4448 0.16515 0.7245 #> SD.log_k1 0.3447 0.08982 0.5997 #> SD.log_k2 0.1420 0.02807 0.2558 #> SD.g_qlogis 0.3802 0.04909 0.7113 #> #> Variance model: #> est. lower upper #> a.1 0.87630 0.67993 1.07267 #> b.1 0.07921 0.06522 0.09319 #> #> Backtransformed parameters: #> est. lower upper #> parent_0 101.09951 98.04247 104.15655 #> k_m1 0.01688 0.01529 0.01863 #> f_parent_to_m1 0.27933 0.20448 0.36888 #> k1 0.09639 0.06780 0.13703 #> k2 0.01742 0.01496 0.02028 #> g 0.48368 0.37669 0.59219 #> #> Resulting formation fractions: #> ff #> parent_m1 0.2793 #> parent_sink 0.7207 #> #> Estimated disappearance times: #> DT50 DT90 DT50back DT50_k1 DT50_k2 #> parent 15.66 94.28 28.38 7.191 39.8 #> m1 41.07 136.43 NA NA NA #> #> Data: #> ds name time observed predicted residual std standardized #> ds 1 parent 0 89.8 1.011e+02 -11.29951 8.0554 -1.402721 #> ds 1 parent 0 104.1 1.011e+02 3.00049 8.0554 0.372481 #> ds 1 parent 1 88.7 9.624e+01 -7.53600 7.6726 -0.982195 #> ds 1 parent 1 95.5 9.624e+01 -0.73600 7.6726 -0.095925 #> ds 1 parent 3 81.8 8.736e+01 -5.55672 6.9744 -0.796732 #> ds 1 parent 3 94.5 8.736e+01 7.14328 6.9744 1.024217 #> ds 1 parent 7 71.5 7.251e+01 -1.00511 5.8093 -0.173019 #> ds 1 parent 7 70.3 7.251e+01 -2.20511 5.8093 -0.379585 #> ds 1 parent 14 54.2 5.356e+01 0.63921 4.3319 0.147560 #> ds 1 parent 14 49.6 5.356e+01 -3.96079 4.3319 -0.914340 #> ds 1 parent 28 31.5 3.175e+01 -0.25429 2.6634 -0.095475 #> ds 1 parent 28 28.8 3.175e+01 -2.95429 2.6634 -1.109218 #> ds 1 parent 60 12.1 1.281e+01 -0.71388 1.3409 -0.532390 #> ds 1 parent 60 13.6 1.281e+01 0.78612 1.3409 0.586271 #> ds 1 parent 90 6.2 6.405e+00 -0.20462 1.0125 -0.202083 #> ds 1 parent 90 8.3 6.405e+00 1.89538 1.0125 1.871910 #> ds 1 parent 120 2.2 3.329e+00 -1.12941 0.9151 -1.234165 #> ds 1 parent 120 2.4 3.329e+00 -0.92941 0.9151 -1.015615 #> ds 1 m1 1 0.3 1.177e+00 -0.87699 0.8812 -0.995168 #> ds 1 m1 1 0.2 1.177e+00 -0.97699 0.8812 -1.108644 #> ds 1 m1 3 2.2 3.268e+00 -1.06821 0.9137 -1.169063 #> ds 1 m1 3 3.0 3.268e+00 -0.26821 0.9137 -0.293536 #> ds 1 m1 7 6.5 6.555e+00 -0.05539 1.0186 -0.054377 #> ds 1 m1 7 5.0 6.555e+00 -1.55539 1.0186 -1.527022 #> ds 1 m1 14 10.2 1.017e+01 0.03108 1.1902 0.026117 #> ds 1 m1 14 9.5 1.017e+01 -0.66892 1.1902 -0.562010 #> ds 1 m1 28 12.2 1.270e+01 -0.50262 1.3342 -0.376708 #> ds 1 m1 28 13.4 1.270e+01 0.69738 1.3342 0.522686 #> ds 1 m1 60 11.8 1.078e+01 1.01734 1.2236 0.831403 #> ds 1 m1 60 13.2 1.078e+01 2.41734 1.2236 1.975530 #> ds 1 m1 90 6.6 7.686e+00 -1.08586 1.0670 -1.017675 #> ds 1 m1 90 9.3 7.686e+00 1.61414 1.0670 1.512779 #> ds 1 m1 120 3.5 5.205e+00 -1.70467 0.9684 -1.760250 #> ds 1 m1 120 5.4 5.205e+00 0.19533 0.9684 0.201701 #> ds 2 parent 0 118.0 1.011e+02 16.90049 8.0554 2.098026 #> ds 2 parent 0 99.8 1.011e+02 -1.29951 8.0554 -0.161321 #> ds 2 parent 1 90.2 9.574e+01 -5.53784 7.6334 -0.725473 #> ds 2 parent 1 94.6 9.574e+01 -1.13784 7.6334 -0.149060 #> ds 2 parent 3 96.1 8.638e+01 9.72233 6.8975 1.409551 #> ds 2 parent 3 78.4 8.638e+01 -7.97767 6.8975 -1.156610 #> ds 2 parent 7 77.9 7.194e+01 5.95854 5.7651 1.033547 #> ds 2 parent 7 77.7 7.194e+01 5.75854 5.7651 0.998856 #> ds 2 parent 14 56.0 5.558e+01 0.42141 4.4885 0.093888 #> ds 2 parent 14 54.7 5.558e+01 -0.87859 4.4885 -0.195742 #> ds 2 parent 28 36.6 3.852e+01 -1.92382 3.1746 -0.605999 #> ds 2 parent 28 36.8 3.852e+01 -1.72382 3.1746 -0.543000 #> ds 2 parent 60 22.1 2.108e+01 1.02043 1.8856 0.541168 #> ds 2 parent 60 24.7 2.108e+01 3.62043 1.8856 1.920034 #> ds 2 parent 90 12.4 1.250e+01 -0.09675 1.3220 -0.073184 #> ds 2 parent 90 10.8 1.250e+01 -1.69675 1.3220 -1.283492 #> ds 2 parent 120 6.8 7.426e+00 -0.62587 1.0554 -0.593027 #> ds 2 parent 120 7.9 7.426e+00 0.47413 1.0554 0.449242 #> ds 2 m1 1 1.3 1.417e+00 -0.11735 0.8835 -0.132825 #> ds 2 m1 3 3.7 3.823e+00 -0.12301 0.9271 -0.132673 #> ds 2 m1 3 4.7 3.823e+00 0.87699 0.9271 0.945909 #> ds 2 m1 7 8.1 7.288e+00 0.81180 1.0494 0.773619 #> ds 2 m1 7 7.9 7.288e+00 0.61180 1.0494 0.583025 #> ds 2 m1 14 10.1 1.057e+01 -0.46957 1.2119 -0.387459 #> ds 2 m1 14 10.3 1.057e+01 -0.26957 1.2119 -0.222432 #> ds 2 m1 28 10.7 1.234e+01 -1.63555 1.3124 -1.246185 #> ds 2 m1 28 12.2 1.234e+01 -0.13555 1.3124 -0.103281 #> ds 2 m1 60 10.7 1.065e+01 0.04641 1.2165 0.038151 #> ds 2 m1 60 12.5 1.065e+01 1.84641 1.2165 1.517773 #> ds 2 m1 90 9.1 8.177e+00 0.92337 1.0896 0.847403 #> ds 2 m1 90 7.4 8.177e+00 -0.77663 1.0896 -0.712734 #> ds 2 m1 120 6.1 5.966e+00 0.13404 0.9956 0.134631 #> ds 2 m1 120 4.5 5.966e+00 -1.46596 0.9956 -1.472460 #> ds 3 parent 0 106.2 1.011e+02 5.10049 8.0554 0.633175 #> ds 3 parent 0 106.9 1.011e+02 5.80049 8.0554 0.720073 #> ds 3 parent 1 107.4 9.365e+01 13.74627 7.4695 1.840332 #> ds 3 parent 1 96.1 9.365e+01 2.44627 7.4695 0.327504 #> ds 3 parent 3 79.4 8.139e+01 -1.99118 6.5059 -0.306058 #> ds 3 parent 3 82.6 8.139e+01 1.20882 6.5059 0.185803 #> ds 3 parent 7 63.9 6.445e+01 -0.54666 5.1792 -0.105549 #> ds 3 parent 7 62.4 6.445e+01 -2.04666 5.1792 -0.395170 #> ds 3 parent 14 51.0 4.830e+01 2.69944 3.9247 0.687800 #> ds 3 parent 14 47.1 4.830e+01 -1.20056 3.9247 -0.305896 #> ds 3 parent 28 36.1 3.426e+01 1.83885 2.8516 0.644839 #> ds 3 parent 28 36.6 3.426e+01 2.33885 2.8516 0.820177 #> ds 3 parent 60 20.1 1.968e+01 0.42208 1.7881 0.236053 #> ds 3 parent 60 19.8 1.968e+01 0.12208 1.7881 0.068273 #> ds 3 parent 90 11.3 1.194e+01 -0.64013 1.2893 -0.496496 #> ds 3 parent 90 10.7 1.194e+01 -1.24013 1.2893 -0.961865 #> ds 3 parent 120 8.2 7.247e+00 0.95264 1.0476 0.909381 #> ds 3 parent 120 7.3 7.247e+00 0.05264 1.0476 0.050254 #> ds 3 m1 0 0.8 -2.956e-12 0.80000 0.8763 0.912928 #> ds 3 m1 1 1.8 1.757e+00 0.04318 0.8873 0.048666 #> ds 3 m1 1 2.3 1.757e+00 0.54318 0.8873 0.612186 #> ds 3 m1 3 4.2 4.566e+00 -0.36607 0.9480 -0.386149 #> ds 3 m1 3 4.1 4.566e+00 -0.46607 0.9480 -0.491634 #> ds 3 m1 7 6.8 8.157e+00 -1.35680 1.0887 -1.246241 #> ds 3 m1 7 10.1 8.157e+00 1.94320 1.0887 1.784855 #> ds 3 m1 14 11.4 1.085e+01 0.55367 1.2272 0.451182 #> ds 3 m1 14 12.8 1.085e+01 1.95367 1.2272 1.592023 #> ds 3 m1 28 11.5 1.149e+01 0.01098 1.2633 0.008689 #> ds 3 m1 28 10.6 1.149e+01 -0.88902 1.2633 -0.703717 #> ds 3 m1 60 7.5 9.295e+00 -1.79500 1.1445 -1.568351 #> ds 3 m1 60 8.6 9.295e+00 -0.69500 1.1445 -0.607245 #> ds 3 m1 90 7.3 7.017e+00 0.28305 1.0377 0.272775 #> ds 3 m1 90 8.1 7.017e+00 1.08305 1.0377 1.043720 #> ds 3 m1 120 5.3 5.087e+00 0.21272 0.9645 0.220547 #> ds 3 m1 120 3.8 5.087e+00 -1.28728 0.9645 -1.334660 #> ds 4 parent 0 104.7 1.011e+02 3.60049 8.0554 0.446965 #> ds 4 parent 0 88.3 1.011e+02 -12.79951 8.0554 -1.588930 #> ds 4 parent 1 94.2 9.755e+01 -3.35176 7.7762 -0.431030 #> ds 4 parent 1 94.6 9.755e+01 -2.95176 7.7762 -0.379591 #> ds 4 parent 3 78.1 9.095e+01 -12.85198 7.2570 -1.770981 #> ds 4 parent 3 96.5 9.095e+01 5.54802 7.2570 0.764508 #> ds 4 parent 7 76.2 7.949e+01 -3.29267 6.3569 -0.517966 #> ds 4 parent 7 77.8 7.949e+01 -1.69267 6.3569 -0.266272 #> ds 4 parent 14 70.8 6.384e+01 6.95621 5.1321 1.355423 #> ds 4 parent 14 67.3 6.384e+01 3.45621 5.1321 0.673445 #> ds 4 parent 28 43.1 4.345e+01 -0.35291 3.5515 -0.099370 #> ds 4 parent 28 45.1 4.345e+01 1.64709 3.5515 0.463771 #> ds 4 parent 60 21.3 2.137e+01 -0.07478 1.9063 -0.039229 #> ds 4 parent 60 23.5 2.137e+01 2.12522 1.9063 1.114813 #> ds 4 parent 90 11.8 1.205e+01 -0.24925 1.2957 -0.192375 #> ds 4 parent 90 12.1 1.205e+01 0.05075 1.2957 0.039168 #> ds 4 parent 120 7.0 6.967e+00 0.03315 1.0356 0.032013 #> ds 4 parent 120 6.2 6.967e+00 -0.76685 1.0356 -0.740510 #> ds 4 m1 0 1.6 1.421e-13 1.60000 0.8763 1.825856 #> ds 4 m1 1 0.9 7.250e-01 0.17503 0.8782 0.199310 #> ds 4 m1 3 3.7 2.038e+00 1.66201 0.8910 1.865236 #> ds 4 m1 3 2.0 2.038e+00 -0.03799 0.8910 -0.042637 #> ds 4 m1 7 3.6 4.186e+00 -0.58623 0.9369 -0.625692 #> ds 4 m1 7 3.8 4.186e+00 -0.38623 0.9369 -0.412230 #> ds 4 m1 14 7.1 6.752e+00 0.34768 1.0266 0.338666 #> ds 4 m1 14 6.6 6.752e+00 -0.15232 1.0266 -0.148372 #> ds 4 m1 28 9.5 9.034e+00 0.46628 1.1313 0.412159 #> ds 4 m1 28 9.3 9.034e+00 0.26628 1.1313 0.235373 #> ds 4 m1 60 8.3 8.634e+00 -0.33359 1.1115 -0.300112 #> ds 4 m1 60 9.0 8.634e+00 0.36641 1.1115 0.329645 #> ds 4 m1 90 6.6 6.671e+00 -0.07091 1.0233 -0.069295 #> ds 4 m1 90 7.7 6.671e+00 1.02909 1.0233 1.005691 #> ds 4 m1 120 3.7 4.823e+00 -1.12301 0.9559 -1.174763 #> ds 4 m1 120 3.5 4.823e+00 -1.32301 0.9559 -1.383979 #> ds 5 parent 0 110.4 1.011e+02 9.30049 8.0554 1.154563 #> ds 5 parent 0 112.1 1.011e+02 11.00049 8.0554 1.365601 #> ds 5 parent 1 93.5 9.440e+01 -0.90098 7.5282 -0.119681 #> ds 5 parent 1 91.0 9.440e+01 -3.40098 7.5282 -0.451764 #> ds 5 parent 3 71.0 8.287e+01 -11.86698 6.6217 -1.792122 #> ds 5 parent 3 89.7 8.287e+01 6.83302 6.6217 1.031907 #> ds 5 parent 7 60.4 6.562e+01 -5.22329 5.2711 -0.990936 #> ds 5 parent 7 59.1 6.562e+01 -6.52329 5.2711 -1.237566 #> ds 5 parent 14 56.5 4.739e+01 9.10588 3.8548 2.362225 #> ds 5 parent 14 47.0 4.739e+01 -0.39412 3.8548 -0.102240 #> ds 5 parent 28 30.2 3.118e+01 -0.98128 2.6206 -0.374451 #> ds 5 parent 28 23.9 3.118e+01 -7.28128 2.6206 -2.778500 #> ds 5 parent 60 17.0 1.804e+01 -1.03959 1.6761 -0.620224 #> ds 5 parent 60 18.7 1.804e+01 0.66041 1.6761 0.394008 #> ds 5 parent 90 11.3 1.165e+01 -0.35248 1.2727 -0.276958 #> ds 5 parent 90 11.9 1.165e+01 0.24752 1.2727 0.194488 #> ds 5 parent 120 9.0 7.556e+00 1.44368 1.0612 1.360449 #> ds 5 parent 120 8.1 7.556e+00 0.54368 1.0612 0.512338 #> ds 5 m1 0 0.7 -1.421e-14 0.70000 0.8763 0.798812 #> ds 5 m1 1 3.0 3.160e+00 -0.15979 0.9113 -0.175340 #> ds 5 m1 1 2.6 3.160e+00 -0.55979 0.9113 -0.614254 #> ds 5 m1 3 5.1 8.448e+00 -3.34789 1.1026 -3.036487 #> ds 5 m1 3 7.5 8.448e+00 -0.94789 1.1026 -0.859720 #> ds 5 m1 7 16.5 1.581e+01 0.68760 1.5286 0.449839 #> ds 5 m1 7 19.0 1.581e+01 3.18760 1.5286 2.085373 #> ds 5 m1 14 22.9 2.218e+01 0.71983 1.9632 0.366658 #> ds 5 m1 14 23.2 2.218e+01 1.01983 1.9632 0.519469 #> ds 5 m1 28 22.2 2.425e+01 -2.05105 2.1113 -0.971479 #> ds 5 m1 28 24.4 2.425e+01 0.14895 2.1113 0.070552 #> ds 5 m1 60 15.5 1.876e+01 -3.25968 1.7250 -1.889646 #> ds 5 m1 60 19.8 1.876e+01 1.04032 1.7250 0.603074 #> ds 5 m1 90 14.9 1.365e+01 1.25477 1.3914 0.901806 #> ds 5 m1 90 14.2 1.365e+01 0.55477 1.3914 0.398714 #> ds 5 m1 120 10.9 9.726e+00 1.17443 1.1667 1.006587 #> ds 5 m1 120 10.4 9.726e+00 0.67443 1.1667 0.578044 # Add a correlation between random effects of g and k2 cov_model_3 <- f_saem_dfop_sfo_2$so@model@covariance.model cov_model_3[\"log_k2\", \"g_qlogis\"] <- 1 cov_model_3[\"g_qlogis\", \"log_k2\"] <- 1 f_saem_dfop_sfo_3 <- update(f_saem_dfop_sfo, covariance.model = cov_model_3) intervals(f_saem_dfop_sfo_3) #> Approximate 95% confidence intervals #> #> Fixed effects: #> lower est. upper #> parent_0 98.42519529 101.51623115 104.60726702 #> k_m1 0.01505059 0.01662123 0.01835577 #> f_parent_to_m1 0.20100222 0.27477835 0.36332008 #> k1 0.07347479 0.10139028 0.13991179 #> k2 0.01469861 0.01771120 0.02134125 #> g 0.35506898 0.46263682 0.57379888 #> #> Random effects: #> lower est. upper #> sd(f_parent_qlogis) 0.16472883 0.4435866 0.7224443 #> sd(log_k1) 0.05323856 0.2981783 0.5431180 #> sd(log_k2) 0.05013379 0.1912531 0.3323723 #> sd(g_qlogis) 0.04710647 0.3997298 0.7523531 #> corr(log_k2,g_qlogis) -1.31087397 -0.5845703 0.1417334 #> #> #> lower est. upper #> a.1 0.67769608 0.87421677 1.07073746 #> b.1 0.06525119 0.07925135 0.09325151 # The correlation does not improve the fit judged by AIC and BIC, although # the likelihood is higher with the additional parameter anova(f_saem_dfop_sfo, f_saem_dfop_sfo_2, f_saem_dfop_sfo_3) #> Data: 171 observations of 2 variable(s) grouped in 5 datasets #> #> npar AIC BIC Lik #> f_saem_dfop_sfo_2 12 806.91 802.23 -391.46 #> f_saem_dfop_sfo_3 13 807.96 802.88 -390.98 #> f_saem_dfop_sfo 14 810.83 805.36 -391.41 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary_listing.html","id":null,"dir":"Reference","previous_headings":"","what":"Display the output of a summary function according to the output format — summary_listing","title":"Display the output of a summary function according to the output format — summary_listing","text":"function intended use R markdown code chunk chunk option results = \"asis\".","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary_listing.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Display the output of a summary function according to the output format — summary_listing","text":"","code":"summary_listing(object, caption = NULL, label = NULL, clearpage = TRUE) tex_listing(object, caption = NULL, label = NULL, clearpage = TRUE) html_listing(object, caption = NULL)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/summary_listing.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Display the output of a summary function according to the output format — summary_listing","text":"object object summary listed caption optional caption label optional label, ignored html output clearpage new page started listing? Ignored html output","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/synthetic_data_for_UBA_2014.html","id":null,"dir":"Reference","previous_headings":"","what":"Synthetic datasets for one parent compound with two metabolites — synthetic_data_for_UBA_2014","title":"Synthetic datasets for one parent compound with two metabolites — synthetic_data_for_UBA_2014","text":"12 datasets generated using four different models three different variance components. four models either SFO DFOP model either two sequential two parallel metabolites. Variance component '' based normal distribution standard deviation 3, Variance component 'b' also based normal distribution, standard deviation 7. Variance component 'c' based error model Rocke Lorenzato (1995), minimum standard deviation (small y values) 0.5, proportionality constant 0.07 increase standard deviation y. Note simplified version error model proposed Rocke Lorenzato (1995), model error measured values approximates lognormal distribution high values, whereas using normally distributed error components along. Initial concentrations metabolites values adding variance component resulted value assumed limit detection 0.1 set NA. example, first dataset title SFO_lin_a based SFO model two sequential metabolites (linear pathway), added variance component ''. Compare also code example section see degradation models.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/synthetic_data_for_UBA_2014.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Synthetic datasets for one parent compound with two metabolites — synthetic_data_for_UBA_2014","text":"","code":"synthetic_data_for_UBA_2014"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/synthetic_data_for_UBA_2014.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Synthetic datasets for one parent compound with two metabolites — synthetic_data_for_UBA_2014","text":"list containing twelve datasets R6 class defined mkinds, containing, among others, following components title name dataset, e.g. SFO_lin_a data data frame data form expected mkinfit","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/synthetic_data_for_UBA_2014.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Synthetic datasets for one parent compound with two metabolites — synthetic_data_for_UBA_2014","text":"Ranke (2014) Prüfung und Validierung von Modellierungssoftware als Alternative zu ModelMaker 4.0, Umweltbundesamt Projektnummer 27452 Rocke, David M. und Lorenzato, Stefan (1995) two-component model measurement error analytical chemistry. Technometrics 37(2), 176-184.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/synthetic_data_for_UBA_2014.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Synthetic datasets for one parent compound with two metabolites — synthetic_data_for_UBA_2014","text":"","code":"# \\dontrun{ # The data have been generated using the following kinetic models m_synth_SFO_lin <- mkinmod(parent = list(type = \"SFO\", to = \"M1\"), M1 = list(type = \"SFO\", to = \"M2\"), M2 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded m_synth_SFO_par <- mkinmod(parent = list(type = \"SFO\", to = c(\"M1\", \"M2\"), sink = FALSE), M1 = list(type = \"SFO\"), M2 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded m_synth_DFOP_lin <- mkinmod(parent = list(type = \"DFOP\", to = \"M1\"), M1 = list(type = \"SFO\", to = \"M2\"), M2 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded m_synth_DFOP_par <- mkinmod(parent = list(type = \"DFOP\", to = c(\"M1\", \"M2\"), sink = FALSE), M1 = list(type = \"SFO\"), M2 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded # The model predictions without intentional error were generated as follows sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) d_synth_SFO_lin <- mkinpredict(m_synth_SFO_lin, c(k_parent = 0.7, f_parent_to_M1 = 0.8, k_M1 = 0.3, f_M1_to_M2 = 0.7, k_M2 = 0.02), c(parent = 100, M1 = 0, M2 = 0), sampling_times) d_synth_DFOP_lin <- mkinpredict(m_synth_DFOP_lin, c(k1 = 0.2, k2 = 0.02, g = 0.5, f_parent_to_M1 = 0.5, k_M1 = 0.3, f_M1_to_M2 = 0.7, k_M2 = 0.02), c(parent = 100, M1 = 0, M2 = 0), sampling_times) d_synth_SFO_par <- mkinpredict(m_synth_SFO_par, c(k_parent = 0.2, f_parent_to_M1 = 0.8, k_M1 = 0.01, f_parent_to_M2 = 0.2, k_M2 = 0.02), c(parent = 100, M1 = 0, M2 = 0), sampling_times) d_synth_DFOP_par <- mkinpredict(m_synth_DFOP_par, c(k1 = 0.3, k2 = 0.02, g = 0.7, f_parent_to_M1 = 0.6, k_M1 = 0.04, f_parent_to_M2 = 0.4, k_M2 = 0.01), c(parent = 100, M1 = 0, M2 = 0), sampling_times) # Construct names for datasets with errors d_synth_names = paste0(\"d_synth_\", c(\"SFO_lin\", \"SFO_par\", \"DFOP_lin\", \"DFOP_par\")) # Original function used or adding errors. The add_err function now published # with this package is a slightly generalised version where the names of # secondary compartments that should have an initial value of zero (M1 and M2 # in this case) are not hardcoded any more. # add_err = function(d, sdfunc, LOD = 0.1, reps = 2, seed = 123456789) # { # set.seed(seed) # d_long = mkin_wide_to_long(d, time = \"time\") # d_rep = data.frame(lapply(d_long, rep, each = 2)) # d_rep$value = rnorm(length(d_rep$value), d_rep$value, sdfunc(d_rep$value)) # # d_rep[d_rep$time == 0 & d_rep$name %in% c(\"M1\", \"M2\"), \"value\"] <- 0 # d_NA <- transform(d_rep, value = ifelse(value < LOD, NA, value)) # d_NA$value <- round(d_NA$value, 1) # return(d_NA) # } # The following is the simplified version of the two-component model of Rocke # and Lorenzato (1995) sdfunc_twocomp = function(value, sd_low, rsd_high) { sqrt(sd_low^2 + value^2 * rsd_high^2) } # Add the errors. for (d_synth_name in d_synth_names) { d_synth = get(d_synth_name) assign(paste0(d_synth_name, \"_a\"), add_err(d_synth, function(value) 3)) assign(paste0(d_synth_name, \"_b\"), add_err(d_synth, function(value) 7)) assign(paste0(d_synth_name, \"_c\"), add_err(d_synth, function(value) sdfunc_twocomp(value, 0.5, 0.07))) } d_synth_err_names = c( paste(rep(d_synth_names, each = 3), letters[1:3], sep = \"_\") ) # This is just one example of an evaluation using the kinetic model used for # the generation of the data fit <- mkinfit(m_synth_SFO_lin, synthetic_data_for_UBA_2014[[1]]$data, quiet = TRUE) plot_sep(fit) summary(fit) #> mkin version used for fitting: 1.2.10 #> R version used for fitting: 4.4.2 #> Date of fit: Fri Feb 14 07:34:43 2025 #> Date of summary: Fri Feb 14 07:34:43 2025 #> #> Equations: #> d_parent/dt = - k_parent * parent #> d_M1/dt = + f_parent_to_M1 * k_parent * parent - k_M1 * M1 #> d_M2/dt = + f_M1_to_M2 * k_M1 * M1 - k_M2 * M2 #> #> Model predictions using solution type deSolve #> #> Fitted using 848 model solutions performed in 0.17 s #> #> Error model: Constant variance #> #> Error model algorithm: OLS #> #> Starting values for parameters to be optimised: #> value type #> parent_0 101.3500 state #> k_parent 0.1000 deparm #> k_M1 0.1001 deparm #> k_M2 0.1002 deparm #> f_parent_to_M1 0.5000 deparm #> f_M1_to_M2 0.5000 deparm #> #> Starting values for the transformed parameters actually optimised: #> value lower upper #> parent_0 101.350000 -Inf Inf #> log_k_parent -2.302585 -Inf Inf #> log_k_M1 -2.301586 -Inf Inf #> log_k_M2 -2.300587 -Inf Inf #> f_parent_qlogis 0.000000 -Inf Inf #> f_M1_qlogis 0.000000 -Inf Inf #> #> Fixed parameter values: #> value type #> M1_0 0 state #> M2_0 0 state #> #> Results: #> #> AIC BIC logLik #> 188.7274 200.3723 -87.36368 #> #> Optimised, transformed parameters with symmetric confidence intervals: #> Estimate Std. Error Lower Upper #> parent_0 102.1000 1.57000 98.8600 105.3000 #> log_k_parent -0.3020 0.03885 -0.3812 -0.2229 #> log_k_M1 -1.2070 0.07123 -1.3520 -1.0620 #> log_k_M2 -3.9010 0.06571 -4.0350 -3.7670 #> f_parent_qlogis 1.2010 0.23530 0.7216 1.6800 #> f_M1_qlogis 0.9589 0.24890 0.4520 1.4660 #> sigma 2.2730 0.25740 1.7490 2.7970 #> #> Parameter correlation: #> parent_0 log_k_parent log_k_M1 log_k_M2 f_parent_qlogis #> parent_0 1.000e+00 3.933e-01 -1.605e-01 2.819e-02 -4.624e-01 #> log_k_parent 3.933e-01 1.000e+00 -4.082e-01 7.166e-02 -5.682e-01 #> log_k_M1 -1.605e-01 -4.082e-01 1.000e+00 -3.929e-01 7.478e-01 #> log_k_M2 2.819e-02 7.166e-02 -3.929e-01 1.000e+00 -2.658e-01 #> f_parent_qlogis -4.624e-01 -5.682e-01 7.478e-01 -2.658e-01 1.000e+00 #> f_M1_qlogis 1.614e-01 4.102e-01 -8.109e-01 5.419e-01 -8.605e-01 #> sigma -1.377e-08 7.536e-10 1.089e-08 -4.422e-08 7.124e-09 #> f_M1_qlogis sigma #> parent_0 1.614e-01 -1.377e-08 #> log_k_parent 4.102e-01 7.536e-10 #> log_k_M1 -8.109e-01 1.089e-08 #> log_k_M2 5.419e-01 -4.422e-08 #> f_parent_qlogis -8.605e-01 7.124e-09 #> f_M1_qlogis 1.000e+00 -2.685e-08 #> sigma -2.685e-08 1.000e+00 #> #> Backtransformed parameters: #> Confidence intervals for internally transformed parameters are asymmetric. #> t-test (unrealistically) based on the assumption of normal distribution #> for estimators of untransformed parameters. #> Estimate t value Pr(>t) Lower Upper #> parent_0 102.10000 65.000 7.281e-36 98.86000 105.30000 #> k_parent 0.73930 25.740 2.948e-23 0.68310 0.80020 #> k_M1 0.29920 14.040 1.577e-15 0.25880 0.34590 #> k_M2 0.02023 15.220 1.653e-16 0.01769 0.02312 #> f_parent_to_M1 0.76870 18.370 7.295e-19 0.67300 0.84290 #> f_M1_to_M2 0.72290 14.500 6.418e-16 0.61110 0.81240 #> sigma 2.27300 8.832 2.161e-10 1.74900 2.79700 #> #> FOCUS Chi2 error levels in percent: #> err.min n.optim df #> All data 8.454 6 17 #> parent 8.660 2 6 #> M1 10.583 2 5 #> M2 3.586 2 6 #> #> Resulting formation fractions: #> ff #> parent_M1 0.7687 #> parent_sink 0.2313 #> M1_M2 0.7229 #> M1_sink 0.2771 #> #> Estimated disappearance times: #> DT50 DT90 #> parent 0.9376 3.114 #> M1 2.3170 7.697 #> M2 34.2689 113.839 #> #> Data: #> time variable observed predicted residual #> 0 parent 101.5 1.021e+02 -0.56248 #> 0 parent 101.2 1.021e+02 -0.86248 #> 1 parent 53.9 4.873e+01 5.17118 #> 1 parent 47.5 4.873e+01 -1.22882 #> 3 parent 10.4 1.111e+01 -0.70773 #> 3 parent 7.6 1.111e+01 -3.50773 #> 7 parent 1.1 5.772e-01 0.52283 #> 7 parent 0.3 5.772e-01 -0.27717 #> 14 parent 3.5 3.264e-03 3.49674 #> 28 parent 3.2 1.045e-07 3.20000 #> 90 parent 0.6 9.532e-10 0.60000 #> 120 parent 3.5 -5.940e-10 3.50000 #> 1 M1 36.4 3.479e+01 1.61088 #> 1 M1 37.4 3.479e+01 2.61088 #> 3 M1 34.3 3.937e+01 -5.07027 #> 3 M1 39.8 3.937e+01 0.42973 #> 7 M1 15.1 1.549e+01 -0.38715 #> 7 M1 17.8 1.549e+01 2.31285 #> 14 M1 5.8 1.995e+00 3.80469 #> 14 M1 1.2 1.995e+00 -0.79531 #> 60 M1 0.5 2.111e-06 0.50000 #> 90 M1 3.2 -9.672e-10 3.20000 #> 120 M1 1.5 7.670e-10 1.50000 #> 120 M1 0.6 7.670e-10 0.60000 #> 1 M2 4.8 4.455e+00 0.34517 #> 3 M2 20.9 2.153e+01 -0.62527 #> 3 M2 19.3 2.153e+01 -2.22527 #> 7 M2 42.0 4.192e+01 0.07941 #> 7 M2 43.1 4.192e+01 1.17941 #> 14 M2 49.4 4.557e+01 3.83353 #> 14 M2 44.3 4.557e+01 -1.26647 #> 28 M2 34.6 3.547e+01 -0.87275 #> 28 M2 33.0 3.547e+01 -2.47275 #> 60 M2 18.8 1.858e+01 0.21837 #> 60 M2 17.6 1.858e+01 -0.98163 #> 90 M2 10.6 1.013e+01 0.47130 #> 90 M2 10.8 1.013e+01 0.67130 #> 120 M2 9.8 5.521e+00 4.27893 #> 120 M2 3.3 5.521e+00 -2.22107 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/test_data_from_UBA_2014.html","id":null,"dir":"Reference","previous_headings":"","what":"Three experimental datasets from two water sediment systems and one soil — test_data_from_UBA_2014","title":"Three experimental datasets from two water sediment systems and one soil — test_data_from_UBA_2014","text":"datasets used comparative validation several kinetic evaluation software packages (Ranke, 2014).","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/test_data_from_UBA_2014.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Three experimental datasets from two water sediment systems and one soil — test_data_from_UBA_2014","text":"","code":"test_data_from_UBA_2014"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/test_data_from_UBA_2014.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Three experimental datasets from two water sediment systems and one soil — test_data_from_UBA_2014","text":"list containing three datasets R6 class defined mkinds. dataset , among others, following components title name dataset, e.g. UBA_2014_WS_river data data frame data form expected mkinfit","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/test_data_from_UBA_2014.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Three experimental datasets from two water sediment systems and one soil — test_data_from_UBA_2014","text":"Ranke (2014) Prüfung und Validierung von Modellierungssoftware als Alternative zu ModelMaker 4.0, Umweltbundesamt Projektnummer 27452","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/test_data_from_UBA_2014.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Three experimental datasets from two water sediment systems and one soil — test_data_from_UBA_2014","text":"","code":"# \\dontrun{ # This is a level P-II evaluation of the dataset according to the FOCUS kinetics # guidance. Due to the strong correlation of the parameter estimates, the # covariance matrix is not returned. Note that level P-II evaluations are # generally considered deprecated due to the frequent occurrence of such # large parameter correlations, among other reasons (e.g. the adequacy of the # model). m_ws <- mkinmod(parent_w = mkinsub(\"SFO\", \"parent_s\"), parent_s = mkinsub(\"SFO\", \"parent_w\")) #> Temporary DLL for differentials generated and loaded f_river <- mkinfit(m_ws, test_data_from_UBA_2014[[1]]$data, quiet = TRUE) #> Warning: Observations with value of zero were removed from the data plot_sep(f_river) summary(f_river)$bpar #> Estimate se_notrans t value Pr(>t) #> parent_w_0 95.98567441 2.16285684 44.3791159 1.245593e-17 #> k_parent_w 0.42068803 0.05573864 7.5475120 8.752928e-07 #> k_parent_s 0.07419672 0.10108562 0.7339987 2.371337e-01 #> f_parent_w_to_parent_s 0.14336920 0.05809346 2.4679062 1.305295e-02 #> f_parent_s_to_parent_w 1.00000000 3.13868615 0.3186046 3.772097e-01 #> sigma 2.98287858 0.68923267 4.3278253 2.987160e-04 #> Lower Upper #> parent_w_0 91.48420501 100.4871438 #> k_parent_w 0.36593946 0.4836276 #> k_parent_s 0.02289956 0.2404043 #> f_parent_w_to_parent_s 0.08180934 0.2391848 #> f_parent_s_to_parent_w 0.00000000 1.0000000 #> sigma 2.00184022 3.9639169 mkinerrmin(f_river) #> err.min n.optim df #> All data 0.09246946 5 6 #> parent_w 0.06377096 3 3 #> parent_s 0.20882325 2 3 # This is the evaluation used for the validation of software packages # in the expertise from 2014 m_soil <- mkinmod(parent = mkinsub(\"SFO\", c(\"M1\", \"M2\")), M1 = mkinsub(\"SFO\", \"M3\"), M2 = mkinsub(\"SFO\", \"M3\"), M3 = mkinsub(\"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded f_soil <- mkinfit(m_soil, test_data_from_UBA_2014[[3]]$data, quiet = TRUE) #> Warning: Observations with value of zero were removed from the data plot_sep(f_soil, lpos = c(\"topright\", \"topright\", \"topright\", \"bottomright\")) summary(f_soil)$bpar #> Estimate se_notrans t value Pr(>t) Lower #> parent_0 76.55425650 0.859186398 89.1008711 1.113861e-26 74.755959420 #> k_parent 0.12081956 0.004601918 26.2541722 1.077359e-16 0.111561575 #> k_M1 0.84258615 0.806159719 1.0451851 1.545266e-01 0.113779564 #> k_M2 0.04210880 0.017083034 2.4649483 1.170188e-02 0.018013857 #> k_M3 0.01122918 0.007245855 1.5497385 6.885051e-02 0.002909431 #> f_parent_to_M1 0.32240200 0.240783878 1.3389684 9.819070e-02 NA #> f_parent_to_M2 0.16099855 0.033691952 4.7785463 6.531136e-05 NA #> f_M1_to_M3 0.27921507 0.269423709 1.0363419 1.565266e-01 0.022978202 #> f_M2_to_M3 0.55641252 0.595119937 0.9349586 1.807707e-01 0.008002509 #> sigma 1.14005399 0.149696423 7.6157731 1.727024e-07 0.826735778 #> Upper #> parent_0 78.35255358 #> k_parent 0.13084582 #> k_M1 6.23970946 #> k_M2 0.09843260 #> k_M3 0.04333992 #> f_parent_to_M1 NA #> f_parent_to_M2 NA #> f_M1_to_M3 0.86450778 #> f_M2_to_M3 0.99489895 #> sigma 1.45337221 mkinerrmin(f_soil) #> err.min n.optim df #> All data 0.09649963 9 20 #> parent 0.04721283 2 6 #> M1 0.26551208 2 5 #> M2 0.20327575 2 5 #> M3 0.05196550 3 4 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html","id":null,"dir":"Reference","previous_headings":"","what":"Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms","title":"Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms","text":"transformations intended map parameters take restricted values full scale real numbers. kinetic rate constants parameters can take positive values, simple log transformation used. compositional parameters, formations fractions always sum 1 can negative, ilr transformation used.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms","text":"","code":"transform_odeparms( parms, mkinmod, transform_rates = TRUE, transform_fractions = TRUE ) backtransform_odeparms( transparms, mkinmod, transform_rates = TRUE, transform_fractions = TRUE )"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms","text":"parms Parameters kinetic models used differential equations. mkinmod kinetic model class mkinmod, containing names model variables needed grouping formation fractions ilr transformation, parameter names information pathway sink included model. transform_rates Boolean specifying kinetic rate constants transformed model specification used fitting better compliance assumption normal distribution estimator. TRUE, also alpha beta parameters FOMC model log-transformed, well k1 k2 rate constants DFOP HS models break point tb HS model. transform_fractions Boolean specifying formation fractions constants transformed model specification used fitting better compliance assumption normal distribution estimator. default (TRUE) transformations. g parameter DFOP model also seen fraction. single fraction transformed (g parameter DFOP single target variable e.g. single metabolite plus pathway sink), logistic transformation used stats::qlogis(). cases, .e. two formation fractions need transformed whose sum exceed one, ilr transformation used. transparms Transformed parameters kinetic models used fitting procedure.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms","text":"vector transformed backtransformed parameters","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms","text":"transformation sets formation fractions fragile, supposes ordering components forward backward transformation. problem internal use mkinfit.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms","text":"Johannes Ranke","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Functions to transform and backtransform kinetic parameters for fitting — transform_odeparms","text":"","code":"SFO_SFO <- mkinmod( parent = list(type = \"SFO\", to = \"m1\", sink = TRUE), m1 = list(type = \"SFO\"), use_of_ff = \"min\") #> Temporary DLL for differentials generated and loaded # Fit the model to the FOCUS example dataset D using defaults FOCUS_D <- subset(FOCUS_2006_D, value != 0) # remove zero values to avoid warning fit <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE) fit.s <- summary(fit) # Transformed and backtransformed parameters print(fit.s$par, 3) #> Estimate Std. Error Lower Upper #> parent_0 99.60 1.5702 96.40 102.79 #> log_k_parent_sink -3.04 0.0763 -3.19 -2.88 #> log_k_parent_m1 -2.98 0.0403 -3.06 -2.90 #> log_k_m1_sink -5.25 0.1332 -5.52 -4.98 #> sigma 3.13 0.3585 2.40 3.85 print(fit.s$bpar, 3) #> Estimate se_notrans t value Pr(>t) Lower Upper #> parent_0 99.59848 1.57022 63.43 2.30e-36 96.40384 102.7931 #> k_parent_sink 0.04792 0.00365 13.11 6.13e-15 0.04103 0.0560 #> k_parent_m1 0.05078 0.00205 24.80 3.27e-23 0.04678 0.0551 #> k_m1_sink 0.00526 0.00070 7.51 6.16e-09 0.00401 0.0069 #> sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.8549 # \\dontrun{ # Compare to the version without transforming rate parameters (does not work # with analytical solution, we get NA values for m1 in predictions) fit.2 <- mkinfit(SFO_SFO, FOCUS_D, transform_rates = FALSE, solution_type = \"deSolve\", quiet = TRUE) fit.2.s <- summary(fit.2) print(fit.2.s$par, 3) #> Estimate Std. Error Lower Upper #> parent_0 99.59848 1.57022 96.40384 1.03e+02 #> k_parent_sink 0.04792 0.00365 0.04049 5.54e-02 #> k_parent_m1 0.05078 0.00205 0.04661 5.49e-02 #> k_m1_sink 0.00526 0.00070 0.00384 6.69e-03 #> sigma 3.12550 0.35852 2.39609 3.85e+00 print(fit.2.s$bpar, 3) #> Estimate se_notrans t value Pr(>t) Lower Upper #> parent_0 99.59848 1.57022 63.43 2.30e-36 96.40384 1.03e+02 #> k_parent_sink 0.04792 0.00365 13.11 6.13e-15 0.04049 5.54e-02 #> k_parent_m1 0.05078 0.00205 24.80 3.27e-23 0.04661 5.49e-02 #> k_m1_sink 0.00526 0.00070 7.51 6.16e-09 0.00384 6.69e-03 #> sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.85e+00 # } initials <- fit$start$value names(initials) <- rownames(fit$start) transformed <- fit$start_transformed$value names(transformed) <- rownames(fit$start_transformed) transform_odeparms(initials, SFO_SFO) #> parent_0 log_k_parent_sink log_k_parent_m1 log_k_m1_sink #> 100.750000 -2.302585 -2.301586 -2.300587 backtransform_odeparms(transformed, SFO_SFO) #> parent_0 k_parent_sink k_parent_m1 k_m1_sink #> 100.7500 0.1000 0.1001 0.1002 # \\dontrun{ # The case of formation fractions (this is now the default) SFO_SFO.ff <- mkinmod( parent = list(type = \"SFO\", to = \"m1\", sink = TRUE), m1 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded fit.ff <- mkinfit(SFO_SFO.ff, FOCUS_D, quiet = TRUE) fit.ff.s <- summary(fit.ff) print(fit.ff.s$par, 3) #> Estimate Std. Error Lower Upper #> parent_0 99.5985 1.5702 96.404 102.79 #> log_k_parent -2.3157 0.0409 -2.399 -2.23 #> log_k_m1 -5.2475 0.1332 -5.518 -4.98 #> f_parent_qlogis 0.0579 0.0893 -0.124 0.24 #> sigma 3.1255 0.3585 2.396 3.85 print(fit.ff.s$bpar, 3) #> Estimate se_notrans t value Pr(>t) Lower Upper #> parent_0 99.59848 1.57022 63.43 2.30e-36 96.40383 102.7931 #> k_parent 0.09870 0.00403 24.47 4.96e-23 0.09082 0.1073 #> k_m1 0.00526 0.00070 7.51 6.16e-09 0.00401 0.0069 #> f_parent_to_m1 0.51448 0.02230 23.07 3.10e-22 0.46912 0.5596 #> sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.8549 initials <- c(\"f_parent_to_m1\" = 0.5) transformed <- transform_odeparms(initials, SFO_SFO.ff) backtransform_odeparms(transformed, SFO_SFO.ff) #> f_parent_to_m1 #> 0.5 # And without sink SFO_SFO.ff.2 <- mkinmod( parent = list(type = \"SFO\", to = \"m1\", sink = FALSE), m1 = list(type = \"SFO\"), use_of_ff = \"max\") #> Temporary DLL for differentials generated and loaded fit.ff.2 <- mkinfit(SFO_SFO.ff.2, FOCUS_D, quiet = TRUE) fit.ff.2.s <- summary(fit.ff.2) print(fit.ff.2.s$par, 3) #> Estimate Std. Error Lower Upper #> parent_0 84.79 3.012 78.67 90.91 #> log_k_parent -2.76 0.082 -2.92 -2.59 #> log_k_m1 -4.21 0.123 -4.46 -3.96 #> sigma 8.22 0.943 6.31 10.14 print(fit.ff.2.s$bpar, 3) #> Estimate se_notrans t value Pr(>t) Lower Upper #> parent_0 84.7916 3.01203 28.15 1.92e-25 78.6704 90.913 #> k_parent 0.0635 0.00521 12.19 2.91e-14 0.0538 0.075 #> k_m1 0.0148 0.00182 8.13 8.81e-10 0.0115 0.019 #> sigma 8.2229 0.94323 8.72 1.73e-10 6.3060 10.140 # }"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/update.mkinfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Update an mkinfit model with different arguments — update.mkinfit","title":"Update an mkinfit model with different arguments — update.mkinfit","text":"function return updated mkinfit object. fitted degradation model parameters old fit used starting values updated fit. Values specified 'parms.ini' /'state.ini' override starting values.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/update.mkinfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update an mkinfit model with different arguments — update.mkinfit","text":"","code":"# S3 method for class 'mkinfit' update(object, ..., evaluate = TRUE)"},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/update.mkinfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update an mkinfit model with different arguments — update.mkinfit","text":"object mkinfit object updated ... Arguments mkinfit replace arguments original call. Arguments set NULL remove arguments given original call evaluate call evaluated returned call","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/reference/update.mkinfit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Update an mkinfit model with different arguments — update.mkinfit","text":"","code":"# \\dontrun{ fit <- mkinfit(\"SFO\", subset(FOCUS_2006_D, value != 0), quiet = TRUE) parms(fit) #> parent_0 k_parent sigma #> 99.44423885 0.09793574 3.39632469 plot_err(fit) fit_2 <- update(fit, error_model = \"tc\") parms(fit_2) #> parent_0 k_parent sigma_low rsd_high #> 1.008549e+02 1.005665e-01 3.752222e-03 6.763434e-02 plot_err(fit_2) # }"},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-129-2024-02-13","dir":"Changelog","previous_headings":"","what":"mkin 1.2.9 (2024-02-13)","title":"mkin 1.2.9 (2024-02-13)","text":"‘R/plot.mixed.R’: Support 25 datasets ‘R/mkinfit.R’: Support passing observed data ‘tibble’ ‘R/parplot.R’: Support multistart objects covariate models filter negative values scaled parameters (warning) plotting. ’R/create_deg_func.R: Make sure reversible reactions specified case two observed variables, supported","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-128-unreleased","dir":"Changelog","previous_headings":"","what":"mkin 1.2.8 (unreleased)","title":"mkin 1.2.8 (unreleased)","text":"‘R/{mhmkin,status}.R’: Deal ‘saem’ fits fail updating ‘mhmkin’ object","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-127-unreleased","dir":"Changelog","previous_headings":"","what":"mkin 1.2.7 (unreleased)","title":"mkin 1.2.7 (unreleased)","text":"‘R/illparms.R’: Fix bug prevented ill-defined random effect found one random effect model. Also add test .","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-126-2023-10-14","dir":"Changelog","previous_headings":"","what":"mkin 1.2.6 (2023-10-14)","title":"mkin 1.2.6 (2023-10-14)","text":"‘inst/rmarkdown/templates/hierarchical_kinetics/skeleton/skeleton.Rmd’: Fix erroneous call ‘endpoints()’ function","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-125-2023-08-09","dir":"Changelog","previous_headings":"","what":"mkin 1.2.5 (2023-08-09)","title":"mkin 1.2.5 (2023-08-09)","text":"‘vignettes/mesotrione_parent_2023.rnw’: Prebuilt vignette showing covariate modelling can done relevant parent degradation models. ‘inst/testdata/mesotrione_soil_efsa_2016}.xlsx’: Another example spreadsheets use ‘read_spreadsheet()’, featuring pH dependent degradation R/illparms.R: Fix detection ill-defined slope error model parameters case estimate negative","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-124-2023-05-19","dir":"Changelog","previous_headings":"","what":"mkin 1.2.4 (2023-05-19)","title":"mkin 1.2.4 (2023-05-19)","text":"R/endpoints.R: Fix calculation endpoints user specified covariate values","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-1231-unreleased","dir":"Changelog","previous_headings":"","what":"mkin 1.2.3.1 (unreleased)","title":"mkin 1.2.3.1 (unreleased)","text":"Small fixes get online docs right (example code R/hierarchical_kinetics, cluster setup cyantraniliprole dmta pathway vignettes, graphics model comparison multistart vignette), rebuild online docs","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-123-2023-04-17","dir":"Changelog","previous_headings":"","what":"mkin 1.2.3 (2023-04-17)","title":"mkin 1.2.3 (2023-04-17)","text":"‘R/{endpoints,parms,plot.mixed.mmkin,summary.saem.mmkin}.R’: Calculate parameters endpoints plot population curves specific covariate values, specific percentiles covariate values used saem fits. Depend current deSolve version possibility avoid resolving symbols shared library (compiled models) , thanks Thomas Petzoldt. ‘inst/rmarkdown/templates/hierarchical_kinetics/skeleton/skeleton.Rmd’: Start new cluster creating model stored user specified location, otherwise symbols found worker processes. ‘tests/testthat/test_compiled_symbols.R’: new tests control problems may introduced possibility use pre-resolved symbols. ‘R/mkinerrmin.R’: Fix typo subset (use = instead ==), thanks Sebastian Meyer spotting work R 4.3.0.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-122-unreleased","dir":"Changelog","previous_headings":"","what":"mkin 1.2.2 (unreleased)","title":"mkin 1.2.2 (unreleased)","text":"‘inst/rmarkdown/templates/hierarchical_kinetics’: R markdown template facilitate application hierarchical kinetic models. ‘inst/testdata/{cyantraniliprole_soil_efsa_2014,lambda-cyhalothrin_soil_efsa_2014}.xlsx’: Example spreadsheets use ‘read_spreadsheet()’. ‘R/mhmkin.R’: Allow ‘illparms.mhmkin’ object list suitable dimensions value argument ‘no_random_effects’, making possible exclude random effects ill-defined simpler variants set degradation models. Remove possibility exclude random effects based separate fits, work well. ‘R/summary.saem.mmkin.R’: List initial parameter values summary, including random effects error model parameters. Avoid redundant warnings occurred calculation correlations fixed effects case Fisher information matrix inverted. List correlations random effects specified user covariance model. ‘R/parplot.R’: Possibility select top ‘llquant’ fraction fits parameter plots, improved legend text. ‘R/illparms.R’: Also check confidence intervals slope parameters covariate models include zero. implemented fits obtained saemix backend. ‘R/parplot.R’: Make function work also case multistart runs failed. ‘R/intervals.R’: Include correlations random effects model case .","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-121-2022-11-19","dir":"Changelog","previous_headings":"","what":"mkin 1.2.1 (2022-11-19)","title":"mkin 1.2.1 (2022-11-19)","text":"‘{data,R}/ds_mixed.rda’: Include test data package instead generating ‘tests/testthat/setup_script.R’. Refactor generating code make consistent update tests. ‘tests/testthat/setup_script.R’: Excluded another ill-defined random effect DFOP fit ‘saem’, attempt avoid platform dependence surfaced Fedora systems CRAN check farm ‘tests/testthat/test_mixed.R’: Round parameters found saemix two significant digits printing, also help avoid platform dependence tests ‘R/saem.R’: Fix bug prevented ‘error.ini’ passed ‘saemix_model’, set default c(1, 1) avoid changing test results ‘R/parplot.R’: Show initial values error model parameters ‘R/loglik.mkinfit.R’: Add ‘nobs’ attribute resulting ‘logLik’ object, order make test_AIC.R succeed current R-devel","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-120-2022-11-17","dir":"Changelog","previous_headings":"","what":"mkin 1.2.0 (2022-11-17)","title":"mkin 1.2.0 (2022-11-17)","text":"‘R/saem.R’: ‘logLik’, ‘update’ ‘anova’ methods ‘saem.mmkin’ objects. ‘R/saem.R’: Automatic estimation start parameters random effects case mkin transformations, nicely improving convergence reducing problems iterative ODE solutions. ‘R/status.R’: New generic show status information fit array objects methods ‘mmkin’, ‘mhmkin’ ‘multistart’ objects. ‘R/mhmkin.R’: New method performing multiple hierarchical mkin fits one function call, optionally parallel. ‘R/mhmkin.R’: ‘anova.mhmkin’ conveniently comparing resulting fits. ‘R/illparms.R’: New generic show ill-defined parameters methods ‘mkinfit’, ‘mmkin’, ‘saem.mmkin’ ‘mhmkin’ objects. ‘R/multistart.R’: New method testing multiple start parameters hierarchical model fits, function ‘llhist’ new generic ‘parplot’ diagnostics, new generics ‘.best’ ‘best’ extracting fit highest likelihood ‘R/summary.mmkin.R’: Summary method mmkin objects. ‘R/saem.R’: Implement test saemix transformations FOMC HS. Also, error saemix transformations requested supported. ‘R/read_spreadsheet.R’: Conveniently read data spreadsheet file. ‘R/tex_listings.R’: Conveniently include summaries fit objects R markdown documents compiled LaTeX.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-111-2022-07-12","dir":"Changelog","previous_headings":"","what":"mkin 1.1.1 (2022-07-12)","title":"mkin 1.1.1 (2022-07-12)","text":"’R/{mkinmod,mkinpredict}.R: Store DLL information mkinmod objects use information mkinpredict avoid performance regression brought bugfix R 4.2.x. Thanks Tomas Kalibera analysis problem r-package-devel list suggestion fix . ‘vignettes/FOCUS_L.rmd’: Remove outdated note referring failure calculate covariance matrix DFOP L2 dataset. Since 0.9.45.5 covariance matrix available ‘vignettes/web_only/benchmarks.rmd’: Add first benchmark data using laptop system, therefore add CPU showing benchmark results. ‘dimethenamid_2018’: Update example code use saemix ‘CAKE_export’: Check validity map argument, updates ‘saem()’: Slightly improve speed case analytical solution saemix implemented, activate test respective code ‘mean_degparms’: New argument ‘default_log_parms’ makes possible supply surrogate value (default) log parameters fail t-test ‘plot.mixed.mmkin’: Pass frame argument also residual plots, take ‘default_log_parms’ argument ‘mean_degparms’ used constructing approximate population curves, plot population curve last avoid covered data ‘plot.mkinfit’: Respect argument ‘maxabs’ residual plots, make possible give ylim list, row layouts","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mixed-effects-models-1-1-0","dir":"Changelog","previous_headings":"","what":"Mixed-effects models","title":"mkin 1.1.0 (2022-03-14)","text":"Reintroduce interface saemix version 3.0 (now CRAN), particular generic function ‘saem’ generator ‘saem.mmkin’, currently using ‘saemix_model’ ‘saemix_data’, summary plot methods ‘mean_degparms’: New argument ‘test_log_parms’ makes function consider log-transformed parameters untransformed parameters pass t-test certain confidence level. can used obtain plausible starting parameters different mixed-effects model backends ‘plot.mixed.mmkin’: Gains arguments ‘test_log_parms’ ‘conf.level’ ‘vignettes/web_only/dimethenamid_2018.rmd’: Example evaluations dimethenamid data. ‘intervals’: Provide method nlme function ‘saem.mmkin’ objects.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-105-2021-09-15","dir":"Changelog","previous_headings":"","what":"mkin 1.0.5 (2021-09-15)","title":"mkin 1.0.5 (2021-09-15)","text":"‘dimethenamid_2018’: Correct data Borstel soil. five observations Staudenmaier (2013) previously stored “Borstel 2” actually just subset 16 observations “Borstel 1” now simply “Borstel”","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-104-2021-04-20","dir":"Changelog","previous_headings":"","what":"mkin 1.0.4 (2021-04-20)","title":"mkin 1.0.4 (2021-04-20)","text":"plotting functions setting graphical parameters: Use .exit() resetting graphical parameters ‘plot.mkinfit’: Use xlab xlim residual plot show_residuals TRUE ‘mmkin’: Use cores = 1 per default Windows make easier first time users","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-103-2021-02-15","dir":"Changelog","previous_headings":"","what":"mkin 1.0.3 (2021-02-15)","title":"mkin 1.0.3 (2021-02-15)","text":"Review update README, ‘Introduction mkin’ vignette help pages","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-102-unreleased","dir":"Changelog","previous_headings":"","what":"mkin 1.0.2 (Unreleased)","title":"mkin 1.0.2 (Unreleased)","text":"‘mkinfit’: Keep model names stored ‘mkinmod’ objects, avoiding loss ‘gmkin’","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-101-2021-02-10","dir":"Changelog","previous_headings":"","what":"mkin 1.0.1 (2021-02-10)","title":"mkin 1.0.1 (2021-02-10)","text":"‘confint.mmkin’, ‘nlme.mmkin’, ‘transform_odeparms’: Fix example code dontrun sections failed current defaults ‘logLik.mkinfit’: Improve example code avoid warnings show convenient syntax ‘mkinresplot’: Re-add Katrin Lindenberger coauthor accidentally removed long ago Remove tests relying non-convergence FOMC fit FOCUS dataset platform dependent (revealed new additional tests CRAN, thanks!) Increase test tolerance parameter comparisons also proved platform dependent","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"general-1-0-0","dir":"Changelog","previous_headings":"","what":"General","title":"mkin 1.0.0 (2021-02-03)","text":"‘mkinmod’ models gain arguments ‘name’ ‘dll_dir’ , conjunction current version ‘inline’ package, make possible still use DLL used fast ODE solutions ‘deSolve’ saving restoring ‘mkinmod’ object. ‘mkindsg’ R6 class groups ‘mkinds’ datasets metadata ‘f_norm_temp_focus’ generic function normalise time intervals using FOCUS method, methods numeric vectors ‘mkindsg’ objects ‘D24_2014’ ‘dimethenamid_2018’ datasets ‘focus_soil_moisture’ FOCUS default soil moisture data ‘update’ method ‘mmkin’ objects ‘transform_odeparms’, ‘backtransform_odeparms’: Use logit transformation solitary fractions like g parameter DFOP model, formation fractions pathway one target variable ‘plot.mmkin’: Add ylab argument, making possible customize y axis label panels left without affecting residual plots. Reduce legend size vertical distance panels ‘plot.mkinfit’: Change default ylab “Observed” “Residue”. Pass xlab residual plot show_residuals TRUE.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mixed-effects-models-1-0-0","dir":"Changelog","previous_headings":"","what":"Mixed-effects models","title":"mkin 1.0.0 (2021-02-03)","text":"‘mixed.mmkin’ New container mmkin objects plotting ‘plot.mixed.mmkin’ method ‘plot.mixed.mmkin’ method used ‘nlme.mmkin’ inheriting ‘mixed.mmkin’ (currently virtual) ‘plot’, ‘summary’ ‘print’ methods ‘nlme.mmkin’ objects","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09503-2020-10-08","dir":"Changelog","previous_headings":"","what":"mkin 0.9.50.3 (2020-10-08)","title":"mkin 0.9.50.3 (2020-10-08)","text":"‘parms’: Add method mmkin objects ‘mmkin’ ‘confint(method = ’profile’): Use cores detected parallel::detectCores() per default ‘confint(method = ’profile’): Choose accuracy based ‘rel_tol’ argument, relative bounds obtained quadratic approximation ‘mkinfit’: Make ‘use_of_ff’ = “max” also default models specified using short names like “SFO” “FOMC” ‘mkinfit’: Run ‘stats::shapiro.test()’ standardized residuals warn p < 0.05 ‘mkinfit’: ‘error_model_algorithm’ = ‘d_3’ fail direct fitting fails, reports results threestep algorithm returned ‘mmkin’: fail one fits fails, assign try-error respective position mmkin object ‘mkinfit’: Ignore components state.ini correspond state variables model ‘endpoints’: Back-calculate DT50 value DT90 also biphasic models DFOP, HS SFORB","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09502-2020-05-12","dir":"Changelog","previous_headings":"","what":"mkin 0.9.50.2 (2020-05-12)","title":"mkin 0.9.50.2 (2020-05-12)","text":"Increase tolerance platform specific test results Solaris test machine CRAN Updates corrections (using spelling package) documentation","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09501-2020-05-11","dir":"Changelog","previous_headings":"","what":"mkin 0.9.50.1 (2020-05-11)","title":"mkin 0.9.50.1 (2020-05-11)","text":"Support SFORB formation fractions ‘mkinmod’: Make ‘use_of_ff’ = “max” default Improve performance ) avoiding expensive calls cost function like merge() data.frame(), b) implementing analytical solutions SFO-SFO DFOP-SFO","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-094911-2020-04-20","dir":"Changelog","previous_headings":"","what":"mkin 0.9.49.11 (2020-04-20)","title":"mkin 0.9.49.11 (2020-04-20)","text":"Increase test tolerance make pass CRAN check machines","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-094910-2020-04-18","dir":"Changelog","previous_headings":"","what":"mkin 0.9.49.10 (2020-04-18)","title":"mkin 0.9.49.10 (2020-04-18)","text":"‘nlme.mmkin’: nlme method mmkin row objects associated S3 class print, plot, anova endpoint methods ‘mean_degparms, nlme_data, nlme_function’: Three new functions facilitate building nlme models mmkin row objects ‘endpoints’: Don’t return SFORB list component ’s empty. reduces distraction complies documentation Article compiled models: Add platform specific code suppress warnings zero values removed FOCUS D dataset ‘plot.mmkin’: Add argument ‘standardized’ avoid warnings occurred passed part additional arguments captured dots (…) ‘summary.mkinfit’: Add AIC, BIC log likelihood summary","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09499-2020-03-31","dir":"Changelog","previous_headings":"","what":"mkin 0.9.49.9 (2020-03-31)","title":"mkin 0.9.49.9 (2020-03-31)","text":"‘mkinmod’: Use pkgbuild::has_compiler instead Sys.(‘gcc’), latter often fail even Rtools installed ‘mkinds’: Use roxygen documenting fields methods R6 class","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09498-2020-01-09","dir":"Changelog","previous_headings":"","what":"mkin 0.9.49.8 (2020-01-09)","title":"mkin 0.9.49.8 (2020-01-09)","text":"‘aw’: Generic function calculating Akaike weights, methods mkinfit objects mmkin columns ‘loftest’: Add lack--fit test ‘plot_res’, ‘plot_sep’ ‘mkinerrplot’: Add possibility show standardized residuals make default fits error models ‘const’ ‘lrtest.mkinfit’: Improve naming compared fits case fixed parameters ‘confint.mkinfit’: Make quadratic approximation default, likelihood profiling takes lot time, especially fit three parameters","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09497-2019-11-01","dir":"Changelog","previous_headings":"","what":"mkin 0.9.49.7 (2019-11-01)","title":"mkin 0.9.49.7 (2019-11-01)","text":"Fix bug introduced 0.9.49.6 occurred direct optimisation yielded higher likelihood three-step optimisation d_3 algorithm, caused fitted parameters three-step optimisation returned instead parameters direct optimisation Add ‘nobs’ method mkinfit objects, enabling default ‘BIC’ method stats package. Also, add ‘BIC’ method mmkin column objects.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09496-2019-10-31","dir":"Changelog","previous_headings":"","what":"mkin 0.9.49.6 (2019-10-31)","title":"mkin 0.9.49.6 (2019-10-31)","text":"Implement likelihood ratio test method ‘lrtest’ lmtest package Add ‘update’ method mkinfit objects remembers fitted parameters appropriate Add ‘residuals’ method mkinfit objects supports scaling based error model Fix bug ‘mkinfit’ prevented summaries objects fitted fixed parameters generated Add ‘parms’ ‘confint’ methods mkinfit objects. Confidence intervals based quadratic approximation summary, based profile likelihood Move long-running tests tests/testthat/slow separate test log. currently take around 7 minutes system ‘mkinfit’: Clean code return functions calculate log-likelihood sum squared residuals Vignette ‘twa.html’: Add maximum time weighted average formulas hockey stick model Support frameless plots (‘frame = FALSE’) Support suppress chi2 error level (‘show_errmin = FALSE’) ‘plot.mmkin’ Update README introductory vignette Report ‘OLS’ error_model_algorithm summary case default error_model (‘const’) used Support summarizing ‘mkinfit’ objects generated versions < 0.9.49.5","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09495-2019-07-04","dir":"Changelog","previous_headings":"","what":"mkin 0.9.49.5 (2019-07-04)","title":"mkin 0.9.49.5 (2019-07-04)","text":"Several algorithms minimization negative log-likelihood non-constant error models (two-component variance variable). case error model constant variance, least squares used stable. default algorithm ‘d_3’ tries direct minimization three-step procedure, returns model highest likelihood. argument ‘reweight.method’ mkinfit mmkin now obsolete, use ‘error_model’ ‘error_model_algorithm’ instead Add test checks get best known AIC parent fits 12 test datasets. Add test datasets purpose. New function ‘mkinerrplot’. function also used residual plots ‘plot.mmkin’ argument ‘resplot = “errmod”’ given, ‘plot.mkinfit’ ‘show_errplot’ set TRUE. Remove dependency FME, use nlminb optimisation (‘Port’ algorithm). remember cases one optimisation algorithms preferable, except sometime used Levenberg-Marquardt speed cases expect get trapped local minimum. Use numDeriv package calculate hessians. results slightly different confidence intervals, takes bit longer, apparently robust Add simple benchmark vignette document impact performance. code manual weighting removed. functionality might get added later time. time , please use earlier version, e.g. 0.9.48.1 want manual weighting. fitting time reported summary now includes time used calculation hessians Adapt tests Fix error FOCUS chi2 error level calculations occurred parameters specified parms.ini model. warning already issued, fitting parallel via mmkin go unnoticed. Add example datasets obtained risk assessment reports published European Food Safety Agency.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09481-2019-03-04","dir":"Changelog","previous_headings":"","what":"mkin 0.9.48.1 (2019-03-04)","title":"mkin 0.9.48.1 (2019-03-04)","text":"Add function ‘logLik.mkinfit’ makes possible calculate AIC mkinfit objects Add function ‘AIC.mmkin’ make easy compare columns mmkin objects ‘add_err’: Respect argument giving number replicates synthetic dataset ‘max_twa_parent’: Support maximum time weighted average concentration calculations hockey stick (HS) model ‘mkinpredict’: Make function generic create method mkinfit objects ‘mkinfit’: Improve correctness fitted two component error model fitting mean absolute deviance observation observed values, weighting current two-component error model ‘tests/testthat/test_irls.R’: Test components error model used generate data can reproduced moderate accuracy Add function ‘CAKE_export’ facilitate cross-checking results Implement logistic model (tested parent fits) ‘nafta’: Add evaluations according NAFTA guidance","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09475-2018-09-14","dir":"Changelog","previous_headings":"","what":"mkin 0.9.47.5 (2018-09-14)","title":"mkin 0.9.47.5 (2018-09-14)","text":"Make two-component error model stop cases inadequate avoid nls crashes windows Move two vignettes location built CRAN (avoid NOTES long execution times) Exclude example code testing CRAN avoid NOTES long execution times","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09473","dir":"Changelog","previous_headings":"","what":"mkin 0.9.47.3","title":"mkin 0.9.47.3","text":"‘mkinfit’: Improve fitting error model reweight.method = ‘tc’. Add ‘manual’ possible arguments ‘weight’ Test FOCUS_2006_C can evaluated DFOP reweight.method = ‘tc’","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09472-2018-07-19","dir":"Changelog","previous_headings":"","what":"mkin 0.9.47.2 (2018-07-19)","title":"mkin 0.9.47.2 (2018-07-19)","text":"‘sigma_twocomp’: Rename ‘sigma_rl’ ‘sigma_twocomp’ Rocke Lorenzato model assumes lognormal distribution large y. Correct references Rocke Lorenzato model accordingly. ‘mkinfit’: Use 1.1 starting value N parameter IORE models obtain convergence difficult cases. Show parameter names ‘trace_parms’ ‘TRUE’.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09471-2018-02-06","dir":"Changelog","previous_headings":"","what":"mkin 0.9.47.1 (2018-02-06)","title":"mkin 0.9.47.1 (2018-02-06)","text":"Skip tests CRAN winbuilder avoid timeouts ‘test_data_from_UBA_2014’: Added list datasets containing experimental data used expertise 2014 ‘mkinfit’: Added iterative reweighting method ‘tc’ using two-component error model Rocke Lorenzato. NA values data returned . ‘mkinfit’: Work around bug current FME version prevented convergence message returned case non-convergence. ‘summary.mkinfit’: Improved output regarding weighting method. predictions returned NA values model (see ). ‘summary.mkinfit’: Show versions mkin R used fitting (ones used summary) fit generated mkin >= 0.9.47.1","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09463-2017-11-16","dir":"Changelog","previous_headings":"","what":"mkin 0.9.46.3 (2017-11-16)","title":"mkin 0.9.46.3 (2017-11-16)","text":"README.md, vignettes/mkin.Rmd: URLs updated synthetic_data_for_UBA: Add code used generate data interest reproducibility","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09462-2017-10-10","dir":"Changelog","previous_headings":"","what":"mkin 0.9.46.2 (2017-10-10)","title":"mkin 0.9.46.2 (2017-10-10)","text":"Converted vignette FOCUS_Z tex/pdf markdown/html DESCRIPTION: Add ORCID","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09461-2017-09-14","dir":"Changelog","previous_headings":"","what":"mkin 0.9.46.1 (2017-09-14)","title":"mkin 0.9.46.1 (2017-09-14)","text":"plot.mkinfit: Fix scaling residual plots case separate plots observed variable plot.mkinfit: Use data points fitted curve y axis scaling case separate plots observed variable Documentation updates","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-0946-2017-07-24","dir":"Changelog","previous_headings":"","what":"mkin 0.9.46 (2017-07-24)","title":"mkin 0.9.46 (2017-07-24)","text":"Remove test_FOMC_ill-defined.R platform dependent","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09452-2017-07-24","dir":"Changelog","previous_headings":"","what":"mkin 0.9.45.2 (2017-07-24)","title":"mkin 0.9.45.2 (2017-07-24)","text":"Rename twa max_twa_parent avoid conflict twa pfm package Update URLs documentation Limit test code one core pass windows Switch microbenchmark rbenchmark former supported platforms","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"new-features-0-9-45-1","dir":"Changelog","previous_headings":"","what":"New features","title":"mkin 0.9.45.1 (2016-12-20)","text":"twa function, calculating maximum time weighted average concentrations parent (SFO, FOMC DFOP).","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-45","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9.45 (2016-12-08)","text":"plot.mkinfit plot.mmkin: plotting device tikz, LaTeX markup used chi2 error graphs. Use pkgdown, successor staticdocs generating static HTML documentation. Include example output graphs also dontrun sections. plot.mkinfit: Plotting fail compiled model available, e.g. removed temporary directory. case, uncompiled model now used plotting","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-44","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9.44 (2016-06-29)","text":"test test_FOMC_ill-defined failed several architectures, test now skipped","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"major-changes-0-9-43","dir":"Changelog","previous_headings":"","what":"Major changes","title":"mkin 0.9.43 (2016-06-28)","text":"title changed Kinetic evaluations chemical degradation data plot.mkinfit: Add possibility show fits (residual plots requested) separately observed variables plot.mkinfit: Add possibility show chi2 error levels plot, similar way shown plot.mmkin plot_sep: Add function convenience wrapper plotting observed variables mkinfit objects separately, chi2 error values residual plots. Vignettes: main vignette mkin converted R markdown updated. vignettes also updated show current improved functionality. function add_err added package, making easy generate simulated data using error model based normal distribution","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-43","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9.43 (2016-06-28)","text":"Remove outdated reference inline package compiled_models vignette mkinfit: error cases fit converges, Jacobian untransformed model cost can estimated. Give warning instead return NA t-test results. summary.mkinfit: Give warning message covariance matrix can obtained. test added containing corresponding edge case check warnings correctly issued fit terminate. plot.mmkin: Round chi2 error value three significant digits, instead two decimal digits. mkinfit: Return err values used weighted fits column named err. Also include inverse weights column value observed data used, returned observed data component mkinfit object.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-43","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9.43 (2016-06-28)","text":"endpoints: name substance degrading metabolite (e.g. parent compound) used model formulation ended letter f, rate parameters listed formation fractions mixed names. also appear summary. mkinfit: Check observed variables checking user tried fix formation fractions fitting using ilr transformation. plot.mmkin: Set plot margins correctly, also case single fit plotted, main title placed reasonable way. plot.mkinfit: Correct default values col_obs, pch_obs lty_obs case obs_vars specified.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"major-changes-0-9-42","dir":"Changelog","previous_headings":"","what":"Major changes","title":"mkin 0.9.42 (2016-03-25)","text":"Add argument from_max_mean mkinfit, fitting decline maximum observed value models single observed variable","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-42","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9.42 (2016-03-25)","text":"Add plots compiled_models vignette Give explanatory error message mkinmod fails due missing definition target variable print.mkinmod(): Improve formatting printing mkinmod model definitions","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-41","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9-41 (2015-11-09)","text":"Add R6 class mkinds representing datasets printing method Add printing method mkinmod objects Make possible specify arbitrary strings names compounds mkinmod, show plot Use index.r file group help topics static documentation","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-41","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9-41 (2015-11-09)","text":"print.summary.mkinfit(): Avoid error occurred printing summaries generated mkin versions 0.9-36","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-40","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9-40 (2015-07-21)","text":"endpoints(): DFOP SFORB models, optimize() used, make use fact DT50 must DT50_k1 DT50_k2 (DFOP) DT50_b1 DT50_b2 (SFORB), optimize() sometimes find minimum. Likewise finding DT90 values. Also fit log scale make function efficient.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"internal-changes-0-9-40","dir":"Changelog","previous_headings":"","what":"Internal changes","title":"mkin 0.9-40 (2015-07-21)","text":"DESCRIPTION, NAMESPACE, R/*.R: Import () stats, graphics methods packages, qualify function calls non-base packages installed R avoid NOTES made R CMD check –-cran upcoming R versions.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"major-changes-0-9-39","dir":"Changelog","previous_headings":"","what":"Major changes","title":"mkin 0.9-39 (2015-06-26)","text":"New function mmkin(): function takes character vector model shorthand names, alternatively list mkinmod models, well list dataset main arguments. returns matrix mkinfit objects, row model column dataset. subsetting method single brackets available. Fitting models parallel using parallel package supported. New function plot.mmkin(): Plots single-row single-column mmkin objects including residual plots.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-39","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9-39 (2015-06-26)","text":"mkinparplot(): Fix x axis scaling rate constants formation fractions got confused introduction t-values transformed parameters.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-38","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9-38 (2015-06-24)","text":"vignettes/compiled_models.html: Show performance improvement factor actually obtained building vignette, well mkin version, system info CPU model used building vignette. GNUMakefile,vignettes/*: Clean vignette generation include table contents HTML vignettes.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-38","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9-38 (2015-06-24)","text":"mkinmod(): generating C code derivatives, declare time variable needed remove ‘-W--unused-variable’ compiler flag C compiler used CRAN checks Solaris know .","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"major-changes-0-9-36","dir":"Changelog","previous_headings":"","what":"Major changes","title":"mkin 0.9-36 (2015-06-21)","text":"summary.mkinfit(): one-sided t-test significant difference untransformed parameters zero now always shown, based assumption normal distribution estimators untransformed parameters. Use caution, assumption unrealistic e.g. rate constants nonlinear kinetic models. compiler (gcc) installed, use version differential equation model compiled C code, huge performance boost models deSolve method works. mkinmod(): Create list component $cf (class CFuncList) list returned mkinmod, version can compiled autogenerated C code (see ). mkinfit(): Set default solution_type deSolve compiled version model present, except analytical solution possible.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-36","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9-36 (2015-06-21)","text":"Added simple showcase vignette evaluation FOCUS example dataset D","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"major-changes-0-9-35","dir":"Changelog","previous_headings":"","what":"Major changes","title":"mkin 0.9-35 (2015-05-15)","text":"Switch RUnit testthat testing","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-35","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9-35 (2015-05-15)","text":"mkinparplot(): Avoid warnings occurred confidence intervals available summary fit print.summary.mkinfit(): Fix printing summary case number iterations available NAMESPACE: export S3 methods plot.mkinfit, summary.mkinfit print.summary.mkinfit satisfy R CMD check R-devel mkinparplot(): Avoid warning R CMD check undeclared global variable Lower","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"new-features-0-9-35","dir":"Changelog","previous_headings":"","what":"New features","title":"mkin 0.9-35 (2015-05-15)","text":"mkinfit(): Report successful termination quiet = FALSE. helpful difficult problems fitted reweight.method = obs, progress often indicated reweighting. first test using results established expertise written German Federal Environmental Agency (UBA) added. Add synthetic datasets generated expertise written German Federal Environmental Agency UBA Add tests based datasets","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"new-features-0-9-34","dir":"Changelog","previous_headings":"","what":"New features","title":"mkin 0.9-34 (2014-11-22)","text":"Add convenience function mkinsub() creating lists used mkinmod() Add possibility fit indeterminate order rate equation (IORE) models using analytical solution (parent ) numeric solution. Paths IORE compounds metabolites supported using formation fractions (use_of_ff = ‘max’). Note numerical solution (method.ode = ‘deSolve’) IORE differential equations sometimes fails due numerical problems. Switch using Port algorithm (using model/trust region approach) per default. needing iterations Levenberg-Marquardt algorithm previously used per default, less sensitive starting parameters.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-34","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9-34 (2014-11-22)","text":"formatting differential equations summary improved Always include 0 y axis plotting fit","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"new-features-0-9-33","dir":"Changelog","previous_headings":"","what":"New features","title":"mkin 0.9-33 (2014-10-22)","text":"initial value (state.ini) observed variable highest observed residue set 100 case time zero observation state.ini = \"auto\" basic unit test mkinerrmin() written","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-33","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9-33 (2014-10-22)","text":"mkinfit(): internally fitted parameter g named g_ilr even transform_fractions=FALSE mkinfit(): initial value (state.ini) parent compound set parent () variable highest value observed data. mkinerrmin(): checking degrees freedom metabolites, check time zero value fixed instead checking observed value zero. ensures correct calculation degrees freedom also cases metabolite residue time zero greater zero. plot.mkinfit(): Avoid warning message using first component ylim occurred ylim specified explicitly","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-33","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9-33 (2014-10-22)","text":"formatting differential equations summary improved wrapping overly long lines FOCUS_Z vignette rebuilt improvement using width 70 avoid output outside grey area print.summary.mkinfit(): Avoid warning occurred gmkin showed summaries initial fits without iterations mkinfit(): Avoid warning occurred summarising fit performed maxitmodFit = 0 done gmkin configuring new fits.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"new-features-0-9-32","dir":"Changelog","previous_headings":"","what":"New features","title":"mkin 0.9-32 (2014-07-24)","text":"number degrees freedom difficult define case ilr transformation formation fractions. Now source compartment number ilr parameters (=number optimised parameters) divided number pathways metabolites (=number affected data series) leads fractional degrees freedom cases. default initial value first state value now taken mean observations time zero, available. kinetic model can alternatively specified shorthand name parent degradation models, e.g. SFO, DFOP. Optimisation method, number model evaluations time elapsed optimisation given summary mkinfit objects. maximum number iterations optimisation algorithm can specified using argument maxit.modFit mkinfit function. mkinfit gives warning fit converge (apply SANN method). warning included summary.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-32","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9-32 (2014-07-24)","text":"Avoid plotting artificial 0 residual time zero mkinresplot determination degrees freedom mkinerrmin, formation fractions accounted multiple times case parallel formation metabolites. See new feature described solution. transform_rates=FALSE mkinfit now also works FOMC HS models. Initial values formation fractions set cases. warning given fit converge method default Levenberg-Marquardt method Marq used.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-32","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9-32 (2014-07-24)","text":"Vignettes rebuilt reflect changes summary method. Algorithm Pseudo excluded needs user-defined parameter limits supported. Algorithm Newton excluded different way specify maximum number iterations appear provide additional benefits.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"bug-fixes-0-9-31","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"mkin 0.9-31 (2014-07-14)","text":"internal renaming optimised parameters Version 0.9-30 led errors determination degrees freedom chi2 error level calulations mkinerrmin() used summary function.","code":""},{"path":[]},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"new-features-0-9-30","dir":"Changelog","previous_headings":"","what":"New features","title":"mkin 0.9-30 (2014-07-11)","text":"now possible use formation fractions combination turning sink mkinmod().","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"major-changes-0-9-30","dir":"Changelog","previous_headings":"","what":"Major changes","title":"mkin 0.9-30 (2014-07-11)","text":"original transformed parameters now different names (e.g. k_parent log_k_parent. also differ many formation fractions pathway sink. order information blocks print.summary.mkinfit.R() ordered logical way.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"minor-changes-0-9-30","dir":"Changelog","previous_headings":"","what":"Minor changes","title":"mkin 0.9-30 (2014-07-11)","text":"vignette FOCUS_Z simplified use formation fractions turning sink, slightly amended use new versions DT50 values calculated since mkin 0.9-29. vignettes rebuilt reflect changes. ChangeLog renamed NEWS.md entries converted markdown syntax compatible tools::news() function built R. test suite overhauled. Tests DFOP SFORB models dataset FOCUS_2006_A removed, much dependent optimisation algorithm /starting parameters, dataset SFO (compare kinfit vignette). Also, Schaefer complex case can now fitted using formation fractions, ‘Port’ optimisation method also fit A2 way published Piacenza paper. checks introduced mkinfit(), leading warnings stopping execution unsupported combinations methods parameters requested.","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09-29-2014-06-27","dir":"Changelog","previous_headings":"","what":"mkin 0.9-29 (2014-06-27)","title":"mkin 0.9-29 (2014-06-27)","text":"R/mkinresplot.R: Make possible specify xlim R/geometric_mean.R, man/geometric_mean.Rd: Add geometric mean function R/endpoints.R, man/endpoints.Rd: Calculate additional (pseudo)-DT50 values FOMC, DFOP, HS SFORB. Avoid calculation formation fractions rate constants directly fitted","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09-28-2014-05-20","dir":"Changelog","previous_headings":"","what":"mkin 0.9-28 (2014-05-20)","title":"mkin 0.9-28 (2014-05-20)","text":"backtransform confidence intervals formation fractions one compound formed, parameters define pathways set Add historical remarks background main package vignette Correct ‘isotropic’ ‘isometric’ ilr transformation","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09-27-2014-05-10","dir":"Changelog","previous_headings":"","what":"mkin 0.9-27 (2014-05-10)","title":"mkin 0.9-27 (2014-05-10)","text":"Fork GUI separate package gmkin DESCRIPTION, NAMESPACE, TODO: Adapt add copyright information Remove files belonging GUI Possibility fit without parameter transformations, using bounds implemented FME Add McCall 2,4,5-T dataset Enable selection observed variables plotting Add possibility show residual plot plot.mkinfit R/mkinparplot.R, man/mkinparplot.Rd: plot parameters confidence intervals Change vignette format Sweave knitr Split examples vignette FOCUS_L FOCUS_Z Remove warning constant formation fractions mkinmod based misconception Restrict unit test Schaefer data parent primary metabolites formation fraction DT50 A2 highly correlated passing test platform dependent. example, test fails 1 14 platforms CRAN today. Add Eurofins Regulatory AG copyright notices Import FME deSolve instead depending clean startup Add starter function GUI: gmkin() Change format workspace files gmkin can distributed documented package Add gmkin workspace datasets FOCUS_2006_gmkin FOCUS_2006_Z_gmkin","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09-24-2013-11-06","dir":"Changelog","previous_headings":"","what":"mkin 0.9-24 (2013-11-06)","title":"mkin 0.9-24 (2013-11-06)","text":"Bugfix re-enabling fixing combination initial values state variables Default values kinetic rate constants 0.1 “salted” small increment avoid numeric artefacts eigenvalue based solutions Backtransform fixed ODE parameters summary","code":""},{"path":"https://pkgdown.jrwb.de/mkin/dev/news/index.html","id":"mkin-09-22-2013-10-26","dir":"Changelog","previous_headings":"","what":"mkin 0.9-22 (2013-10-26)","title":"mkin 0.9-22 (2013-10-26)","text":"Get rid optimisation step mkinerrmin - unnecessary. Thanks KinGUII inspiration - actually equation 6-2 FOCUS kinetics p. 91 overlooked originally Fix plot.mkinfit passed graphical arguments like main solver use plot=TRUE mkinfit() example first successful fits simple GUI Fix iteratively reweighted least squares case many metabolites Unify naming initial values state variables Unify naming dataframes optimised fixed parameters summary Show weighting method residuals summary Correct output data case manual weighting Implement IRLS assuming different variances observed variables use 0 values time zero chi2 error level calculations. way done KinGUII makes sense. impact chi2 error levels output. Generally seem lower metabolites now, presumably mean observed values higher detailed list changes mkin source please consult commit history http://github.com/jranke/mkin","code":""}] diff --git a/docs/dev/sitemap.xml b/docs/dev/sitemap.xml new file mode 100644 index 00000000..962cd315 --- /dev/null +++ b/docs/dev/sitemap.xml @@ -0,0 +1,109 @@ +<urlset xmlns = 'http://www.sitemaps.org/schemas/sitemap/0.9'> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_D.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/FOCUS_L.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/index.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/mkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_cyan_pathway.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_parent.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2022_dmta_pathway.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/prebuilt/2023_mesotrione_parent.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/twa.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/web_only/FOCUS_Z.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/web_only/NAFTA_examples.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/web_only/benchmarks.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/web_only/compiled_models.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/web_only/dimethenamid_2018.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/web_only/multistart.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/articles/web_only/saem_benchmarks.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/authors.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/index.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/news/index.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/AIC.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/CAKE_export.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/D24_2014.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/DFOP.solution.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/Extract.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_DFOP_ref_A_to_B.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_FOMC_ref_A_to_F.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_HS_ref_A_to_F.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_SFO_ref_A_to_F.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/FOCUS_2006_datasets.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/FOMC.solution.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/HS.solution.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/IORE.solution.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_2015.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/NAFTA_SOP_Attachment.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/SFO.solution.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/SFORB.solution.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/add_err.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/anova.saem.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/aw.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/check_failed.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/confint.mkinfit.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/create_deg_func.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/dimethenamid_2018.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/ds_mixed.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/endpoints.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/experimental_data_for_UBA.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/f_time_norm_focus.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/focus_soil_moisture.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/get_deg_func.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/hierarchical_kinetics.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/illparms.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/ilr.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/index.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/intervals.saem.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/llhist.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/loftest.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/logLik.mkinfit.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/logLik.saem.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/logistic.solution.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/lrtest.mkinfit.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/max_twa_parent.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mccall81_245T.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mean_degparms.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mhmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mixed.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkin_long_to_wide.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkin_wide_to_long.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinds.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkindsg.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrmin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinerrplot.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinfit.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinmod.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinparplot.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinplot.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinpredict.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mkinresplot.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/multistart.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/nafta.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/nlme.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/nlme.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/nobs.mkinfit.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/parms.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/parplot.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/plot.mixed.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/plot.mkinfit.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/plot.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/plot.nafta.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/read_spreadsheet.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/reexports.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/residuals.mkinfit.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/saem.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/schaefer07_complex_case.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/set_nd_nq.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/sigma_twocomp.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/status.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/summary.mkinfit.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/summary.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/summary.nlme.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/summary.saem.mmkin.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/summary_listing.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/synthetic_data_for_UBA_2014.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/test_data_from_UBA_2014.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/transform_odeparms.html</loc></url> +<url><loc>https://pkgdown.jrwb.de/mkin/dev/reference/update.mkinfit.html</loc></url> +</urlset> + diff --git a/vignettes/web_only/mkin_benchmarks.rda b/vignettes/web_only/mkin_benchmarks.rda Binary files differindex c8d33f1f..9a4102c6 100644 --- a/vignettes/web_only/mkin_benchmarks.rda +++ b/vignettes/web_only/mkin_benchmarks.rda diff --git a/vignettes/web_only/saem_benchmarks.rda b/vignettes/web_only/saem_benchmarks.rda Binary files differindex c66d165d..aad2acf1 100644 --- a/vignettes/web_only/saem_benchmarks.rda +++ b/vignettes/web_only/saem_benchmarks.rda |