diff options
80 files changed, 15643 insertions, 107 deletions
diff --git a/docs/DFOP.solution-2.png b/docs/DFOP.solution-2.png Binary files differnew file mode 100644 index 00000000..91efcebb --- /dev/null +++ b/docs/DFOP.solution-2.png diff --git a/docs/DFOP.solution.html b/docs/DFOP.solution.html new file mode 100644 index 00000000..f9df8bf7 --- /dev/null +++ b/docs/DFOP.solution.html @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>DFOP.solution. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> +Double First-Order in Parallel kinetics +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='DFOP.solution.html'>DFOP.solution</a></span><span class="keyword">(</span><span class="symbol">t</span><span class="keyword">,</span> <span class="symbol">parent.0</span><span class="keyword">,</span> <span class="symbol">k1</span><span class="keyword">,</span> <span class="symbol">k2</span><span class="keyword">,</span> <span class="symbol">g</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>t</dt> + <dd> Time. </dd> + <dt>parent.0</dt> + <dd> Starting value for the response variable at time zero. </dd> + <dt>k1</dt> + <dd> First kinetic constant. </dd> + <dt>k2</dt> + <dd> Second kinetic constant. </dd> + <dt>g</dt> + <dd> Fraction of the starting value declining according to the + first kinetic constant. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Function describing decline from a defined starting value using the sum + of two exponential decline functions.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + The value of the response variable at time <code>t</code>. +</dl></p> + + </div> + + <div class="References"> + <h2>References</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="keyword">function</span><span class="keyword">(</span><span class="formalargs">x</span><span class="keyword">)</span> <span class="functioncall"><a href='DFOP.solution.html'>DFOP.solution</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="number">100</span><span class="keyword">,</span> <span class="number">5</span><span class="keyword">,</span> <span class="number">0.5</span><span class="keyword">,</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">,</span> <span class="number">4</span><span class="keyword">,</span> <span class="argument">ylim</span><span class="argument">=</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span><span class="number">100</span><span class="keyword">)</span><span class="keyword">)</span></div> +<p><img src='DFOP.solution-2.png' alt='' width='540' height='400' /></p></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>DFOP.solution</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/Extract.mmkin.html b/docs/Extract.mmkin.html new file mode 100644 index 00000000..b4686a6c --- /dev/null +++ b/docs/Extract.mmkin.html @@ -0,0 +1,1199 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>[.mmkin. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1>Subsetting method for mmkin objects</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><div># S3 method for mmkin +[(x, i, j, ..., drop = FALSE)</div></pre> + + <h2>Arguments</h2> + <dl> + <dt>x</dt> + <dd>An <code><a href='mmkin.html'>mmkin</a> object</code></dd> + <dt>i</dt> + <dd>Row index selecting the fits for specific models</dd> + <dt>j</dt> + <dd>Column index selecting the fits to specific datasets</dd> + <dt>...</dt> + <dd>Not used, only there to satisfy the generic method definition</dd> + <dt>drop</dt> + <dd>If FALSE, the method always returns an mmkin object, otherwise either + a list of mkinfit objects or a single mkinfit object.</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Subsetting method for mmkin objects.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + An object of class <code><a href='mmkin.html'>mmkin</a></code>. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="comment"># Only use one core, to pass R CMD check --as-cran</span> + <span class="symbol">fits</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mmkin.html'>mmkin</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"FOMC"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">B</span> <span class="argument">=</span> <span class="symbol">FOCUS_2006_B</span><span class="keyword">,</span> <span class="argument">C</span> <span class="argument">=</span> <span class="symbol">FOCUS_2006_C</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">cores</span> <span class="argument">=</span> <span class="number">1</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> + <span class="symbol">fits</span><span class="keyword">[</span><span class="string">"FOMC"</span><span class="keyword">,</span> <span class="keyword">]</span></div> +<div class='output'> dataset +model B C + FOMC List,42 List,42 +attr(,"class") +[1] "mmkin" +</div> +<div class='input'> <span class="symbol">fits</span><span class="keyword">[</span><span class="keyword">,</span> <span class="string">"B"</span><span class="keyword">]</span></div> +<div class='output'> dataset +model B + SFO List,42 + FOMC List,42 +attr(,"class") +[1] "mmkin" +</div> +<div class='input'> <span class="symbol">fits</span><span class="keyword">[</span><span class="keyword">,</span> <span class="string">"B"</span><span class="keyword">,</span> <span class="argument">drop</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">]</span><span class="keyword">$</span><span class="symbol">FOMC</span></div> +<div class='output'>$par + parent_0 log_alpha log_beta +99.666193 2.549849 5.050586 + +$ssr +[1] 28.58291 + +$convergence +[1] 0 + +$iterations +[1] 21 + +$evaluations +function gradient + 25 78 + +$counts +[1] "both X-convergence and relative convergence (5)" + +$hessian + parent_0 log_alpha log_beta +parent_0 4.123033 -95.69983 93.17699 +log_alpha -95.699832 6618.85833 -6352.46648 +log_beta 93.176993 -6352.46648 6101.23483 + +$residuals + parent parent parent parent parent parent + 1.046192647 -3.322396479 3.655156669 -1.705316770 0.406306255 -0.123734689 + parent parent +-0.036886982 -0.006240458 + +$ms +[1] 3.572863 + +$var_ms + parent +3.572863 + +$var_ms_unscaled + parent +3.572863 + +$var_ms_unweighted + parent +3.572863 + +$rank +[1] 3 + +$df.residual +[1] 5 + +$solution_type +[1] "analytical" + +$transform_rates +[1] TRUE + +$transform_fractions +[1] TRUE + +$method.modFit +[1] "Port" + +$maxit.modFit +[1] "auto" + +$calls +[1] 111 + +$time + user system elapsed + 0.276 0.000 0.277 + +$mkinmod +<mkinmod> model generated with +Use of formation fractions $use_of_ff: min +Specification $spec: +$parent +$type: FOMC; $sink: TRUE + +$observed + name time value +1 parent 0 98.62 +2 parent 3 81.43 +3 parent 7 53.18 +4 parent 14 34.89 +5 parent 30 10.09 +6 parent 62 1.50 +7 parent 90 0.33 +8 parent 118 0.08 + +$obs_vars +[1] "parent" + +$predicted + name time value +1 parent 0.000000 99.66619265 +2 parent 1.191919 90.41690342 +3 parent 2.383838 82.08630014 +4 parent 3.000000 78.10760352 +5 parent 3.575758 74.57722848 +6 parent 4.767677 67.80342415 +7 parent 5.959596 61.68822425 +8 parent 7.000000 56.83515667 +9 parent 7.151515 56.16343898 +10 parent 8.343434 51.16836285 +11 parent 9.535354 46.64890734 +12 parent 10.727273 42.55683931 +13 parent 11.919192 38.84911158 +14 parent 13.111111 35.48727414 +15 parent 14.000000 33.18468323 +16 parent 14.303030 32.43695565 +17 parent 15.494949 29.66740651 +18 parent 16.686869 27.15109578 +19 parent 17.878788 24.86335532 +20 parent 19.070707 22.78206538 +21 parent 20.262626 20.88737647 +22 parent 21.454545 19.16146324 +23 parent 22.646465 17.58830644 +24 parent 23.838384 16.15349953 +25 parent 25.030303 14.84407724 +26 parent 26.222222 13.64836315 +27 parent 27.414141 12.55583436 +28 parent 28.606061 11.55700107 +29 parent 29.797980 10.64329940 +30 parent 30.000000 10.49630626 +31 parent 30.989899 9.80699593 +32 parent 32.181818 9.04110261 +33 parent 33.373737 8.33930082 +34 parent 34.565657 7.69587362 +35 parent 35.757576 7.10564515 +36 parent 36.949495 6.56392657 +37 parent 38.141414 6.06646759 +38 parent 39.333333 5.60941311 +39 parent 40.525253 5.18926438 +40 parent 41.717172 4.80284421 +41 parent 42.909091 4.44726569 +42 parent 44.101010 4.11990420 +43 parent 45.292929 3.81837216 +44 parent 46.484848 3.54049644 +45 parent 47.676768 3.28429799 +46 parent 48.868687 3.04797350 +47 parent 50.060606 2.82987892 +48 parent 51.252525 2.62851456 +49 parent 52.444444 2.44251172 +50 parent 53.636364 2.27062056 +51 parent 54.828283 2.11169922 +52 parent 56.020202 1.96470393 +53 parent 57.212121 1.82868009 +54 parent 58.404040 1.70275424 +55 parent 59.595960 1.58612677 +56 parent 60.787879 1.47806529 +57 parent 61.979798 1.37789865 +58 parent 62.000000 1.37626531 +59 parent 63.171717 1.28501157 +60 parent 64.363636 1.19883967 +61 parent 65.555556 1.11886504 +62 parent 66.747475 1.04461220 +63 parent 67.939394 0.97564441 +64 parent 69.131313 0.91156031 +65 parent 70.323232 0.85199096 +66 parent 71.515152 0.79659697 +67 parent 72.707071 0.74506609 +68 parent 73.898990 0.69711084 +69 parent 75.090909 0.65246649 +70 parent 76.282828 0.61088912 +71 parent 77.474747 0.57215389 +72 parent 78.666667 0.53605348 +73 parent 79.858586 0.50239663 +74 parent 81.050505 0.47100683 +75 parent 82.242424 0.44172111 +76 parent 83.434343 0.41438896 +77 parent 84.626263 0.38887128 +78 parent 85.818182 0.36503953 +79 parent 87.010101 0.34277481 +80 parent 88.202020 0.32196716 +81 parent 89.393939 0.30251479 +82 parent 90.000000 0.29311302 +83 parent 90.585859 0.28432347 +84 parent 91.777778 0.26730596 +85 parent 92.969697 0.25138141 +86 parent 94.161616 0.23647487 +87 parent 95.353535 0.22251689 +88 parent 96.545455 0.20944302 +89 parent 97.737374 0.19719349 +90 parent 98.929293 0.18571281 +91 parent 100.121212 0.17494947 +92 parent 101.313131 0.16485560 +93 parent 102.505051 0.15538676 +94 parent 103.696970 0.14650163 +95 parent 104.888889 0.13816179 +96 parent 106.080808 0.13033150 +97 parent 107.272727 0.12297753 +98 parent 108.464646 0.11606895 +99 parent 109.656566 0.10957695 +100 parent 110.848485 0.10347470 +101 parent 112.040404 0.09773723 +102 parent 113.232323 0.09234125 +103 parent 114.424242 0.08726506 +104 parent 115.616162 0.08248842 +105 parent 116.808081 0.07799245 +106 parent 118.000000 0.07375954 + +$cost +function (P) +{ + assign("calls", calls + 1, inherits = TRUE) + if (trace_parms) + cat(P, "\n") + if (length(state.ini.optim) > 0) { + odeini <- c(P[1:length(state.ini.optim)], state.ini.fixed) + names(odeini) <- c(state.ini.optim.boxnames, state.ini.fixed.boxnames) + } + else { + odeini <- state.ini.fixed + names(odeini) <- state.ini.fixed.boxnames + } + odeparms <- c(P[(length(state.ini.optim) + 1):length(P)], + transparms.fixed) + parms <- backtransform_odeparms(odeparms, mkinmod, transform_rates = transform_rates, + transform_fractions = transform_fractions) + out <- mkinpredict(mkinmod, parms, odeini, outtimes, solution_type = solution_type, + use_compiled = use_compiled, method.ode = method.ode, + atol = atol, rtol = rtol, ...) + assign("out_predicted", out, inherits = TRUE) + mC <- modCost(out, observed, y = "value", err = err, weight = weight, + scaleVar = scaleVar) + if (mC$model < cost.old) { + if (!quiet) + cat("Model cost at call ", calls, ": ", mC$model, + "\n") + if (plot) { + outtimes_plot = seq(min(observed$time), max(observed$time), + length.out = 100) + out_plot <- mkinpredict(mkinmod, parms, odeini, outtimes_plot, + solution_type = solution_type, use_compiled = use_compiled, + method.ode = method.ode, atol = atol, rtol = rtol, + ...) + plot(0, type = "n", xlim = range(observed$time), + ylim = c(0, max(observed$value, na.rm = TRUE)), + xlab = "Time", ylab = "Observed") + col_obs <- pch_obs <- 1:length(obs_vars) + lty_obs <- rep(1, length(obs_vars)) + names(col_obs) <- names(pch_obs) <- names(lty_obs) <- obs_vars + for (obs_var in obs_vars) { + points(subset(observed, name == obs_var, c(time, + value)), pch = pch_obs[obs_var], col = col_obs[obs_var]) + } + matlines(out_plot$time, out_plot[-1], col = col_obs, + lty = lty_obs) + legend("topright", inset = c(0.05, 0.05), legend = obs_vars, + col = col_obs, pch = pch_obs, lty = 1:length(pch_obs)) + } + assign("cost.old", mC$model, inherits = TRUE) + } + return(mC) +} +<environment: 0x44a0b88> + +$cost_notrans +function (P) +{ + if (length(state.ini.optim) > 0) { + odeini <- c(P[1:length(state.ini.optim)], state.ini.fixed) + names(odeini) <- c(state.ini.optim.boxnames, state.ini.fixed.boxnames) + } + else { + odeini <- state.ini.fixed + names(odeini) <- state.ini.fixed.boxnames + } + odeparms <- c(P[(length(state.ini.optim) + 1):length(P)], + parms.fixed) + out <- mkinpredict(mkinmod, odeparms, odeini, outtimes, solution_type = solution_type, + use_compiled = use_compiled, method.ode = method.ode, + atol = atol, rtol = rtol, ...) + mC <- modCost(out, observed, y = "value", err = err, weight = weight, + scaleVar = scaleVar) + return(mC) +} +<environment: 0x44a0b88> + +$hessian_notrans + parent_0 alpha beta +parent_0 4.1230329 -7.473531 0.5968527 +alpha -7.4735307 40.365690 -3.1777189 +beta 0.5968527 -3.177719 0.2503425 + +$start + value type +parent_0 98.62 state +alpha 1.00 deparm +beta 10.00 deparm + +$start_transformed + value lower upper +parent_0 98.620000 -Inf Inf +log_alpha 0.000000 -Inf Inf +log_beta 2.302585 -Inf Inf + +$fixed +[1] value type +<0 rows> (or 0-length row.names) + +$data + time variable observed predicted residual +1 0 parent 98.62 99.66619265 -1.046192647 +2 3 parent 81.43 78.10760352 3.322396479 +3 7 parent 53.18 56.83515667 -3.655156669 +4 14 parent 34.89 33.18468323 1.705316770 +5 30 parent 10.09 10.49630626 -0.406306255 +6 62 parent 1.50 1.37626531 0.123734689 +7 90 parent 0.33 0.29311302 0.036886982 +8 118 parent 0.08 0.07375954 0.006240458 + +$atol +[1] 1e-08 + +$rtol +[1] 1e-10 + +$weight.ini +[1] "none" + +$reweight.tol +[1] 1e-08 + +$reweight.max.iter +[1] 10 + +$bparms.optim + parent_0 alpha beta + 99.66619 12.80517 156.11390 + +$bparms.fixed +numeric(0) + +$bparms.ode + alpha beta + 12.80517 156.11390 + +$bparms.state + parent +99.66619 + +$date +[1] "Sat Sep 10 05:52:53 2016" + +attr(,"class") +[1] "mkinfit" "modFit" +</div> +<div class='input'> <span class="symbol">fits</span><span class="keyword">[</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"B"</span><span class="keyword">]</span></div> +<div class='output'> dataset +model B + SFO List,42 +attr(,"class") +[1] "mmkin" +</div> +<div class='input'> <span class="symbol">fits</span><span class="keyword">[[</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"B"</span><span class="keyword">]</span><span class="keyword">]</span> <span class="comment"># This is equivalent to</span></div> +<div class='output'>$par + parent_0 log_k_parent_sink + 99.174072 -2.549028 + +$ssr +[1] 30.65564 + +$convergence +[1] 0 + +$iterations +[1] 5 + +$evaluations +function gradient + 8 15 + +$counts +[1] "relative convergence (4)" + +$hessian + parent_0 log_k_parent_sink +parent_0 4.163631 -94.09343 +log_k_parent_sink -94.093431 6311.34610 + +$residuals + parent parent parent parent parent parent + 0.55407218 -2.98452128 4.20445742 -1.68599939 -0.58185357 -0.72033730 + parent parent +-0.24260405 -0.07020339 + +$ms +[1] 3.831956 + +$var_ms + parent +3.831956 + +$var_ms_unscaled + parent +3.831956 + +$var_ms_unweighted + parent +3.831956 + +$rank +[1] 2 + +$df.residual +[1] 6 + +$solution_type +[1] "analytical" + +$transform_rates +[1] TRUE + +$transform_fractions +[1] TRUE + +$method.modFit +[1] "Port" + +$maxit.modFit +[1] "auto" + +$calls +[1] 29 + +$time + user system elapsed + 0.108 0.000 0.106 + +$mkinmod +<mkinmod> model generated with +Use of formation fractions $use_of_ff: min +Specification $spec: +$parent +$type: SFO; $sink: TRUE +Coefficient matrix $coefmat available + +$observed + name time value +1 parent 0 98.62 +2 parent 3 81.43 +3 parent 7 53.18 +4 parent 14 34.89 +5 parent 30 10.09 +6 parent 62 1.50 +7 parent 90 0.33 +8 parent 118 0.08 + +$obs_vars +[1] "parent" + +$predicted + name time value +1 parent 0.000000 99.17407218 +2 parent 1.191919 90.35253561 +3 parent 2.383838 82.31567498 +4 parent 3.000000 78.44547872 +5 parent 3.575758 74.99369333 +6 parent 4.767677 68.32300215 +7 parent 5.959596 62.24566915 +8 parent 7.000000 57.38445742 +9 parent 7.151515 56.70891509 +10 parent 8.343434 51.66465547 +11 parent 9.535354 47.06908288 +12 parent 10.727273 42.88228661 +13 parent 11.919192 39.06790599 +14 parent 13.111111 35.59281463 +15 parent 14.000000 33.20400061 +16 parent 14.303030 32.42683275 +17 parent 15.494949 29.54246504 +18 parent 16.686869 26.91466193 +19 parent 17.878788 24.52060198 +20 parent 19.070707 22.33949373 +21 parent 20.262626 20.35239512 +22 parent 21.454545 18.54204899 +23 parent 22.646465 16.89273320 +24 parent 23.838384 15.39012410 +25 parent 25.030303 14.02117212 +26 parent 26.222222 12.77398846 +27 parent 27.414141 11.63774182 +28 parent 28.606061 10.60256435 +29 parent 29.797980 9.65946594 +30 parent 30.000000 9.50814643 +31 parent 30.989899 8.80025617 +32 parent 32.181818 8.01747313 +33 parent 33.373737 7.30431867 +34 parent 34.565657 6.65459931 +35 parent 35.757576 6.06267251 +36 parent 36.949495 5.52339762 +37 parent 38.141414 5.03209124 +38 parent 39.333333 4.58448658 +39 parent 40.525253 4.17669637 +40 parent 41.717172 3.80517911 +41 parent 42.909091 3.46670832 +42 parent 44.101010 3.15834451 +43 parent 45.292929 2.87740968 +44 parent 46.484848 2.62146400 +45 parent 47.676768 2.38828471 +46 parent 48.868687 2.17584671 +47 parent 50.060606 1.98230508 +48 parent 51.252525 1.80597899 +49 parent 52.444444 1.64533711 +50 parent 53.636364 1.49898432 +51 parent 54.828283 1.36564963 +52 parent 56.020202 1.24417505 +53 parent 57.212121 1.13350565 +54 parent 58.404040 1.03268029 +55 parent 59.595960 0.94082335 +56 parent 60.787879 0.85713708 +57 parent 61.979798 0.78089471 +58 parent 62.000000 0.77966270 +59 parent 63.171717 0.71143411 +60 parent 64.363636 0.64815202 +61 parent 65.555556 0.59049888 +62 parent 66.747475 0.53797399 +63 parent 67.939394 0.49012119 +64 parent 69.131313 0.44652489 +65 parent 70.323232 0.40680649 +66 parent 71.515152 0.37062104 +67 parent 72.707071 0.33765429 +68 parent 73.898990 0.30761993 +69 parent 75.090909 0.28025713 +70 parent 76.282828 0.25532825 +71 parent 77.474747 0.23261679 +72 parent 78.666667 0.21192552 +73 parent 79.858586 0.19307474 +74 parent 81.050505 0.17590074 +75 parent 82.242424 0.16025436 +76 parent 83.434343 0.14599973 +77 parent 84.626263 0.13301305 +78 parent 85.818182 0.12118154 +79 parent 87.010101 0.11040244 +80 parent 88.202020 0.10058214 +81 parent 89.393939 0.09163535 +82 parent 90.000000 0.08739595 +83 parent 90.585859 0.08348439 +84 parent 91.777778 0.07605845 +85 parent 92.969697 0.06929305 +86 parent 94.161616 0.06312943 +87 parent 95.353535 0.05751406 +88 parent 96.545455 0.05239819 +89 parent 97.737374 0.04773737 +90 parent 98.929293 0.04349113 +91 parent 100.121212 0.03962259 +92 parent 101.313131 0.03609816 +93 parent 102.505051 0.03288723 +94 parent 103.696970 0.02996191 +95 parent 104.888889 0.02729679 +96 parent 106.080808 0.02486874 +97 parent 107.272727 0.02265667 +98 parent 108.464646 0.02064136 +99 parent 109.656566 0.01880531 +100 parent 110.848485 0.01713257 +101 parent 112.040404 0.01560863 +102 parent 113.232323 0.01422024 +103 parent 114.424242 0.01295535 +104 parent 115.616162 0.01180297 +105 parent 116.808081 0.01075310 +106 parent 118.000000 0.00979661 + +$cost +function (P) +{ + assign("calls", calls + 1, inherits = TRUE) + if (trace_parms) + cat(P, "\n") + if (length(state.ini.optim) > 0) { + odeini <- c(P[1:length(state.ini.optim)], state.ini.fixed) + names(odeini) <- c(state.ini.optim.boxnames, state.ini.fixed.boxnames) + } + else { + odeini <- state.ini.fixed + names(odeini) <- state.ini.fixed.boxnames + } + odeparms <- c(P[(length(state.ini.optim) + 1):length(P)], + transparms.fixed) + parms <- backtransform_odeparms(odeparms, mkinmod, transform_rates = transform_rates, + transform_fractions = transform_fractions) + out <- mkinpredict(mkinmod, parms, odeini, outtimes, solution_type = solution_type, + use_compiled = use_compiled, method.ode = method.ode, + atol = atol, rtol = rtol, ...) + assign("out_predicted", out, inherits = TRUE) + mC <- modCost(out, observed, y = "value", err = err, weight = weight, + scaleVar = scaleVar) + if (mC$model < cost.old) { + if (!quiet) + cat("Model cost at call ", calls, ": ", mC$model, + "\n") + if (plot) { + outtimes_plot = seq(min(observed$time), max(observed$time), + length.out = 100) + out_plot <- mkinpredict(mkinmod, parms, odeini, outtimes_plot, + solution_type = solution_type, use_compiled = use_compiled, + method.ode = method.ode, atol = atol, rtol = rtol, + ...) + plot(0, type = "n", xlim = range(observed$time), + ylim = c(0, max(observed$value, na.rm = TRUE)), + xlab = "Time", ylab = "Observed") + col_obs <- pch_obs <- 1:length(obs_vars) + lty_obs <- rep(1, length(obs_vars)) + names(col_obs) <- names(pch_obs) <- names(lty_obs) <- obs_vars + for (obs_var in obs_vars) { + points(subset(observed, name == obs_var, c(time, + value)), pch = pch_obs[obs_var], col = col_obs[obs_var]) + } + matlines(out_plot$time, out_plot[-1], col = col_obs, + lty = lty_obs) + legend("topright", inset = c(0.05, 0.05), legend = obs_vars, + col = col_obs, pch = pch_obs, lty = 1:length(pch_obs)) + } + assign("cost.old", mC$model, inherits = TRUE) + } + return(mC) +} +<environment: 0x43a7a48> + +$cost_notrans +function (P) +{ + if (length(state.ini.optim) > 0) { + odeini <- c(P[1:length(state.ini.optim)], state.ini.fixed) + names(odeini) <- c(state.ini.optim.boxnames, state.ini.fixed.boxnames) + } + else { + odeini <- state.ini.fixed + names(odeini) <- state.ini.fixed.boxnames + } + odeparms <- c(P[(length(state.ini.optim) + 1):length(P)], + parms.fixed) + out <- mkinpredict(mkinmod, odeparms, odeini, outtimes, solution_type = solution_type, + use_compiled = use_compiled, method.ode = method.ode, + atol = atol, rtol = rtol, ...) + mC <- modCost(out, observed, y = "value", err = err, weight = weight, + scaleVar = scaleVar) + return(mC) +} +<environment: 0x43a7a48> + +$hessian_notrans + parent_0 k_parent_sink +parent_0 4.163631 -1203.894 +k_parent_sink -1203.893702 1033188.753 + +$start + value type +parent_0 98.62 state +k_parent_sink 0.10 deparm + +$start_transformed + value lower upper +parent_0 98.620000 -Inf Inf +log_k_parent_sink -2.302585 -Inf Inf + +$fixed +[1] value type +<0 rows> (or 0-length row.names) + +$data + time variable observed predicted residual +1 0 parent 98.62 99.17407218 -0.55407218 +2 3 parent 81.43 78.44547872 2.98452128 +3 7 parent 53.18 57.38445742 -4.20445742 +4 14 parent 34.89 33.20400061 1.68599939 +5 30 parent 10.09 9.50814643 0.58185357 +6 62 parent 1.50 0.77966270 0.72033730 +7 90 parent 0.33 0.08739595 0.24260405 +8 118 parent 0.08 0.00979661 0.07020339 + +$atol +[1] 1e-08 + +$rtol +[1] 1e-10 + +$weight.ini +[1] "none" + +$reweight.tol +[1] 1e-08 + +$reweight.max.iter +[1] 10 + +$bparms.optim + parent_0 k_parent_sink + 99.17407218 0.07815759 + +$bparms.fixed +numeric(0) + +$bparms.ode +k_parent_sink + 0.07815759 + +$bparms.state + parent +99.17407 + +$date +[1] "Sat Sep 10 05:52:53 2016" + +attr(,"class") +[1] "mkinfit" "modFit" +</div> +<div class='input'> <span class="symbol">fits</span><span class="keyword">[</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"B"</span><span class="keyword">,</span> <span class="argument">drop</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">]</span></div> +<div class='output'>[[1]] +$par + parent_0 log_k_parent_sink + 99.174072 -2.549028 + +$ssr +[1] 30.65564 + +$convergence +[1] 0 + +$iterations +[1] 5 + +$evaluations +function gradient + 8 15 + +$counts +[1] "relative convergence (4)" + +$hessian + parent_0 log_k_parent_sink +parent_0 4.163631 -94.09343 +log_k_parent_sink -94.093431 6311.34610 + +$residuals + parent parent parent parent parent parent + 0.55407218 -2.98452128 4.20445742 -1.68599939 -0.58185357 -0.72033730 + parent parent +-0.24260405 -0.07020339 + +$ms +[1] 3.831956 + +$var_ms + parent +3.831956 + +$var_ms_unscaled + parent +3.831956 + +$var_ms_unweighted + parent +3.831956 + +$rank +[1] 2 + +$df.residual +[1] 6 + +$solution_type +[1] "analytical" + +$transform_rates +[1] TRUE + +$transform_fractions +[1] TRUE + +$method.modFit +[1] "Port" + +$maxit.modFit +[1] "auto" + +$calls +[1] 29 + +$time + user system elapsed + 0.108 0.000 0.106 + +$mkinmod +<mkinmod> model generated with +Use of formation fractions $use_of_ff: min +Specification $spec: +$parent +$type: SFO; $sink: TRUE +Coefficient matrix $coefmat available + +$observed + name time value +1 parent 0 98.62 +2 parent 3 81.43 +3 parent 7 53.18 +4 parent 14 34.89 +5 parent 30 10.09 +6 parent 62 1.50 +7 parent 90 0.33 +8 parent 118 0.08 + +$obs_vars +[1] "parent" + +$predicted + name time value +1 parent 0.000000 99.17407218 +2 parent 1.191919 90.35253561 +3 parent 2.383838 82.31567498 +4 parent 3.000000 78.44547872 +5 parent 3.575758 74.99369333 +6 parent 4.767677 68.32300215 +7 parent 5.959596 62.24566915 +8 parent 7.000000 57.38445742 +9 parent 7.151515 56.70891509 +10 parent 8.343434 51.66465547 +11 parent 9.535354 47.06908288 +12 parent 10.727273 42.88228661 +13 parent 11.919192 39.06790599 +14 parent 13.111111 35.59281463 +15 parent 14.000000 33.20400061 +16 parent 14.303030 32.42683275 +17 parent 15.494949 29.54246504 +18 parent 16.686869 26.91466193 +19 parent 17.878788 24.52060198 +20 parent 19.070707 22.33949373 +21 parent 20.262626 20.35239512 +22 parent 21.454545 18.54204899 +23 parent 22.646465 16.89273320 +24 parent 23.838384 15.39012410 +25 parent 25.030303 14.02117212 +26 parent 26.222222 12.77398846 +27 parent 27.414141 11.63774182 +28 parent 28.606061 10.60256435 +29 parent 29.797980 9.65946594 +30 parent 30.000000 9.50814643 +31 parent 30.989899 8.80025617 +32 parent 32.181818 8.01747313 +33 parent 33.373737 7.30431867 +34 parent 34.565657 6.65459931 +35 parent 35.757576 6.06267251 +36 parent 36.949495 5.52339762 +37 parent 38.141414 5.03209124 +38 parent 39.333333 4.58448658 +39 parent 40.525253 4.17669637 +40 parent 41.717172 3.80517911 +41 parent 42.909091 3.46670832 +42 parent 44.101010 3.15834451 +43 parent 45.292929 2.87740968 +44 parent 46.484848 2.62146400 +45 parent 47.676768 2.38828471 +46 parent 48.868687 2.17584671 +47 parent 50.060606 1.98230508 +48 parent 51.252525 1.80597899 +49 parent 52.444444 1.64533711 +50 parent 53.636364 1.49898432 +51 parent 54.828283 1.36564963 +52 parent 56.020202 1.24417505 +53 parent 57.212121 1.13350565 +54 parent 58.404040 1.03268029 +55 parent 59.595960 0.94082335 +56 parent 60.787879 0.85713708 +57 parent 61.979798 0.78089471 +58 parent 62.000000 0.77966270 +59 parent 63.171717 0.71143411 +60 parent 64.363636 0.64815202 +61 parent 65.555556 0.59049888 +62 parent 66.747475 0.53797399 +63 parent 67.939394 0.49012119 +64 parent 69.131313 0.44652489 +65 parent 70.323232 0.40680649 +66 parent 71.515152 0.37062104 +67 parent 72.707071 0.33765429 +68 parent 73.898990 0.30761993 +69 parent 75.090909 0.28025713 +70 parent 76.282828 0.25532825 +71 parent 77.474747 0.23261679 +72 parent 78.666667 0.21192552 +73 parent 79.858586 0.19307474 +74 parent 81.050505 0.17590074 +75 parent 82.242424 0.16025436 +76 parent 83.434343 0.14599973 +77 parent 84.626263 0.13301305 +78 parent 85.818182 0.12118154 +79 parent 87.010101 0.11040244 +80 parent 88.202020 0.10058214 +81 parent 89.393939 0.09163535 +82 parent 90.000000 0.08739595 +83 parent 90.585859 0.08348439 +84 parent 91.777778 0.07605845 +85 parent 92.969697 0.06929305 +86 parent 94.161616 0.06312943 +87 parent 95.353535 0.05751406 +88 parent 96.545455 0.05239819 +89 parent 97.737374 0.04773737 +90 parent 98.929293 0.04349113 +91 parent 100.121212 0.03962259 +92 parent 101.313131 0.03609816 +93 parent 102.505051 0.03288723 +94 parent 103.696970 0.02996191 +95 parent 104.888889 0.02729679 +96 parent 106.080808 0.02486874 +97 parent 107.272727 0.02265667 +98 parent 108.464646 0.02064136 +99 parent 109.656566 0.01880531 +100 parent 110.848485 0.01713257 +101 parent 112.040404 0.01560863 +102 parent 113.232323 0.01422024 +103 parent 114.424242 0.01295535 +104 parent 115.616162 0.01180297 +105 parent 116.808081 0.01075310 +106 parent 118.000000 0.00979661 + +$cost +function (P) +{ + assign("calls", calls + 1, inherits = TRUE) + if (trace_parms) + cat(P, "\n") + if (length(state.ini.optim) > 0) { + odeini <- c(P[1:length(state.ini.optim)], state.ini.fixed) + names(odeini) <- c(state.ini.optim.boxnames, state.ini.fixed.boxnames) + } + else { + odeini <- state.ini.fixed + names(odeini) <- state.ini.fixed.boxnames + } + odeparms <- c(P[(length(state.ini.optim) + 1):length(P)], + transparms.fixed) + parms <- backtransform_odeparms(odeparms, mkinmod, transform_rates = transform_rates, + transform_fractions = transform_fractions) + out <- mkinpredict(mkinmod, parms, odeini, outtimes, solution_type = solution_type, + use_compiled = use_compiled, method.ode = method.ode, + atol = atol, rtol = rtol, ...) + assign("out_predicted", out, inherits = TRUE) + mC <- modCost(out, observed, y = "value", err = err, weight = weight, + scaleVar = scaleVar) + if (mC$model < cost.old) { + if (!quiet) + cat("Model cost at call ", calls, ": ", mC$model, + "\n") + if (plot) { + outtimes_plot = seq(min(observed$time), max(observed$time), + length.out = 100) + out_plot <- mkinpredict(mkinmod, parms, odeini, outtimes_plot, + solution_type = solution_type, use_compiled = use_compiled, + method.ode = method.ode, atol = atol, rtol = rtol, + ...) + plot(0, type = "n", xlim = range(observed$time), + ylim = c(0, max(observed$value, na.rm = TRUE)), + xlab = "Time", ylab = "Observed") + col_obs <- pch_obs <- 1:length(obs_vars) + lty_obs <- rep(1, length(obs_vars)) + names(col_obs) <- names(pch_obs) <- names(lty_obs) <- obs_vars + for (obs_var in obs_vars) { + points(subset(observed, name == obs_var, c(time, + value)), pch = pch_obs[obs_var], col = col_obs[obs_var]) + } + matlines(out_plot$time, out_plot[-1], col = col_obs, + lty = lty_obs) + legend("topright", inset = c(0.05, 0.05), legend = obs_vars, + col = col_obs, pch = pch_obs, lty = 1:length(pch_obs)) + } + assign("cost.old", mC$model, inherits = TRUE) + } + return(mC) +} +<environment: 0x43a7a48> + +$cost_notrans +function (P) +{ + if (length(state.ini.optim) > 0) { + odeini <- c(P[1:length(state.ini.optim)], state.ini.fixed) + names(odeini) <- c(state.ini.optim.boxnames, state.ini.fixed.boxnames) + } + else { + odeini <- state.ini.fixed + names(odeini) <- state.ini.fixed.boxnames + } + odeparms <- c(P[(length(state.ini.optim) + 1):length(P)], + parms.fixed) + out <- mkinpredict(mkinmod, odeparms, odeini, outtimes, solution_type = solution_type, + use_compiled = use_compiled, method.ode = method.ode, + atol = atol, rtol = rtol, ...) + mC <- modCost(out, observed, y = "value", err = err, weight = weight, + scaleVar = scaleVar) + return(mC) +} +<environment: 0x43a7a48> + +$hessian_notrans + parent_0 k_parent_sink +parent_0 4.163631 -1203.894 +k_parent_sink -1203.893702 1033188.753 + +$start + value type +parent_0 98.62 state +k_parent_sink 0.10 deparm + +$start_transformed + value lower upper +parent_0 98.620000 -Inf Inf +log_k_parent_sink -2.302585 -Inf Inf + +$fixed +[1] value type +<0 rows> (or 0-length row.names) + +$data + time variable observed predicted residual +1 0 parent 98.62 99.17407218 -0.55407218 +2 3 parent 81.43 78.44547872 2.98452128 +3 7 parent 53.18 57.38445742 -4.20445742 +4 14 parent 34.89 33.20400061 1.68599939 +5 30 parent 10.09 9.50814643 0.58185357 +6 62 parent 1.50 0.77966270 0.72033730 +7 90 parent 0.33 0.08739595 0.24260405 +8 118 parent 0.08 0.00979661 0.07020339 + +$atol +[1] 1e-08 + +$rtol +[1] 1e-10 + +$weight.ini +[1] "none" + +$reweight.tol +[1] 1e-08 + +$reweight.max.iter +[1] 10 + +$bparms.optim + parent_0 k_parent_sink + 99.17407218 0.07815759 + +$bparms.fixed +numeric(0) + +$bparms.ode +k_parent_sink + 0.07815759 + +$bparms.state + parent +99.17407 + +$date +[1] "Sat Sep 10 05:52:53 2016" + +attr(,"class") +[1] "mkinfit" "modFit" + +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>[.mmkin</li> + </ul> + <ul> + + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/FOCUS_2006_DFOP_ref_A_to_B.html b/docs/FOCUS_2006_DFOP_ref_A_to_B.html new file mode 100644 index 00000000..6e1c4986 --- /dev/null +++ b/docs/FOCUS_2006_DFOP_ref_A_to_B.html @@ -0,0 +1,133 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>FOCUS_2006_DFOP_ref_A_to_B. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> +Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_DFOP_ref_A_to_B</span><span class="keyword">)</span></pre> + + <div class="Description"> + <h2>Description</h2> + + <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="Format"> + <h2>Format</h2> + + <p>A data frame containing the following variables. + <dl> + <dt><code>package</code></dt><dd>a factor giving the name of the software package</dd></p> + + <p><dt><code>M0</code></dt><dd>The fitted initial concentration of the parent compound</dd></p> + + <p><dt><code>f</code></dt><dd>The fitted f parameter</dd></p> + + <p><dt><code>k1</code></dt><dd>The fitted k1 parameter</dd></p> + + <p><dt><code>k2</code></dt><dd>The fitted k2 parameter</dd></p> + + <p><dt><code>DT50</code></dt><dd>The resulting half-life of the parent compound</dd></p> + + <p><dt><code>DT90</code></dt><dd>The resulting DT90 of the parent compound</dd></p> + + <p><dt><code>dataset</code></dt><dd>The FOCUS dataset that was used</dd></p> + + <p></dl></p> + + <p></p> + + </div> + + <div class="Source"> + <h2>Source</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_DFOP_ref_A_to_B</span><span class="keyword">)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>FOCUS_2006_DFOP_ref_A_to_B</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/FOCUS_2006_FOMC_ref_A_to_F.html b/docs/FOCUS_2006_FOMC_ref_A_to_F.html new file mode 100644 index 00000000..580cdb88 --- /dev/null +++ b/docs/FOCUS_2006_FOMC_ref_A_to_F.html @@ -0,0 +1,131 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>FOCUS_2006_FOMC_ref_A_to_F. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> +Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_FOMC_ref_A_to_F</span><span class="keyword">)</span></pre> + + <div class="Description"> + <h2>Description</h2> + + <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="Format"> + <h2>Format</h2> + + <p>A data frame containing the following variables. + <dl> + <dt><code>package</code></dt><dd>a factor giving the name of the software package</dd></p> + + <p><dt><code>M0</code></dt><dd>The fitted initial concentration of the parent compound</dd></p> + + <p><dt><code>alpha</code></dt><dd>The fitted alpha parameter</dd></p> + + <p><dt><code>beta</code></dt><dd>The fitted beta parameter</dd></p> + + <p><dt><code>DT50</code></dt><dd>The resulting half-life of the parent compound</dd></p> + + <p><dt><code>DT90</code></dt><dd>The resulting DT90 of the parent compound</dd></p> + + <p><dt><code>dataset</code></dt><dd>The FOCUS dataset that was used</dd></p> + + <p></dl></p> + + <p></p> + + </div> + + <div class="Source"> + <h2>Source</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_FOMC_ref_A_to_F</span><span class="keyword">)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>FOCUS_2006_FOMC_ref_A_to_F</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/FOCUS_2006_HS_ref_A_to_F.html b/docs/FOCUS_2006_HS_ref_A_to_F.html new file mode 100644 index 00000000..65c11f59 --- /dev/null +++ b/docs/FOCUS_2006_HS_ref_A_to_F.html @@ -0,0 +1,133 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>FOCUS_2006_HS_ref_A_to_F. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> +Results of fitting the HS model to Datasets A to F of FOCUS (2006) +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_HS_ref_A_to_F</span><span class="keyword">)</span></pre> + + <div class="Description"> + <h2>Description</h2> + + <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="Format"> + <h2>Format</h2> + + <p>A data frame containing the following variables. + <dl> + <dt><code>package</code></dt><dd>a factor giving the name of the software package</dd></p> + + <p><dt><code>M0</code></dt><dd>The fitted initial concentration of the parent compound</dd></p> + + <p><dt><code>tb</code></dt><dd>The fitted tb parameter</dd></p> + + <p><dt><code>k1</code></dt><dd>The fitted k1 parameter</dd></p> + + <p><dt><code>k2</code></dt><dd>The fitted k2 parameter</dd></p> + + <p><dt><code>DT50</code></dt><dd>The resulting half-life of the parent compound</dd></p> + + <p><dt><code>DT90</code></dt><dd>The resulting DT90 of the parent compound</dd></p> + + <p><dt><code>dataset</code></dt><dd>The FOCUS dataset that was used</dd></p> + + <p></dl></p> + + <p></p> + + </div> + + <div class="Source"> + <h2>Source</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_HS_ref_A_to_F</span><span class="keyword">)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>FOCUS_2006_HS_ref_A_to_F</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/FOCUS_2006_SFO_ref_A_to_F.html b/docs/FOCUS_2006_SFO_ref_A_to_F.html new file mode 100644 index 00000000..ab33a3a5 --- /dev/null +++ b/docs/FOCUS_2006_SFO_ref_A_to_F.html @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>FOCUS_2006_SFO_ref_A_to_F. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> +Results of fitting the SFO model to Datasets A to F of FOCUS (2006) +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_SFO_ref_A_to_F</span><span class="keyword">)</span></pre> + + <div class="Description"> + <h2>Description</h2> + + <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="Format"> + <h2>Format</h2> + + <p>A data frame containing the following variables. + <dl> + <dt><code>package</code></dt><dd>a factor giving the name of the software package</dd></p> + + <p><dt><code>M0</code></dt><dd>The fitted initial concentration of the parent compound</dd></p> + + <p><dt><code>k</code></dt><dd>The fitted first-order degradation rate constant</dd></p> + + <p><dt><code>DT50</code></dt><dd>The resulting half-life of the parent compound</dd></p> + + <p><dt><code>DT90</code></dt><dd>The resulting DT90 of the parent compound</dd></p> + + <p><dt><code>dataset</code></dt><dd>The FOCUS dataset that was used</dd></p> + + <p></dl></p> + + <p></p> + + </div> + + <div class="Source"> + <h2>Source</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_SFO_ref_A_to_F</span><span class="keyword">)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>FOCUS_2006_SFO_ref_A_to_F</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/FOCUS_2006_datasets.html b/docs/FOCUS_2006_datasets.html new file mode 100644 index 00000000..4de4d54e --- /dev/null +++ b/docs/FOCUS_2006_datasets.html @@ -0,0 +1,130 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>FOCUS_2006_datasets. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> +Datasets A to F from the FOCUS Kinetics report from 2006 +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="symbol">FOCUS_2006_datasets</span></pre> + + <div class="Description"> + <h2>Description</h2> + + <p>Data taken from FOCUS (2006), p. 258.</p> + + </div> + + <div class="Format"> + <h2>Format</h2> + + <p>6 datasets with observations on the following variables. + <dl> + <dt><code>name</code></dt><dd>a factor containing the name of the observed variable</dd></p> + + <p><dt><code>time</code></dt><dd>a numeric vector containing time points</dd></p> + + <p><dt><code>value</code></dt><dd>a numeric vector containing concentrations in percent of applied radioactivity</dd></p> + + <p></dl></p> + + <p></p> + + </div> + + <div class="Source"> + <h2>Source</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="symbol">FOCUS_2006_C</span></div> +<div class='output'> 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 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>FOCUS_2006_A</li><li>FOCUS_2006_B</li><li>FOCUS_2006_C</li><li>FOCUS_2006_D</li><li>FOCUS_2006_E</li><li>FOCUS_2006_F</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/FOMC.solution-2.png b/docs/FOMC.solution-2.png Binary files differnew file mode 100644 index 00000000..0efe8f07 --- /dev/null +++ b/docs/FOMC.solution-2.png diff --git a/docs/FOMC.solution.html b/docs/FOMC.solution.html new file mode 100644 index 00000000..fe8b875d --- /dev/null +++ b/docs/FOMC.solution.html @@ -0,0 +1,145 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>FOMC.solution. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> First-Order Multi-Compartment kinetics </h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='FOMC.solution.html'>FOMC.solution</a></span><span class="keyword">(</span><span class="symbol">t</span><span class="keyword">,</span> <span class="symbol">parent.0</span><span class="keyword">,</span> <span class="symbol">alpha</span><span class="keyword">,</span> <span class="symbol">beta</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>t</dt> + <dd> Time. </dd> + <dt>parent.0</dt> + <dd> Starting value for the response variable at time zero. </dd> + <dt>alpha</dt> + <dd> + Shape parameter determined by coefficient of variation of rate constant + values. </dd> + <dt>beta</dt> + <dd> + Location parameter. +</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Function describing exponential decline from a defined starting value, with + a decreasing rate constant.</p> + + <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="Note"> + <h2>Note</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 = beta/alpha$.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + The value of the response variable at time <code>t</code>. +</dl></p> + + </div> + + <div class="References"> + <h2>References</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</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> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="keyword">function</span><span class="keyword">(</span><span class="formalargs">x</span><span class="keyword">)</span> <span class="functioncall"><a href='FOMC.solution.html'>FOMC.solution</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="number">100</span><span class="keyword">,</span> <span class="number">10</span><span class="keyword">,</span> <span class="number">2</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">,</span> <span class="number">2</span><span class="keyword">,</span> <span class="argument">ylim</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">)</span></div> +<p><img src='FOMC.solution-2.png' alt='' width='540' height='400' /></p></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>FOMC.solution</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/HS.solution-2.png b/docs/HS.solution-2.png Binary files differnew file mode 100644 index 00000000..0bdb37a9 --- /dev/null +++ b/docs/HS.solution-2.png diff --git a/docs/HS.solution.html b/docs/HS.solution.html new file mode 100644 index 00000000..836a6063 --- /dev/null +++ b/docs/HS.solution.html @@ -0,0 +1,127 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>HS.solution. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> Hockey-Stick kinetics </h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='HS.solution.html'>HS.solution</a></span><span class="keyword">(</span><span class="symbol">t</span><span class="keyword">,</span> <span class="symbol">parent.0</span><span class="keyword">,</span> <span class="symbol">k1</span><span class="keyword">,</span> <span class="symbol">k2</span><span class="keyword">,</span> <span class="symbol">tb</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>t</dt> + <dd> Time. </dd> + <dt>parent.0</dt> + <dd> Starting value for the response variable at time zero. </dd> + <dt>k1</dt> + <dd> First kinetic constant. </dd> + <dt>k2</dt> + <dd> Second kinetic constant. </dd> + <dt>tb</dt> + <dd> 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>. </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Function describing two exponential decline functions with a break point + between them.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + The value of the response variable at time <code>t</code>. +</dl></p> + + </div> + + <div class="References"> + <h2>References</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="keyword">function</span><span class="keyword">(</span><span class="formalargs">x</span><span class="keyword">)</span> <span class="functioncall"><a href='HS.solution.html'>HS.solution</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="number">100</span><span class="keyword">,</span> <span class="number">2</span><span class="keyword">,</span> <span class="number">0.3</span><span class="keyword">,</span> <span class="number">0.5</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">,</span> <span class="number">2</span><span class="keyword">,</span> <span class="argument">ylim</span><span class="argument">=</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span><span class="number">100</span><span class="keyword">)</span><span class="keyword">)</span></div> +<p><img src='HS.solution-2.png' alt='' width='540' height='400' /></p></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>HS.solution</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/IORE.solution-2.png b/docs/IORE.solution-2.png Binary files differnew file mode 100644 index 00000000..df268b64 --- /dev/null +++ b/docs/IORE.solution-2.png diff --git a/docs/IORE.solution.html b/docs/IORE.solution.html new file mode 100644 index 00000000..df94ef72 --- /dev/null +++ b/docs/IORE.solution.html @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>IORE.solution. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> Indeterminate order rate equation kinetics </h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='IORE.solution.html'>IORE.solution</a></span><span class="keyword">(</span><span class="symbol">t</span><span class="keyword">,</span> <span class="symbol">parent.0</span><span class="keyword">,</span> <span class="symbol">k__iore</span><span class="keyword">,</span> <span class="symbol">N</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>t</dt> + <dd> Time. </dd> + <dt>parent.0</dt> + <dd> Starting value for the response variable at time zero. </dd> + <dt>k__iore</dt> + <dd> Rate constant. Note that this depends on the concentration units used. </dd> + <dt>N</dt> + <dd> Exponent describing the nonlinearity of the rate equation </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Function describing exponential decline from a defined starting value, with + a concentration dependent rate constant.</p> + + </div> + + <div class="Note"> + <h2>Note</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="Value"> + <h2>Value</h2> + + <p><dl> + The value of the response variable at time <code>t</code>. +</dl></p> + + </div> + + <div class="References"> + <h2>References</h2> + + <p>NAFTA Technical Working Group on Pesticides (not dated) Guidance for + Evaluating and Calculating Degradation Kinetics in Environmental + Media</p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="keyword">function</span><span class="keyword">(</span><span class="formalargs">x</span><span class="keyword">)</span> <span class="functioncall"><a href='IORE.solution.html'>IORE.solution</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="number">100</span><span class="keyword">,</span> <span class="number">0.2</span><span class="keyword">,</span> <span class="number">1.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">,</span> <span class="number">2</span><span class="keyword">,</span> + <span class="argument">ylim</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">)</span></div> +<p><img src='IORE.solution-2.png' alt='' width='540' height='400' /></p> +<div class='input'> <span class="symbol">fit.fomc</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="string">"FOMC"</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_C</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> + <span class="symbol">fit.iore</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="string">"IORE"</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_C</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> + <span class="symbol">fit.iore.deS</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="string">"IORE"</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_C</span><span class="keyword">,</span> <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"deSolve"</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> + + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/data.frame'>data.frame</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/stats/topics/coef'>coef</a></span><span class="keyword">(</span><span class="symbol">fit.fomc</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/stats/topics/coef'>coef</a></span><span class="keyword">(</span><span class="symbol">fit.iore</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/stats/topics/coef'>coef</a></span><span class="keyword">(</span><span class="symbol">fit.iore.deS</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">row.names</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/paste'>paste</a></span><span class="keyword">(</span><span class="string">"model par"</span><span class="keyword">,</span> <span class="number">1</span><span class="keyword">:</span><span class="number">3</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'> coef.fit.fomc. coef.fit.iore. coef.fit.iore.deS. +model par 1 85.87489063 85.874891 85.874890 +model par 2 0.05192238 -4.826631 -4.826631 +model par 3 0.65096665 1.949403 1.949403 +</div> +<div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/cbind'>rbind</a></span><span class="keyword">(</span><span class="argument">fomc</span> <span class="argument">=</span> <span class="functioncall"><a href='endpoints.html'>endpoints</a></span><span class="keyword">(</span><span class="symbol">fit.fomc</span><span class="keyword">)</span><span class="keyword">$</span><span class="symbol">distimes</span><span class="keyword">,</span> <span class="argument">iore</span> <span class="argument">=</span> <span class="functioncall"><a href='endpoints.html'>endpoints</a></span><span class="keyword">(</span><span class="symbol">fit.iore</span><span class="keyword">)</span><span class="keyword">$</span><span class="symbol">distimes</span><span class="keyword">,</span> + <span class="argument">iore.deS</span> <span class="argument">=</span> <span class="functioncall"><a href='endpoints.html'>endpoints</a></span><span class="keyword">(</span><span class="symbol">fit.iore</span><span class="keyword">)</span><span class="keyword">$</span><span class="symbol">distimes</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'> 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 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>IORE.solution</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/SFO.solution.html b/docs/SFO.solution.html new file mode 100644 index 00000000..2321f15b --- /dev/null +++ b/docs/SFO.solution.html @@ -0,0 +1,119 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>SFO.solution. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> Single First-Order kinetics </h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='SFO.solution.html'>SFO.solution</a></span><span class="keyword">(</span><span class="symbol">t</span><span class="keyword">,</span> <span class="symbol">parent.0</span><span class="keyword">,</span> <span class="symbol">k</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>t</dt> + <dd> Time. </dd> + <dt>parent.0</dt> + <dd> Starting value for the response variable at time zero. </dd> + <dt>k</dt> + <dd> Kinetic constant. </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Function describing exponential decline from a defined starting value.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + The value of the response variable at time <code>t</code>. +</dl></p> + + </div> + + <div class="References"> + <h2>References</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="comment">## Not run: plot(function(x) SFO.solution(x, 100, 3), 0, 2)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>SFO.solution</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/SFORB.solution.html b/docs/SFORB.solution.html new file mode 100644 index 00000000..6926b770 --- /dev/null +++ b/docs/SFORB.solution.html @@ -0,0 +1,128 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>SFORB.solution. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> Single First-Order Reversible Binding kinetics </h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='SFORB.solution.html'>SFORB.solution</a></span><span class="keyword">(</span><span class="symbol">t</span><span class="keyword">,</span> <span class="symbol">parent.0</span><span class="keyword">,</span> <span class="symbol">k_12</span><span class="keyword">,</span> <span class="symbol">k_21</span><span class="keyword">,</span> <span class="symbol">k_1output</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>t</dt> + <dd> Time. </dd> + <dt>parent.0</dt> + <dd> Starting value for the response variable at time zero. </dd> + <dt>k_12</dt> + <dd> Kinetic constant describing transfer from free to bound. </dd> + <dt>k_21</dt> + <dd> Kinetic constant describing transfer from bound to free. </dd> + <dt>k_1output</dt> + <dd> Kinetic constant describing degradation of the free fraction. </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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="Value"> + <h2>Value</h2> + + <p><dl> + The value of the response variable, which is the sum of free and bound + fractions at time <code>t</code>. +</dl></p> + + </div> + + <div class="References"> + <h2>References</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="comment">## Not run: plot(function(x) SFORB.solution(x, 100, 0.5, 2, 3), 0, 2)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>SFORB.solution</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/add_err-4.png b/docs/add_err-4.png Binary files differnew file mode 100644 index 00000000..f3d04134 --- /dev/null +++ b/docs/add_err-4.png diff --git a/docs/add_err-6.png b/docs/add_err-6.png Binary files differnew file mode 100644 index 00000000..05b27247 --- /dev/null +++ b/docs/add_err-6.png diff --git a/docs/add_err-8.png b/docs/add_err-8.png Binary files differnew file mode 100644 index 00000000..b0182d2a --- /dev/null +++ b/docs/add_err-8.png diff --git a/docs/add_err.html b/docs/add_err.html new file mode 100644 index 00000000..78c69d3e --- /dev/null +++ b/docs/add_err.html @@ -0,0 +1,201 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>add_err. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Add normally distributed errors to simulated kinetic degradation data +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='add_err.html'>add_err</a></span><span class="keyword">(</span><span class="symbol">prediction</span><span class="keyword">,</span> <span class="symbol">sdfunc</span><span class="keyword">,</span> + <span class="argument">n</span> <span class="argument">=</span> <span class="number">1000</span><span class="keyword">,</span> <span class="argument">LOD</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">,</span> <span class="argument">reps</span> <span class="argument">=</span> <span class="number">2</span><span class="keyword">,</span> + <span class="argument">digits</span> <span class="argument">=</span> <span class="number">1</span><span class="keyword">,</span> <span class="argument">seed</span> <span class="argument">=</span> <span class="number">NA</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>prediction</dt> + <dd> + A prediction from a kinetic model as produced by <code><a href='mkinpredict.html'>mkinpredict</a></code>. + </dd> + <dt>sdfunc</dt> + <dd> + 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. + </dd> + <dt>n</dt> + <dd> + The number of datasets to be generated. + </dd> + <dt>LOD</dt> + <dd> + The limit of detection (LOD). Values that are below the LOD after adding + the random error will be set to NA. + </dd> + <dt>reps</dt> + <dd> + The number of replicates to be generated within the datasets. + </dd> + <dt>digits</dt> + <dd> + The number of digits to which the values will be rounded. + </dd> + <dt>seed</dt> + <dd> + The seed used for the generation of random numbers. If NA, the seed + is not set. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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="Value"> + <h2>Value</h2> + + <p><dl> + 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>. +</dl></p> + + </div> + + <div class="References"> + <h2>References</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 + http://chem.uft.uni-bremen.de/ranke/posters/piacenza_2015.pdf</p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="comment"># The kinetic model</span> +<span class="symbol">m_SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"M1"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">M1</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">use_of_ff</span> <span class="argument">=</span> <span class="string">"max"</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'> +<span class="comment"># Generate a prediction for a specific set of parameters</span> +<span class="symbol">sampling_times</span> <span class="assignement">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">1</span><span class="keyword">,</span> <span class="number">3</span><span class="keyword">,</span> <span class="number">7</span><span class="keyword">,</span> <span class="number">14</span><span class="keyword">,</span> <span class="number">28</span><span class="keyword">,</span> <span class="number">60</span><span class="keyword">,</span> <span class="number">90</span><span class="keyword">,</span> <span class="number">120</span><span class="keyword">)</span> + +<span class="comment"># This is the prediction used for the "Type 2 datasets" on the Piacenza poster</span> +<span class="comment"># from 2015</span> +<span class="symbol">d_SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">m_SFO_SFO</span><span class="keyword">,</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_parent</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">,</span> <span class="argument">f_parent_to_M1</span> <span class="argument">=</span> <span class="number">0.5</span><span class="keyword">,</span> + <span class="argument">k_M1</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/Log'>log</a></span><span class="keyword">(</span><span class="number">2</span><span class="keyword">)</span><span class="keyword">/</span><span class="number">1000</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">,</span> <span class="argument">M1</span> <span class="argument">=</span> <span class="number">0</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="symbol">sampling_times</span><span class="keyword">)</span> + +<span class="comment"># Add an error term with a constant (independent of the value) standard deviation</span> +<span class="comment"># of 10, and generate three datasets</span> +<span class="symbol">d_SFO_SFO_err</span> <span class="assignement"><-</span> <span class="functioncall"><a href='add_err.html'>add_err</a></span><span class="keyword">(</span><span class="symbol">d_SFO_SFO</span><span class="keyword">,</span> <span class="keyword">function</span><span class="keyword">(</span><span class="formalargs">x</span><span class="keyword">)</span> <span class="number">10</span><span class="keyword">,</span> <span class="argument">n</span> <span class="argument">=</span> <span class="number">3</span><span class="keyword">,</span> <span class="argument">seed</span> <span class="argument">=</span> <span class="number">123456789</span> <span class="keyword">)</span> + +<span class="comment"># Name the datasets for nicer plotting</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/names'>names</a></span><span class="keyword">(</span><span class="symbol">d_SFO_SFO_err</span><span class="keyword">)</span> <span class="assignement"><-</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/paste'>paste</a></span><span class="keyword">(</span><span class="string">"Dataset"</span><span class="keyword">,</span> <span class="number">1</span><span class="keyword">:</span><span class="number">3</span><span class="keyword">)</span> + +<span class="comment"># Name the model in the list of models (with only one member in this case)</span> +<span class="comment"># for nicer plotting later on.</span> +<span class="comment"># Be quiet and use the faster Levenberg-Marquardt algorithm, as the datasets</span> +<span class="comment"># are easy and examples are run often. Use only one core not to offend CRAN</span> +<span class="comment"># checks</span> +<span class="symbol">f_SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mmkin.html'>mmkin</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="string">"SFO-SFO"</span> <span class="argument">=</span> <span class="symbol">m_SFO_SFO</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="symbol">d_SFO_SFO_err</span><span class="keyword">,</span> <span class="argument">cores</span> <span class="argument">=</span> <span class="number">1</span><span class="keyword">,</span> + <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">method.modFit</span> <span class="argument">=</span> <span class="string">"Marq"</span><span class="keyword">)</span> + +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">f_SFO_SFO</span><span class="keyword">)</span></div> +<p><img src='add_err-4.png' alt='' width='540' height='400' /></p> +<div class='input'> +<span class="comment"># We would like to inspect the fit for dataset 3 more closely</span> +<span class="comment"># Using double brackets makes the returned object an mkinfit object</span> +<span class="comment"># instead of a list of mkinfit objects, so plot.mkinfit is used</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">f_SFO_SFO</span><span class="keyword">[[</span><span class="number">3</span><span class="keyword">]</span><span class="keyword">]</span><span class="keyword">,</span> <span class="argument">show_residuals</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span></div> +<p><img src='add_err-6.png' alt='' width='540' height='400' /></p> +<div class='input'> +<span class="comment"># If we use single brackets, we should give two indices (model and dataset),</span> +<span class="comment"># and plot.mmkin is used</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">f_SFO_SFO</span><span class="keyword">[</span><span class="number">1</span><span class="keyword">,</span> <span class="number">3</span><span class="keyword">]</span><span class="keyword">)</span></div> +<p><img src='add_err-8.png' alt='' width='540' height='400' /></p> +<div class='input'></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>add_err</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/css/bootstrap-responsive.css b/docs/css/bootstrap-responsive.css new file mode 100644 index 00000000..06e55c0b --- /dev/null +++ b/docs/css/bootstrap-responsive.css @@ -0,0 +1,815 @@ +/*! + * Bootstrap Responsive v2.0.4 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +@media (max-width: 767px) { + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 18px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-group > label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .modal { + position: absolute; + top: 10px; + right: 10px; + left: 10px; + width: auto; + margin: 0; + } + .modal.fade.in { + top: auto; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + [class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: auto; + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + margin-left: 20px; + } + .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 28px; + margin-left: 2.762430939%; + *margin-left: 2.709239449638298%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span12 { + width: 99.999999993%; + *width: 99.9468085036383%; + } + .row-fluid .span11 { + width: 91.436464082%; + *width: 91.38327259263829%; + } + .row-fluid .span10 { + width: 82.87292817100001%; + *width: 82.8197366816383%; + } + .row-fluid .span9 { + width: 74.30939226%; + *width: 74.25620077063829%; + } + .row-fluid .span8 { + width: 65.74585634900001%; + *width: 65.6926648596383%; + } + .row-fluid .span7 { + width: 57.182320438000005%; + *width: 57.129128948638304%; + } + .row-fluid .span6 { + width: 48.618784527%; + *width: 48.5655930376383%; + } + .row-fluid .span5 { + width: 40.055248616%; + *width: 40.0020571266383%; + } + .row-fluid .span4 { + width: 31.491712705%; + *width: 31.4385212156383%; + } + .row-fluid .span3 { + width: 22.928176794%; + *width: 22.874985304638297%; + } + .row-fluid .span2 { + width: 14.364640883%; + *width: 14.311449393638298%; + } + .row-fluid .span1 { + width: 5.801104972%; + *width: 5.747913482638298%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 714px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 652px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 590px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 528px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 466px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 404px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 342px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 280px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 218px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 156px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 94px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 32px; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + margin-left: 30px; + } + .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1170px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 28px; + margin-left: 2.564102564%; + *margin-left: 2.510911074638298%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145300001%; + *width: 91.3997999636383%; + } + .row-fluid .span10 { + width: 82.905982906%; + *width: 82.8527914166383%; + } + .row-fluid .span9 { + width: 74.358974359%; + *width: 74.30578286963829%; + } + .row-fluid .span8 { + width: 65.81196581200001%; + *width: 65.7587743226383%; + } + .row-fluid .span7 { + width: 57.264957265%; + *width: 57.2117657756383%; + } + .row-fluid .span6 { + width: 48.717948718%; + *width: 48.6647572286383%; + } + .row-fluid .span5 { + width: 40.170940171000005%; + *width: 40.117748681638304%; + } + .row-fluid .span4 { + width: 31.623931624%; + *width: 31.5707401346383%; + } + .row-fluid .span3 { + width: 23.076923077%; + *width: 23.0237315876383%; + } + .row-fluid .span2 { + width: 14.529914530000001%; + *width: 14.4767230406383%; + } + .row-fluid .span1 { + width: 5.982905983%; + *width: 5.929714493638298%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1160px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1060px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 960px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 860px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 760px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 660px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 560px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 460px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 360px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 260px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 160px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 60px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 18px; + } + .navbar-fixed-bottom { + margin-top: 18px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 9px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #999999; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 6px 15px; + font-weight: bold; + color: #999999; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .dropdown-menu a:hover { + background-color: #222222; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: block; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 9px 15px; + margin: 9px 0; + border-top: 1px solid #222222; + border-bottom: 1px solid #222222; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/docs/css/bootstrap-responsive.min.css b/docs/css/bootstrap-responsive.min.css new file mode 100644 index 00000000..1f55036a --- /dev/null +++ b/docs/css/bootstrap-responsive.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.0.4 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}@media(max-width:767px){.visible-phone{display:inherit!important}.hidden-phone{display:none!important}.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}}@media(min-width:768px) and (max-width:979px){.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:18px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.modal{position:absolute;top:10px;right:10px;left:10px;width:auto;margin:0}.modal.fade.in{top:auto}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:auto;margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.762430939%;*margin-left:2.709239449638298%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:99.999999993%;*width:99.9468085036383%}.row-fluid .span11{width:91.436464082%;*width:91.38327259263829%}.row-fluid .span10{width:82.87292817100001%;*width:82.8197366816383%}.row-fluid .span9{width:74.30939226%;*width:74.25620077063829%}.row-fluid .span8{width:65.74585634900001%;*width:65.6926648596383%}.row-fluid .span7{width:57.182320438000005%;*width:57.129128948638304%}.row-fluid .span6{width:48.618784527%;*width:48.5655930376383%}.row-fluid .span5{width:40.055248616%;*width:40.0020571266383%}.row-fluid .span4{width:31.491712705%;*width:31.4385212156383%}.row-fluid .span3{width:22.928176794%;*width:22.874985304638297%}.row-fluid .span2{width:14.364640883%;*width:14.311449393638298%}.row-fluid .span1{width:5.801104972%;*width:5.747913482638298%}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:714px}input.span11,textarea.span11,.uneditable-input.span11{width:652px}input.span10,textarea.span10,.uneditable-input.span10{width:590px}input.span9,textarea.span9,.uneditable-input.span9{width:528px}input.span8,textarea.span8,.uneditable-input.span8{width:466px}input.span7,textarea.span7,.uneditable-input.span7{width:404px}input.span6,textarea.span6,.uneditable-input.span6{width:342px}input.span5,textarea.span5,.uneditable-input.span5{width:280px}input.span4,textarea.span4,.uneditable-input.span4{width:218px}input.span3,textarea.span3,.uneditable-input.span3{width:156px}input.span2,textarea.span2,.uneditable-input.span2{width:94px}input.span1,textarea.span1,.uneditable-input.span1{width:32px}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:30px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.564102564%;*margin-left:2.510911074638298%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145300001%;*width:91.3997999636383%}.row-fluid .span10{width:82.905982906%;*width:82.8527914166383%}.row-fluid .span9{width:74.358974359%;*width:74.30578286963829%}.row-fluid .span8{width:65.81196581200001%;*width:65.7587743226383%}.row-fluid .span7{width:57.264957265%;*width:57.2117657756383%}.row-fluid .span6{width:48.717948718%;*width:48.6647572286383%}.row-fluid .span5{width:40.170940171000005%;*width:40.117748681638304%}.row-fluid .span4{width:31.623931624%;*width:31.5707401346383%}.row-fluid .span3{width:23.076923077%;*width:23.0237315876383%}.row-fluid .span2{width:14.529914530000001%;*width:14.4767230406383%}.row-fluid .span1{width:5.982905983%;*width:5.929714493638298%}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:1160px}input.span11,textarea.span11,.uneditable-input.span11{width:1060px}input.span10,textarea.span10,.uneditable-input.span10{width:960px}input.span9,textarea.span9,.uneditable-input.span9{width:860px}input.span8,textarea.span8,.uneditable-input.span8{width:760px}input.span7,textarea.span7,.uneditable-input.span7{width:660px}input.span6,textarea.span6,.uneditable-input.span6{width:560px}input.span5,textarea.span5,.uneditable-input.span5{width:460px}input.span4,textarea.span4,.uneditable-input.span4{width:360px}input.span3,textarea.span3,.uneditable-input.span3{width:260px}input.span2,textarea.span2,.uneditable-input.span2{width:160px}input.span1,textarea.span1,.uneditable-input.span1{width:60px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:18px}.navbar-fixed-bottom{margin-top:18px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 9px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#999;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#222}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:block;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222;border-bottom:1px solid #222;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/docs/css/bootstrap.css b/docs/css/bootstrap.css new file mode 100644 index 00000000..bb40c85f --- /dev/null +++ b/docs/css/bootstrap.css @@ -0,0 +1,4983 @@ +/*! + * Bootstrap v2.0.4 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover { + color: #005580; + text-decoration: underline; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + margin-left: 20px; +} + +.container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 28px; + margin-left: 2.127659574%; + *margin-left: 2.0744680846382977%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .span12 { + width: 99.99999998999999%; + *width: 99.94680850063828%; +} + +.row-fluid .span11 { + width: 91.489361693%; + *width: 91.4361702036383%; +} + +.row-fluid .span10 { + width: 82.97872339599999%; + *width: 82.92553190663828%; +} + +.row-fluid .span9 { + width: 74.468085099%; + *width: 74.4148936096383%; +} + +.row-fluid .span8 { + width: 65.95744680199999%; + *width: 65.90425531263828%; +} + +.row-fluid .span7 { + width: 57.446808505%; + *width: 57.3936170156383%; +} + +.row-fluid .span6 { + width: 48.93617020799999%; + *width: 48.88297871863829%; +} + +.row-fluid .span5 { + width: 40.425531911%; + *width: 40.3723404216383%; +} + +.row-fluid .span4 { + width: 31.914893614%; + *width: 31.8617021246383%; +} + +.row-fluid .span3 { + width: 23.404255317%; + *width: 23.3510638276383%; +} + +.row-fluid .span2 { + width: 14.89361702%; + *width: 14.8404255306383%; +} + +.row-fluid .span1 { + width: 6.382978723%; + *width: 6.329787233638298%; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 9px; +} + +p small { + font-size: 11px; + color: #999999; +} + +.lead { + margin-bottom: 18px; + font-size: 20px; + font-weight: 200; + line-height: 27px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-family: inherit; + font-weight: bold; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} + +h1 { + font-size: 30px; + line-height: 36px; +} + +h1 small { + font-size: 18px; +} + +h2 { + font-size: 24px; + line-height: 36px; +} + +h2 small { + font-size: 18px; +} + +h3 { + font-size: 18px; + line-height: 27px; +} + +h3 small { + font-size: 14px; +} + +h4, +h5, +h6 { + line-height: 18px; +} + +h4 { + font-size: 14px; +} + +h4 small { + font-size: 12px; +} + +h5 { + font-size: 12px; +} + +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} + +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} + +.page-header h1 { + line-height: 1; +} + +ul, +ol { + padding: 0; + margin: 0 0 9px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li { + line-height: 18px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 18px; +} + +dt, +dd { + line-height: 18px; +} + +dt { + font-weight: bold; + line-height: 17px; +} + +dd { + margin-left: 9px; +} + +.dl-horizontal dt { + float: left; + width: 120px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 130px; +} + +hr { + margin: 18px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +.muted { + color: #999999; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 22.5px; +} + +blockquote small { + display: block; + line-height: 18px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 18px; + font-style: normal; + line-height: 18px; +} + +small { + font-size: 100%; +} + +cite { + font-style: normal; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + font-size: 12.025px; + line-height: 18px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 18px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 18px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 27px; + font-size: 19.5px; + line-height: 36px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 13.5px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 13px; + font-weight: normal; + line-height: 18px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 18px; + padding: 4px; + margin-bottom: 9px; + font-size: 13px; + line-height: 18px; + color: #555555; +} + +input, +textarea { + width: 210px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 3px 0; + *margin-top: 0; + /* IE7 */ + + line-height: normal; + cursor: pointer; +} + +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +select, +input[type="file"] { + height: 28px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 28px; +} + +select { + width: 220px; + border: 1px solid #bbb; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.radio, +.checkbox { + min-height: 18px; + padding-left: 18px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 930px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 850px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 770px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 690px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 610px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 530px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 450px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 370px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 290px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 210px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 130px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 50px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; + border-color: #ddd; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning > label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; + border-color: #c09853; +} + +.control-group.warning .checkbox:focus, +.control-group.warning .radio:focus, +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: 0 0 6px #dbc59e; + -moz-box-shadow: 0 0 6px #dbc59e; + box-shadow: 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error > label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; + border-color: #b94a48; +} + +.control-group.error .checkbox:focus, +.control-group.error .radio:focus, +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: 0 0 6px #d59392; + -moz-box-shadow: 0 0 6px #d59392; + box-shadow: 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success > label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; + border-color: #468847; +} + +.control-group.success .checkbox:focus, +.control-group.success .radio:focus, +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: 0 0 6px #7aba7b; + -moz-box-shadow: 0 0 6px #7aba7b; + box-shadow: 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +input:focus:required:invalid, +textarea:focus:required:invalid, +select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:required:invalid:focus, +textarea:focus:required:invalid:focus, +select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 17px 20px 18px; + margin-top: 18px; + margin-bottom: 18px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; + cursor: not-allowed; + background-color: #ffffff; + border-color: #eee; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +:-moz-placeholder { + color: #999999; +} + +:-ms-input-placeholder { + color: #999999; +} + +::-webkit-input-placeholder { + color: #999999; +} + +.help-block, +.help-inline { + color: #555555; +} + +.help-block { + display: block; + margin-bottom: 9px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-prepend, +.input-append { + margin-bottom: 5px; +} + +.input-prepend input, +.input-append input, +.input-prepend select, +.input-append select, +.input-prepend .uneditable-input, +.input-append .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: middle; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend input:focus, +.input-append input:focus, +.input-prepend select:focus, +.input-append select:focus, +.input-prepend .uneditable-input:focus, +.input-append .uneditable-input:focus { + z-index: 2; +} + +.input-prepend .uneditable-input, +.input-append .uneditable-input { + border-left-color: #ccc; +} + +.input-prepend .add-on, +.input-append .add-on { + display: inline-block; + width: auto; + height: 18px; + min-width: 16px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + vertical-align: middle; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-prepend .add-on, +.input-append .add-on, +.input-prepend .btn, +.input-append .btn { + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend .active, +.input-append .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append .uneditable-input { + border-right-color: #ccc; + border-left-color: #eee; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 9px; +} + +legend + .control-group { + margin-top: 18px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 18px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 140px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 160px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 160px; +} + +.form-horizontal .help-block { + margin-top: 9px; + margin-bottom: 0; +} + +.form-horizontal .form-actions { + padding-left: 160px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 18px; +} + +.table th, +.table td { + padding: 8px; + line-height: 18px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapsed; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, +.table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, +.table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, +.table-bordered tbody:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, +.table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table tbody tr:hover td, +.table tbody tr:hover th { + background-color: #f5f5f5; +} + +table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +[class^="icon-"]:last-child, +[class*=" icon-"]:last-child { + *margin-left: 0; +} + +.icon-white { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; + opacity: 0.3; + filter: alpha(opacity=30); +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown:hover .caret, +.open .caret { + opacity: 1; + filter: alpha(opacity=100); +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 4px 0; + margin: 1px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 8px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu a { + display: block; + padding: 3px 15px; + clear: both; + font-weight: normal; + line-height: 18px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: "\2191"; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -ms-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -ms-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 10px 4px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 13px; + line-height: 18px; + *line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(top, #ffffff, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + *background-color: #d9d9d9; + /* Buttons in IE7 don't get borders, so darken on hover */ + + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -ms-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-color: #e6e6e6; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 9px 14px; + font-size: 15px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.btn-large [class^="icon-"] { + margin-top: 1px; +} + +.btn-small { + padding: 5px 9px; + font-size: 11px; + line-height: 16px; +} + +.btn-small [class^="icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 14px; +} + +.btn-primary, +.btn-primary:hover, +.btn-warning, +.btn-warning:hover, +.btn-danger, +.btn-danger:hover, +.btn-success, +.btn-success:hover, +.btn-info, +.btn-info:hover, +.btn-inverse, +.btn-inverse:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #ccc; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + background-color: #0074cc; + *background-color: #0055cc; + background-image: -ms-linear-gradient(top, #0088cc, #0055cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); + background-image: -o-linear-gradient(top, #0088cc, #0055cc); + background-image: -moz-linear-gradient(top, #0088cc, #0055cc); + background-image: linear-gradient(top, #0088cc, #0055cc); + background-repeat: repeat-x; + border-color: #0055cc #0055cc #003580; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + background-color: #0055cc; + *background-color: #004ab3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #004099 \9; +} + +.btn-warning { + background-color: #faa732; + *background-color: #f89406; + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + background-color: #da4f49; + *background-color: #bd362f; + background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + background-color: #5bb75b; + *background-color: #51a351; + background-image: -ms-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(top, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + background-color: #414141; + *background-color: #222222; + background-image: -ms-linear-gradient(top, #555555, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); + background-image: -webkit-linear-gradient(top, #555555, #222222); + background-image: -o-linear-gradient(top, #555555, #222222); + background-image: -moz-linear-gradient(top, #555555, #222222); + background-image: linear-gradient(top, #555555, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 2px; + *padding-bottom: 2px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-group { + position: relative; + *margin-left: .3em; + *zoom: 1; +} + +.btn-group:before, +.btn-group:after { + display: table; + content: ""; +} + +.btn-group:after { + clear: both; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 9px; + margin-bottom: 9px; +} + +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group > .btn { + position: relative; + float: left; + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .dropdown-toggle { + *padding-top: 4px; + padding-right: 8px; + *padding-bottom: 4px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini.dropdown-toggle { + padding-right: 5px; + padding-left: 5px; +} + +.btn-group > .btn-small.dropdown-toggle { + *padding-top: 4px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large.dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0055cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 7px; + margin-left: 0; +} + +.btn:hover .caret, +.open.btn-group .caret { + opacity: 1; + filter: alpha(opacity=100); +} + +.btn-mini .caret { + margin-top: 5px; +} + +.btn-small .caret { + margin-top: 6px; +} + +.btn-large .caret { + margin-top: 6px; + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.dropup .btn-large .caret { + border-top: 0; + border-bottom: 5px solid #000000; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 0.75; + filter: alpha(opacity=75); +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 18px; + color: #c09853; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert-heading { + color: inherit; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 18px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 18px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > .pull-right { + float: right; +} + +.nav .nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 18px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 8px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 18px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.nav-tabs .dropdown-toggle .caret, +.nav-pills .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav-tabs .dropdown-toggle:hover .caret, +.nav-pills .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +.nav-tabs .active .dropdown-toggle .caret, +.nav-pills .active .dropdown-toggle .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.nav > .dropdown.active > a:hover { + color: #000000; + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 18px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; +} + +.navbar { + color: #999999; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar .brand { + display: block; + float: left; + padding: 8px 20px 12px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + line-height: 1; + color: #999999; +} + +.navbar .navbar-text { + margin-bottom: 0; + line-height: 40px; +} + +.navbar .navbar-link { + color: #999999; +} + +.navbar .navbar-link:hover { + color: #ffffff; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn { + margin: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 6px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 6px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #ffffff; + background-color: #626262; + border: 1px solid #151515; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-search .search-query:focus, +.navbar-search .search-query.focused { + padding: 5px 10px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; +} + +.navbar .nav > li { + display: block; + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 9px 10px 11px; + line-height: 19px; + color: #999999; + text-decoration: none; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar .btn { + display: inline-block; + padding: 4px 10px 4px; + margin: 5px 5px 6px; + line-height: 18px; +} + +.navbar .btn-group { + padding: 5px 5px 6px; + margin: 0; +} + +.navbar .nav > li > a:hover { + color: #ffffff; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav .active > a, +.navbar .nav .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #222222; +} + +.navbar .divider-vertical { + width: 1px; + height: 40px; + margin: 0 9px; + overflow: hidden; + background-color: #222222; + border-right: 1px solid #333333; +} + +.navbar .nav.pull-right { + margin-right: 0; + margin-left: 10px; +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + background-color: #2c2c2c; + *background-color: #222222; + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-image: -moz-linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + background-color: #222222; + *background-color: #151515; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #080808 \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown .dropdown-toggle .caret, +.navbar .nav li.dropdown.open .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar .nav li.dropdown.active .caret { + opacity: 1; + filter: alpha(opacity=100); +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: transparent; +} + +.navbar .nav li.dropdown.active > .dropdown-toggle:hover { + color: #ffffff; +} + +.navbar .pull-right .dropdown-menu, +.navbar .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right .dropdown-menu:before, +.navbar .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right .dropdown-menu:after, +.navbar .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + list-style: none; + background-color: #fbfbfb; + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + background-repeat: repeat-x; + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.breadcrumb li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb .divider { + padding: 0 5px; + color: #999999; +} + +.breadcrumb .active a { + color: #333333; +} + +.pagination { + height: 36px; + margin: 18px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination li { + display: inline; +} + +.pagination a { + float: left; + padding: 0 14px; + line-height: 34px; + text-decoration: none; + border: 1px solid #ddd; + border-left-width: 0; +} + +.pagination a:hover, +.pagination .active a { + background-color: #f5f5f5; +} + +.pagination .active a { + color: #999999; + cursor: default; +} + +.pagination .disabled span, +.pagination .disabled a, +.pagination .disabled a:hover { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination li:first-child a { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.pagination li:last-child a { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pager { + margin-bottom: 18px; + margin-left: 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager a { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next a { + float: right; +} + +.pager .previous a { + float: left; +} + +.pager .disabled a, +.pager .disabled a:hover { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-open .dropdown-menu { + z-index: 2050; +} + +.modal-open .dropdown.open { + *z-index: 2050; +} + +.modal-open .popover { + z-index: 2060; +} + +.modal-open .tooltip { + z-index: 2070; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + width: 560px; + margin: -250px 0 0 -280px; + overflow: auto; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -ms-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 50%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-body { + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.tooltip { + position: absolute; + z-index: 1020; + display: block; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -2px; +} + +.tooltip.right { + margin-left: 2px; +} + +.tooltip.bottom { + margin-top: 2px; +} + +.tooltip.left { + margin-left: -2px; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top: 5px solid #000000; + border-right: 5px solid transparent; + border-left: 5px solid transparent; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; + border-left: 5px solid transparent; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-right: 5px solid #000000; + border-bottom: 5px solid transparent; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + padding: 5px; +} + +.popover.top { + margin-top: -5px; +} + +.popover.right { + margin-left: 5px; +} + +.popover.bottom { + margin-top: 5px; +} + +.popover.left { + margin-left: -5px; +} + +.popover.top .arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top: 5px solid #000000; + border-right: 5px solid transparent; + border-left: 5px solid transparent; +} + +.popover.right .arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-right: 5px solid #000000; + border-bottom: 5px solid transparent; +} + +.popover.bottom .arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; + border-left: 5px solid transparent; +} + +.popover.left .arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} + +.popover .arrow { + position: absolute; + width: 0; + height: 0; +} + +.popover-inner { + width: 280px; + padding: 3px; + overflow: hidden; + background: #000000; + background: rgba(0, 0, 0, 0.8); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +} + +.popover-title { + padding: 9px 15px; + line-height: 1; + background-color: #f5f5f5; + border-bottom: 1px solid #eee; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; +} + +.popover-content { + padding: 14px; + background-color: #ffffff; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.popover-content p, +.popover-content ul, +.popover-content ol { + margin-bottom: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 18px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 1; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); +} + +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; +} + +.label, +.badge { + font-size: 10.998px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 18px; + margin-bottom: 18px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + width: 0; + height: 18px; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -o-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-image: -webkit-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-image: -moz-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-image: -ms-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-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + 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); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-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-image: -moz-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-image: -ms-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-image: -o-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-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); +} + +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} + +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-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-image: -moz-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-image: -ms-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-image: -o-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-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); +} + +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-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-image: -moz-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-image: -ms-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-image: -o-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-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); +} + +.progress-warning .bar { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); +} + +.progress-warning.progress-striped .bar { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-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-image: -moz-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-image: -ms-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-image: -o-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-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); +} + +.accordion { + margin-bottom: 18px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 18px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -ms-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel .item > img { + display: block; + line-height: 1; +} + +.carousel .active, +.carousel .next, +.carousel .prev { + display: block; +} + +.carousel .active { + left: 0; +} + +.carousel .next, +.carousel .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel .next { + left: 100%; +} + +.carousel .prev { + left: -100%; +} + +.carousel .next.left, +.carousel .prev.right { + left: 0; +} + +.carousel .active.left { + left: -100%; +} + +.carousel .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 10px 15px 5px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + color: #ffffff; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 27px; + color: inherit; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} diff --git a/docs/css/bootstrap.min.css b/docs/css/bootstrap.min.css new file mode 100644 index 00000000..b74b4546 --- /dev/null +++ b/docs/css/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.0.4 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;content:""}.row:after{clear:both}[class*="span"]{float:left;margin-left:20px}.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:28px;margin-left:2.127659574%;*margin-left:2.0744680846382977%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%}.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%}.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%}.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%}.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%}.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%}.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%}.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%}.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%}.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%}.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%}.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;content:""}.container-fluid:after{clear:both}p{margin:0 0 9px}p small{font-size:11px;color:#999}.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px}h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999}h1{font-size:30px;line-height:36px}h1 small{font-size:18px}h2{font-size:24px;line-height:36px}h2 small{font-size:18px}h3{font-size:18px;line-height:27px}h3 small{font-size:14px}h4,h5,h6{line-height:18px}h4{font-size:14px}h4 small{font-size:12px}h5{font-size:12px}h6{font-size:11px;color:#999;text-transform:uppercase}.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eee}.page-header h1{line-height:1}ul,ol{padding:0;margin:0 0 9px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}ul{list-style:disc}ol{list-style:decimal}li{line-height:18px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}dl{margin-bottom:18px}dt,dd{line-height:18px}dt{font-weight:bold;line-height:17px}dd{margin-left:9px}.dl-horizontal dt{float:left;width:120px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:130px}hr{margin:18px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}strong{font-weight:bold}em{font-style:italic}.muted{color:#999}abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px}blockquote small{display:block;line-height:18px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:18px;font-style:normal;line-height:18px}small{font-size:100%}cite{font-style:normal}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:18px}pre code{padding:0;color:inherit;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 18px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:13.5px;color:#999}label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555}input,textarea{width:210px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-ms-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer}input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}.uneditable-textarea{width:auto;height:auto}select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px}select{width:220px;border:1px solid #bbb}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.radio,.checkbox{min-height:18px;padding-left:18px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}input.span12,textarea.span12,.uneditable-input.span12{width:930px}input.span11,textarea.span11,.uneditable-input.span11{width:850px}input.span10,textarea.span10,.uneditable-input.span10{width:770px}input.span9,textarea.span9,.uneditable-input.span9{width:690px}input.span8,textarea.span8,.uneditable-input.span8{width:610px}input.span7,textarea.span7,.uneditable-input.span7{width:530px}input.span6,textarea.span6,.uneditable-input.span6{width:450px}input.span5,textarea.span5,.uneditable-input.span5{width:370px}input.span4,textarea.span4,.uneditable-input.span4{width:290px}input.span3,textarea.span3,.uneditable-input.span3{width:210px}input.span2,textarea.span2,.uneditable-input.span2{width:130px}input.span1,textarea.span1,.uneditable-input.span1{width:50px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee;border-color:#ddd}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853}.control-group.warning .checkbox:focus,.control-group.warning .radio:focus,.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48}.control-group.error .checkbox:focus,.control-group.error .radio:focus,.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847}.control-group.success .checkbox:focus,.control-group.success .radio:focus,.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;content:""}.form-actions:after{clear:both}.uneditable-input{overflow:hidden;white-space:nowrap;cursor:not-allowed;background-color:#fff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}:-moz-placeholder{color:#999}:-ms-input-placeholder{color:#999}::-webkit-input-placeholder{color:#999}.help-block,.help-inline{color:#555}.help-block{display:block;margin-bottom:9px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-prepend,.input-append{margin-bottom:5px}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:middle;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{z-index:2}.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc}.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;height:18px;min-width:16px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc}.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-append .uneditable-input{border-right-color:#ccc;border-left-color:#eee}.input-append .add-on:last-child,.input-append .btn:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:9px}legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:18px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:160px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:160px}.form-horizontal .help-block{margin-top:9px;margin-bottom:0}.form-horizontal .form-actions{padding-left:160px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:18px}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9}.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5}table .span1{float:none;width:44px;margin-left:0}table .span2{float:none;width:124px;margin-left:0}table .span3{float:none;width:204px;margin-left:0}table .span4{float:none;width:284px;margin-left:0}table .span5{float:none;width:364px;margin-left:0}table .span6{float:none;width:444px;margin-left:0}table .span7{float:none;width:524px;margin-left:0}table .span8{float:none;width:604px;margin-left:0}table .span9{float:none;width:684px;margin-left:0}table .span10{float:none;width:764px;margin-left:0}table .span11{float:none;width:844px;margin-left:0}table .span12{float:none;width:924px;margin-left:0}table .span13{float:none;width:1004px;margin-left:0}table .span14{float:none;width:1084px;margin-left:0}table .span15{float:none;width:1164px;margin-left:0}table .span16{float:none;width:1244px;margin-left:0}table .span17{float:none;width:1324px;margin-left:0}table .span18{float:none;width:1404px;margin-left:0}table .span19{float:none;width:1484px;margin-left:0}table .span20{float:none;width:1564px;margin-left:0}table .span21{float:none;width:1644px;margin-left:0}table .span22{float:none;width:1724px;margin-left:0}table .span23{float:none;width:1804px;margin-left:0}table .span24{float:none;width:1884px;margin-left:0}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0}.icon-white{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";opacity:.3;filter:alpha(opacity=30)}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:4px 0;margin:1px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#08c}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0,0,0,0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-ms-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-ms-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 10px 4px;margin-bottom:0;*margin-left:.3em;font-size:13px;line-height:18px;*line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-ms-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(top,#fff,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.btn-large [class^="icon-"]{margin-top:1px}.btn-small{padding:5px 9px;font-size:11px;line-height:16px}.btn-small [class^="icon-"]{margin-top:-1px}.btn-mini{padding:2px 6px;font-size:11px;line-height:14px}.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#ccc;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.btn-primary{background-color:#0074cc;*background-color:#05c;background-image:-ms-linear-gradient(top,#08c,#05c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#05c));background-image:-webkit-linear-gradient(top,#08c,#05c);background-image:-o-linear-gradient(top,#08c,#05c);background-image:-moz-linear-gradient(top,#08c,#05c);background-image:linear-gradient(top,#08c,#05c);background-repeat:repeat-x;border-color:#05c #05c #003580;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc',endColorstr='#0055cc',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#05c;*background-color:#004ab3}.btn-primary:active,.btn-primary.active{background-color:#004099 \9}.btn-warning{background-color:#faa732;*background-color:#f89406;background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{background-color:#da4f49;*background-color:#bd362f;background-image:-ms-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(top,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{background-color:#5bb75b;*background-color:#51a351;background-image:-ms-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(top,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{background-color:#49afcd;*background-color:#2f96b4;background-image:-ms-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(top,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#2f96b4',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{background-color:#414141;*background-color:#222;background-image:-ms-linear-gradient(top,#555,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#222));background-image:-webkit-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:-moz-linear-gradient(top,#555,#222);background-image:linear-gradient(top,#555,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#555555',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-group{position:relative;*margin-left:.3em;*zoom:1}.btn-group:before,.btn-group:after{display:table;content:""}.btn-group:after{clear:both}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:9px;margin-bottom:9px}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1}.btn-group>.btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.dropdown-toggle{*padding-top:4px;padding-right:8px;*padding-bottom:4px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini.dropdown-toggle{padding-right:5px;padding-left:5px}.btn-group>.btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px}.btn-group>.btn-large.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#05c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:7px;margin-left:0}.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100)}.btn-mini .caret{margin-top:5px}.btn-small .caret{margin-top:6px}.btn-large .caret{margin-top:6px;border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-top:0;border-bottom:5px solid #000}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:.75;filter:alpha(opacity=75)}.alert{padding:8px 35px 8px 14px;margin-bottom:18px;color:#c09853;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert-heading{color:inherit}.alert .close{position:relative;top:-2px;right:-21px;line-height:18px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:18px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333;border-bottom-color:#333}.nav>.dropdown.active>a:hover{color:#000;cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.navbar{*position:relative;*z-index:2;margin-bottom:18px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top,#333,#222);background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.25),inset 0 -1px 0 rgba(0,0,0,0.1)}.navbar .container{width:auto}.nav-collapse.collapse{height:auto}.navbar{color:#999}.navbar .brand:hover{text-decoration:none}.navbar .brand{display:block;float:left;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#999}.navbar .navbar-text{margin-bottom:0;line-height:40px}.navbar .navbar-link{color:#999}.navbar .navbar-link:hover{color:#fff}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn{margin:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#fff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right}.navbar .nav>li{display:block;float:left}.navbar .nav>li>a{float:none;padding:9px 10px 11px;line-height:19px;color:#999;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar .btn{display:inline-block;padding:4px 10px 4px;margin:5px 5px 6px;line-height:18px}.navbar .btn-group{padding:5px 5px 6px;margin:0}.navbar .nav>li>a:hover{color:#fff;text-decoration:none;background-color:transparent}.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#fff;text-decoration:none;background-color:#222}.navbar .divider-vertical{width:1px;height:40px;margin:0 9px;overflow:hidden;background-color:#222;border-right:1px solid #333}.navbar .nav.pull-right{margin-right:0;margin-left:10px}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;background-color:#2c2c2c;*background-color:#222;background-image:-ms-linear-gradient(top,#333,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#333),to(#222));background-image:-webkit-linear-gradient(top,#333,#222);background-image:-o-linear-gradient(top,#333,#222);background-image:linear-gradient(top,#333,#222);background-image:-moz-linear-gradient(top,#333,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#333333',endColorstr='#222222',GradientType=0);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{background-color:#222;*background-color:#151515}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#080808 \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown .dropdown-toggle .caret,.navbar .nav li.dropdown.open .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.active .caret{opacity:1;filter:alpha(opacity=100)}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:transparent}.navbar .nav li.dropdown.active>.dropdown-toggle:hover{color:#fff}.navbar .pull-right .dropdown-menu,.navbar .dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right .dropdown-menu:before,.navbar .dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right .dropdown-menu:after,.navbar .dropdown-menu.pull-right:after{right:13px;left:auto}.breadcrumb{padding:7px 14px;margin:0 0 18px;list-style:none;background-color:#fbfbfb;background-image:-moz-linear-gradient(top,#fff,#f5f5f5);background-image:-ms-linear-gradient(top,#fff,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fff,#f5f5f5);background-image:-o-linear-gradient(top,#fff,#f5f5f5);background-image:linear-gradient(top,#fff,#f5f5f5);background-repeat:repeat-x;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#f5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.breadcrumb li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb .divider{padding:0 5px;color:#999}.breadcrumb .active a{color:#333}.pagination{height:36px;margin:18px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination li{display:inline}.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0}.pagination a:hover,.pagination .active a{background-color:#f5f5f5}.pagination .active a{color:#999;cursor:default}.pagination .disabled span,.pagination .disabled a,.pagination .disabled a:hover{color:#999;cursor:default;background-color:transparent}.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pager{margin-bottom:18px;margin-left:0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;content:""}.pager:after{clear:both}.pager li{display:inline}.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next a{float:right}.pager .previous a{float:left}.pager .disabled a,.pager .disabled a:hover{color:#999;cursor:default;background-color:#fff}.modal-open .dropdown-menu{z-index:2050}.modal-open .dropdown.open{*z-index:2050}.modal-open .popover{z-index:2060}.modal-open .tooltip{z-index:2070}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:50%;left:50%;z-index:1050;width:560px;margin:-250px 0 0 -280px;overflow:auto;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-ms-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:50%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-body{max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.tooltip{position:absolute;z-index:1020;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-2px}.tooltip.right{margin-left:2px}.tooltip.bottom{margin-top:2px}.tooltip.left{margin-left:-2px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px}.popover.top{margin-top:-5px}.popover.right{margin-left:5px}.popover.bottom{margin-top:5px}.popover.left{margin-left:-5px}.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-top:5px solid #000;border-right:5px solid transparent;border-left:5px solid transparent}.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-right:5px solid #000;border-bottom:5px solid transparent}.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-right:5px solid transparent;border-bottom:5px solid #000;border-left:5px solid transparent}.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000}.popover .arrow{position:absolute;width:0;height:0}.popover-inner{width:280px;padding:3px;overflow:hidden;background:#000;background:rgba(0,0,0,0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3)}.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.popover-content{padding:14px;background-color:#fff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:18px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075);box-shadow:0 1px 1px rgba(0,0,0,0.075)}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px}.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:18px;margin-bottom:18px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-ms-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(top,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5',endColorstr='#f9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{width:0;height:18px;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(top,#149bdf,#0480be);background-image:-ms-linear-gradient(top,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf',endColorstr='#0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-ms-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .bar{background-color:#149bdf;background-image:-o-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-image:-webkit-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-image:-moz-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-image:-ms-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-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35',GradientType=0)}.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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-image:-moz-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-image:-ms-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-image:-o-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-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)}.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#62c462',endColorstr='#57a957',GradientType=0)}.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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-image:-moz-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-image:-ms-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-image:-o-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-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)}.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-ms-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(top,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de',endColorstr='#339bb9',GradientType=0)}.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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-image:-moz-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-image:-ms-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-image:-o-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-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)}.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-ms-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(top,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0)}.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-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-image:-moz-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-image:-ms-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-image:-o-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-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)}.accordion{margin-bottom:18px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:18px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel .item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-ms-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel .item>img{display:block;line-height:1}.carousel .active,.carousel .next,.carousel .prev{display:block}.carousel .active{left:0}.carousel .next,.carousel .prev{position:absolute;top:0;width:100%}.carousel .next{left:100%}.carousel .prev{left:-100%}.carousel .next.left,.carousel .prev.right{left:0}.carousel .active.left{left:-100%}.carousel .active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:10px 15px 5px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{color:#fff}.hero-unit{padding:60px;margin-bottom:30px;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit p{font-size:18px;font-weight:200;line-height:27px;color:inherit}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden} diff --git a/docs/css/highlight.css b/docs/css/highlight.css new file mode 100644 index 00000000..cd3ead6f --- /dev/null +++ b/docs/css/highlight.css @@ -0,0 +1,28 @@ +/* Syntax highlighting ---------------------------------------------------- */ + +pre .input { + border-left: 3px solid #ccc; + padding-left: 0.5em; +} +pre .output { + background-color: #eee; +} + +.number {color:rgb(21,20,181);} +.functioncall {color:#264D66 ;} +.string {color:#375D81 ;} +.keyword {font-weight:bolder ;color:black;} +.argument {color:#264D66 ;} +.comment {color: #4C886B;} +.formalargs {color: #264D66;} +.eqformalargs {color:#264D66;} +.slot {font-style:italic;} +.symbol {color:black ;} +.prompt {color:black ;} + +pre img { + background-color: #fff; + border: 1px solid #ccc; + display: block; + margin: 0.5em auto 0.5em auto; +} diff --git a/docs/css/staticdocs.css b/docs/css/staticdocs.css new file mode 100644 index 00000000..15d74084 --- /dev/null +++ b/docs/css/staticdocs.css @@ -0,0 +1,25 @@ +h2 {padding-top: 20px} + +.icon img { + float: right; + border: 1px solid #ccc; +} +.index .internal {display: none;} +ul.index li {margin-bottom: 0.5em; clear: both;} + +footer { + margin-top: 45px; + padding: 35px 0 36px; + border-top: 1px solid #e5e5e5; +} +footer p { + margin-bottom: 0; + color: #555; +} + +.sidebar h2 { + font-size: 1.1em; + padding-top: 0.5em; +} + +.sidebar li {margin-bottom: 0.5em;} diff --git a/docs/endpoints.html b/docs/endpoints.html new file mode 100644 index 00000000..376eefa9 --- /dev/null +++ b/docs/endpoints.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>endpoints. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> +Function to calculate endpoints for further use from kinetic models fitted with mkinfit +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='endpoints.html'>endpoints</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>fit</dt> + <dd> + An object of class <code><a href='mkinfit.html'>mkinfit</a></code>. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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 constantes of the DFOP model, but +with the advantage that the SFORB model can also be used for metabolites.</p> + + </div> + + <div class="Note"> + <h2>Note</h2> + + <p>The function is used internally by <code><a href='summary.mkinfit.html'>summary.mkinfit</a></code>.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + A list with the components mentioned above. +</dl></p> + + </div> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>endpoints</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/geometric_mean.html b/docs/geometric_mean.html new file mode 100644 index 00000000..7b746fa3 --- /dev/null +++ b/docs/geometric_mean.html @@ -0,0 +1,114 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>geometric_mean. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> Calculate the geometric mean </h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='geometric_mean.html'>geometric_mean</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="argument">na.rm</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>x</dt> + <dd> A numeric vector </dd> + <dt>na.rm</dt> + <dd> Should NA values be ignored </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Function calculating the geometric mean of numeric vectors</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + The geometric mean. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="functioncall"><a href='geometric_mean.html'>geometric_mean</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">1</span><span class="keyword">,</span><span class="number">3</span><span class="keyword">,</span> <span class="number">9</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] 3 +</div> +<div class='input'> <span class="functioncall"><a href='geometric_mean.html'>geometric_mean</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">1</span><span class="keyword">,</span><span class="number">3</span><span class="keyword">,</span> <span class="number">NA</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] NA +</div> +<div class='input'> <span class="functioncall"><a href='geometric_mean.html'>geometric_mean</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">1</span><span class="keyword">,</span><span class="number">3</span><span class="keyword">,</span> <span class="number">NA</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">na.rm</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span></div> +<div class='output'>[1] 1.732051 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>geometric_mean</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/ilr.html b/docs/ilr.html new file mode 100644 index 00000000..c5fea9cb --- /dev/null +++ b/docs/ilr.html @@ -0,0 +1,168 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>ilr. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + René Lehmann and Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Function to perform isometric log-ratio transformation +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='ilr.html'>ilr</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">)</span> + <span class="functioncall"><a href='ilr.html'>invilr</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>x</dt> + <dd> + A numeric vector. Naturally, the forward transformation is only sensible for + vectors with all elements being greater than zero. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>This implementation is a special case of the class of isometric log-ratio transformations.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + The result of the forward or backward transformation. The returned components always + sum to 1 for the case of the inverse log-ratio transformation. +</dl></p> + + </div> + + <div class="References"> + <h2>References</h2> + + <p>Peter Filzmoser, Karel Hron (2008) Outlier Detection for Compositional Data Using Robust Methods. Math Geosci 40 233-248</p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="comment"># Order matters</span> +<span class="functioncall"><a href='ilr.html'>ilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0.1</span><span class="keyword">,</span> <span class="number">1</span><span class="keyword">,</span> <span class="number">10</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] -1.628174 -2.820079 +</div> +<div class='input'><span class="functioncall"><a href='ilr.html'>ilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">10</span><span class="keyword">,</span> <span class="number">1</span><span class="keyword">,</span> <span class="number">0.1</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] 1.628174 2.820079 +</div> +<div class='input'><span class="comment"># Equal entries give ilr transformations with zeros as elements</span> +<span class="functioncall"><a href='ilr.html'>ilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">3</span><span class="keyword">,</span> <span class="number">3</span><span class="keyword">,</span> <span class="number">3</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] 0 0 +</div> +<div class='input'><span class="comment"># Almost equal entries give small numbers</span> +<span class="functioncall"><a href='ilr.html'>ilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0.3</span><span class="keyword">,</span> <span class="number">0.4</span><span class="keyword">,</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] -0.2034219 0.1174457 +</div> +<div class='input'><span class="comment"># Only the ratio between the numbers counts, not their sum</span> +<span class="functioncall"><a href='ilr.html'>invilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='ilr.html'>ilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0.7</span><span class="keyword">,</span> <span class="number">0.29</span><span class="keyword">,</span> <span class="number">0.01</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] 0.70 0.29 0.01 +</div> +<div class='input'><span class="functioncall"><a href='ilr.html'>invilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='ilr.html'>ilr</a></span><span class="keyword">(</span><span class="number">2.1</span> <span class="keyword">*</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0.7</span><span class="keyword">,</span> <span class="number">0.29</span><span class="keyword">,</span> <span class="number">0.01</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] 0.70 0.29 0.01 +</div> +<div class='input'><span class="comment"># Inverse transformation of larger numbers gives unequal elements</span> +<span class="functioncall"><a href='ilr.html'>invilr</a></span><span class="keyword">(</span><span class="keyword">-</span><span class="number">10</span><span class="keyword">)</span></div> +<div class='output'>[1] 7.213536e-07 9.999993e-01 +</div> +<div class='input'><span class="functioncall"><a href='ilr.html'>invilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="keyword">-</span><span class="number">10</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] 7.207415e-07 9.991507e-01 8.486044e-04 +</div> +<div class='input'><span class="comment"># The sum of the elements of the inverse ilr is 1</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/sum'>sum</a></span><span class="keyword">(</span><span class="functioncall"><a href='ilr.html'>invilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="keyword">-</span><span class="number">10</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>[1] 1 +</div> +<div class='input'><span class="comment"># This is why we do not need all elements of the inverse transformation to go back:</span> +<span class="symbol">a</span> <span class="assignement"><-</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0.1</span><span class="keyword">,</span> <span class="number">0.3</span><span class="keyword">,</span> <span class="number">0.5</span><span class="keyword">)</span> +<span class="symbol">b</span> <span class="assignement"><-</span> <span class="functioncall"><a href='ilr.html'>invilr</a></span><span class="keyword">(</span><span class="symbol">a</span><span class="keyword">)</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/length'>length</a></span><span class="keyword">(</span><span class="symbol">b</span><span class="keyword">)</span> <span class="comment"># Four elements</span></div> +<div class='output'>[1] 4 +</div> +<div class='input'><span class="functioncall"><a href='ilr.html'>ilr</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="symbol">b</span><span class="keyword">[</span><span class="number">1</span><span class="keyword">:</span><span class="number">3</span><span class="keyword">]</span><span class="keyword">,</span> <span class="number">1</span> <span class="keyword">-</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/sum'>sum</a></span><span class="keyword">(</span><span class="symbol">b</span><span class="keyword">[</span><span class="number">1</span><span class="keyword">:</span><span class="number">3</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">)</span> <span class="comment"># Gives c(0.1, 0.3, 0.5)</span></div> +<div class='output'>[1] 0.1 0.3 0.5 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>ilr</li><li>invilr</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + <h2>See also</h2> + <p>Another implementation can be found in R package <code>robCompositions</code>.</p> + + + + <h2>Author</h2> + + René Lehmann and Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/img/glyphicons-halflings-white.png b/docs/img/glyphicons-halflings-white.png Binary files differnew file mode 100644 index 00000000..3bf6484a --- /dev/null +++ b/docs/img/glyphicons-halflings-white.png diff --git a/docs/img/glyphicons-halflings.png b/docs/img/glyphicons-halflings.png Binary files differnew file mode 100644 index 00000000..79bc568c --- /dev/null +++ b/docs/img/glyphicons-halflings.png diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..0f351a2d --- /dev/null +++ b/docs/index.html @@ -0,0 +1,244 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>Home. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <div class="row"> + <div class="span8"> + <h1>mkin</h1> + +<p><a href="http://cran.r-project.org/package=mkin"><img src="http://www.r-pkg.org/badges/version/mkin" alt=""/></a></p> + +<p>The R 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 compartments are involved.</p> + +<h2>Installation</h2> + +<p>You can install the latest released version from +<a href="http://cran.r-project.org/package=mkin">CRAN</a> from within R:</p> + +<pre><code class="r">install.packages("mkin") +</code></pre> + +<h2>Background</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 helpful tools have been developed as detailed in +'Credits and historical remarks' below.</p> + +<h2>Usage</h2> + +<p>For a start, have a look a the code examples provided for +<a href="http://kinfit.r-forge.r-project.org/mkin_static/plot.mkinfit.html"><code>plot.mkinfit</code></a> +and +<a href="http://kinfit.r-forge.r-project.org/mkin_static/plot.mmkin.html"><code>plot.mmkin</code></a>, and +at the package vignettes +<a href="http://kinfit.r-forge.r-project.org/mkin_static/vignettes/FOCUS_L.html"><code>FOCUS L</code></a> and +<a href="http://kinfit.r-forge.r-project.org/mkin_static/vignettes/FOCUS_D.html"><code>FOCUS D</code></a>.</p> + +<h2>Documentation</h2> + +<p>The <a href="http://kinfit.r-forge.r-project.org/mkin_static">HTML documentation</a> is +maintained at the R-Forge project site.</p> + +<h2>Features</h2> + +<ul> +<li>Highly flexible model specification using +<a href="http://kinfit.r-forge.r-project.org/mkin_static/mkinmod.html"><code>mkinmod</code></a>, +including equilibrium reactions and using the single first-order +reversible binding (SFORB) model, which will automatically create +two latent state variables for the observed variable.</li> +<li>As of version 0.9-39, fitting of several models to several datasets, optionally in +parallel, is supported, see for example +<a href="http://kinfit.r-forge.r-project.org/mkin_static/plot.mmkin.html"><code>plot.mmkin</code></a>.</li> +<li>Model solution (forward modelling) in the function +<a href="http://kinfit.r-forge.r-project.org/mkin_static/mkinpredict.html"><code>mkinpredict</code></a> +is performed either using the analytical solution for the case of +parent only degradation, 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>If a C compiler is installed, the kinetic models are compiled from automatically +generated C code, see<br/> +<a href="http://kinfit.r-forge.r-project.org/mkin_static/vignettes/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"><code>ccSolve</code></a> package. Thanks +to Karline Soetaert for her work on that.</li> +<li>By default, kinetic rate constants and kinetic formation fractions are +transformed internally using +<a href="http://kinfit.r-forge.r-project.org/mkin_static/transform_odeparms.html"><code>transform_odeparms</code></a> +so their estimators can more reasonably be expected to follow +a normal distribution. This has the side effect that no constraints +are needed in the optimisation. Thanks to René Lehmann for the nice +cooperation on this, especially the isometric logration transformation +that is now used for the formation fractions.</li> +<li>A side effect of this is that 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 can not occur in +a single experiment with a single defined radiolabel position.</li> +<li>The usual one-sided t-test for significant difference from zero is nevertheless +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>Iteratively reweighted least squares fitting is implemented in a similar way +as in KinGUII and CAKE (see below). Simply add the argument +<code>reweight = "obs"</code> to your call to <code>mkinfit</code> and a separate variance +componenent for each of the observed variables will be optimised +in a second stage after the primary optimisation algorithm has converged.</li> +<li>When a metabolite decline phase is not described well by SFO kinetics, +SFORB kinetics can be used for the metabolite.</li> +</ul> + +<h2>GUI</h2> + +<p>There is a graphical user interface that I consider useful for real work. Please +refer to its <a href="http://kinfit.r-forge.r-project.org/gmkin_static">documentation page</a> +for installation instructions and a manual.</p> + +<h2>News</h2> + +<p>Yes, there is a ChangeLog, for the latest <a href="http://cran.r-project.org/web/packages/mkin/news.html">CRAN release</a> +and one for the <a href="https://github.com/jranke/mkin/blob/master/NEWS.md">github master branch</a>.</p> + +<h2>Credits and historical remarks</h2> + +<p><code>mkin</code> would not be possible without the underlying software stack consisting +of R and the packages <a href="http://cran.r-project.org/package=deSolve">deSolve</a> +and <a href="http://cran.r-project.org/package=FME">FME</a>, to say the least.</p> + +<p>It 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://focus.jrc.ec.europa.eu/dk">FOCUS Degradation Kinetics Workgroup</a>, +as detailed in their guidance document from 2006, slightly updated in 2011 and +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">kinfit</a> (now deprecated) was +<a href="https://r-forge.r-project.org/scm/viewvc.php?view=rev&root=kinfit&revision=2">started in 2008</a> and +<a href="http://cran.r-project.org/src/contrib/Archive/kinfit/">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">published on 11 May 2010</a> and the +<a href="http://cran.r-project.org/src/contrib/Archive/mkin">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, amongst 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="http://projects.tessella.com/cake">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="http://github.com/zhenglei-gao/KineticEval">KineticEval</a>, which contains +a further development of the scripts used for KinGUII, so the different tools +will hopefully be able to learn from each other in the future as well.</p> + +<h2>Development</h2> + +<p>Contributions are welcome! Your +<a href="https://help.github.com/articles/fork-a-repo">mkin fork</a> is just a mouse click +away… The master branch on github should always be in good shape, I implement +new features in separate branches now. If you prefer subversion, project +members for the +<a href="http://r-forge.r-project.org/R/?group_id=615">r-forge project</a> are welcome as well. +Generally, the source code of the latest CRAN version should be available there. +You can also browse the source code at <a href="http://cgit.jrwb.de/mkin">cgit.jrwb.de/mkin</a>.</p> + + </div> + + <div class="span3 offset1 sidebar"> + <h2>Vignettes</h2> + <ul> + <li><a href="vignettes/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a></li> + <li><a href="vignettes/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a></li> + <li><a href="vignettes/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a></li> + <li><a href="vignettes/mkin.html">mkin - Kinetic evaluation of chemical degradation data</a></li> + <li><a href="vignettes/FOCUS_Z.pdf">Example evaluation of FOCUS dataset Z</a></li> + </ul> + <h2>Authors</h2> + <ul> + <li><a href='mailto:jranke@uni-bremen.de'>Johannes Ranke</a> [aut, cre, cph]</li> + <li>Katrin Lindenberger [ctb]</li> + <li>René Lehmann [ctb]</li> + <li>Eurofins Regulatory AG [cph]</li> + </ul> + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/js/bootstrap.js b/docs/js/bootstrap.js new file mode 100644 index 00000000..5d6e65b8 --- /dev/null +++ b/docs/js/bootstrap.js @@ -0,0 +1,1825 @@ +/* =================================================== + * bootstrap-transition.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + $(function () { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd' + , 'msTransition' : 'MSTransitionEnd' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT DATA-API + * ============== */ + + $(function () { + $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.parent('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON DATA-API + * =============== */ + + $(function () { + $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.options = options + this.options.slide && this.slide(this.options.slide) + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , to: function (pos) { + var $active = this.$element.find('.active') + , children = $active.parent().children() + , activePos = children.index($active) + , that = this + + if (pos > (children.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activePos == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e = $.Event('slide') + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + if ($next.hasClass('active')) return + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (typeof option == 'string' || (option = options.slide)) data[option]() + else if (options.interval) data.cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL DATA-API + * ================= */ + + $(function () { + $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data()) + $target.carousel(options) + e.preventDefault() + }) + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSIBLE PLUGIN DEFINITION + * ============================== */ + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = typeof option == 'object' && option + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSIBLE DATA-API + * ==================== */ + + $(function () { + $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $(target).collapse(option) + }) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle="dropdown"]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , selector + , isActive + + if ($this.is('.disabled, :disabled')) return + + selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) $parent.toggleClass('open') + + return false + } + + } + + function clearMenus() { + $(toggle).parent().removeClass('open') + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(function () { + $('html').on('click.dropdown.data-api', clearMenus) + $('body') + .on('click.dropdown', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) + }) + +}(window.jQuery);/* ========================================================= + * bootstrap-modal.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (content, options) { + this.options = options + this.$element = $(content) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + $('body').addClass('modal-open') + + this.isShown = true + + escape.call(this) + backdrop.call(this, function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) : + that.$element.trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + $('body').removeClass('modal-open') + + escape.call(this) + + this.$element.removeClass('in') + + $.support.transition && this.$element.hasClass('fade') ? + hideWithTransition.call(this) : + hideModal.call(this) + } + + } + + + /* MODAL PRIVATE METHODS + * ===================== */ + + function hideWithTransition() { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + hideModal.call(that) + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + hideModal.call(that) + }) + } + + function hideModal(that) { + this.$element + .hide() + .trigger('hidden') + + backdrop.call(this) + } + + function backdrop(callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') + .appendTo(document.body) + + if (this.options.backdrop != 'static') { + this.$backdrop.click($.proxy(this.hide, this)) + } + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + doAnimate ? + this.$backdrop.one($.support.transition.end, callback) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + $.support.transition && this.$element.hasClass('fade')? + this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) : + removeBackdrop.call(this) + + } else if (callback) { + callback() + } + } + + function removeBackdrop() { + this.$backdrop.remove() + this.$backdrop = null + } + + function escape() { + var that = this + if (this.isShown && this.options.keyboard) { + $(document).on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + $(document).off('keyup.dismiss.modal') + } + } + + + /* MODAL PLUGIN DEFINITION + * ======================= */ + + $.fn.modal = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('modal') + , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option]() + else if (options.show) data.show() + }) + } + + $.fn.modal.defaults = { + backdrop: true + , keyboard: true + , show: true + } + + $.fn.modal.Constructor = Modal + + + /* MODAL DATA-API + * ============== */ + + $(function () { + $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data()) + + e.preventDefault() + $target.modal(option) + }) + }) + +}(window.jQuery);/* =========================================================== + * bootstrap-tooltip.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#tooltips + * Inspired by the original jQuery.tipsy by Jason Frame + * =========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* TOOLTIP PUBLIC CLASS DEFINITION + * =============================== */ + + var Tooltip = function (element, options) { + this.init('tooltip', element, options) + } + + Tooltip.prototype = { + + constructor: Tooltip + + , init: function (type, element, options) { + var eventIn + , eventOut + + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.enabled = true + + if (this.options.trigger != 'manual') { + eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus' + eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur' + this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this)) + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + , getOptions: function (options) { + options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data()) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay + , hide: options.delay + } + } + + return options + } + + , enter: function (e) { + var self = $(e.currentTarget)[this.type](this._options).data(this.type) + + if (!self.options.delay || !self.options.delay.show) return self.show() + + clearTimeout(this.timeout) + self.hoverState = 'in' + this.timeout = setTimeout(function() { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + , leave: function (e) { + var self = $(e.currentTarget)[this.type](this._options).data(this.type) + + if (this.timeout) clearTimeout(this.timeout) + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.hoverState = 'out' + this.timeout = setTimeout(function() { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + , show: function () { + var $tip + , inside + , pos + , actualWidth + , actualHeight + , placement + , tp + + if (this.hasContent() && this.enabled) { + $tip = this.tip() + this.setContent() + + if (this.options.animation) { + $tip.addClass('fade') + } + + placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + inside = /in/.test(placement) + + $tip + .remove() + .css({ top: 0, left: 0, display: 'block' }) + .appendTo(inside ? this.$element : document.body) + + pos = this.getPosition(inside) + + actualWidth = $tip[0].offsetWidth + actualHeight = $tip[0].offsetHeight + + switch (inside ? placement.split(' ')[1] : placement) { + case 'bottom': + tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} + break + case 'top': + tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} + break + case 'left': + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} + break + case 'right': + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} + break + } + + $tip + .css(tp) + .addClass(placement) + .addClass('in') + } + } + + , isHTML: function(text) { + // html string detection logic adapted from jQuery + return typeof text != 'string' + || ( text.charAt(0) === "<" + && text.charAt( text.length - 1 ) === ">" + && text.length >= 3 + ) || /^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(text) + } + + , setContent: function () { + var $tip = this.tip() + , title = this.getTitle() + + $tip.find('.tooltip-inner')[this.isHTML(title) ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + , hide: function () { + var that = this + , $tip = this.tip() + + $tip.removeClass('in') + + function removeWithAnimation() { + var timeout = setTimeout(function () { + $tip.off($.support.transition.end).remove() + }, 500) + + $tip.one($.support.transition.end, function () { + clearTimeout(timeout) + $tip.remove() + }) + } + + $.support.transition && this.$tip.hasClass('fade') ? + removeWithAnimation() : + $tip.remove() + } + + , fixTitle: function () { + var $e = this.$element + if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title') + } + } + + , hasContent: function () { + return this.getTitle() + } + + , getPosition: function (inside) { + return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), { + width: this.$element[0].offsetWidth + , height: this.$element[0].offsetHeight + }) + } + + , getTitle: function () { + var title + , $e = this.$element + , o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + , tip: function () { + return this.$tip = this.$tip || $(this.options.template) + } + + , validate: function () { + if (!this.$element[0].parentNode) { + this.hide() + this.$element = null + this.options = null + } + } + + , enable: function () { + this.enabled = true + } + + , disable: function () { + this.enabled = false + } + + , toggleEnabled: function () { + this.enabled = !this.enabled + } + + , toggle: function () { + this[this.tip().hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* TOOLTIP PLUGIN DEFINITION + * ========================= */ + + $.fn.tooltip = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('tooltip') + , options = typeof option == 'object' && option + if (!data) $this.data('tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tooltip.Constructor = Tooltip + + $.fn.tooltip.defaults = { + animation: true + , placement: 'top' + , selector: false + , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' + , trigger: 'hover' + , title: '' + , delay: 0 + } + +}(window.jQuery); +/* =========================================================== + * bootstrap-popover.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#popovers + * =========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* POPOVER PUBLIC CLASS DEFINITION + * =============================== */ + + var Popover = function ( element, options ) { + this.init('popover', element, options) + } + + + /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js + ========================================== */ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, { + + constructor: Popover + + , setContent: function () { + var $tip = this.tip() + , title = this.getTitle() + , content = this.getContent() + + $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title) + $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content) + + $tip.removeClass('fade top bottom left right in') + } + + , hasContent: function () { + return this.getTitle() || this.getContent() + } + + , getContent: function () { + var content + , $e = this.$element + , o = this.options + + content = $e.attr('data-content') + || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) + + return content + } + + , tip: function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + } + return this.$tip + } + + }) + + + /* POPOVER PLUGIN DEFINITION + * ======================= */ + + $.fn.popover = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('popover') + , options = typeof option == 'object' && option + if (!data) $this.data('popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.popover.Constructor = Popover + + $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, { + placement: 'right' + , content: '' + , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>' + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-scrollspy.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#scrollspy + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* SCROLLSPY CLASS DEFINITION + * ========================== */ + + function ScrollSpy( element, options) { + var process = $.proxy(this.process, this) + , $element = $(element).is('body') ? $(window) : $(element) + , href + this.options = $.extend({}, $.fn.scrollspy.defaults, options) + this.$scrollElement = $element.on('scroll.scroll.data-api', process) + this.selector = (this.options.target + || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + || '') + ' .nav li > a' + this.$body = $('body') + this.refresh() + this.process() + } + + ScrollSpy.prototype = { + + constructor: ScrollSpy + + , refresh: function () { + var self = this + , $targets + + this.offsets = $([]) + this.targets = $([]) + + $targets = this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + , href = $el.data('target') || $el.attr('href') + , $href = /^#\w/.test(href) && $(href) + return ( $href + && href.length + && [[ $href.position().top, href ]] ) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + self.offsets.push(this[0]) + self.targets.push(this[1]) + }) + } + + , process: function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight + , maxScroll = scrollHeight - this.$scrollElement.height() + , offsets = this.offsets + , targets = this.targets + , activeTarget = this.activeTarget + , i + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets.last()[0]) + && this.activate ( i ) + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activate( targets[i] ) + } + } + + , activate: function (target) { + var active + , selector + + this.activeTarget = target + + $(this.selector) + .parent('.active') + .removeClass('active') + + selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + active = $(selector) + .parent('li') + .addClass('active') + + if (active.parent('.dropdown-menu')) { + active = active.closest('li.dropdown').addClass('active') + } + + active.trigger('activate') + } + + } + + + /* SCROLLSPY PLUGIN DEFINITION + * =========================== */ + + $.fn.scrollspy = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('scrollspy') + , options = typeof option == 'object' && option + if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.scrollspy.Constructor = ScrollSpy + + $.fn.scrollspy.defaults = { + offset: 10 + } + + + /* SCROLLSPY DATA-API + * ================== */ + + $(function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + $spy.scrollspy($spy.data()) + }) + }) + +}(window.jQuery);/* ======================================================== + * bootstrap-tab.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#tabs + * ======================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* TAB CLASS DEFINITION + * ==================== */ + + var Tab = function ( element ) { + this.element = $(element) + } + + Tab.prototype = { + + constructor: Tab + + , show: function () { + var $this = this.element + , $ul = $this.closest('ul:not(.dropdown-menu)') + , selector = $this.attr('data-target') + , previous + , $target + , e + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + if ( $this.parent('li').hasClass('active') ) return + + previous = $ul.find('.active a').last()[0] + + e = $.Event('show', { + relatedTarget: previous + }) + + $this.trigger(e) + + if (e.isDefaultPrevented()) return + + $target = $(selector) + + this.activate($this.parent('li'), $ul) + this.activate($target, $target.parent(), function () { + $this.trigger({ + type: 'shown' + , relatedTarget: previous + }) + }) + } + + , activate: function ( element, container, callback) { + var $active = container.find('> .active') + , transition = callback + && $.support.transition + && $active.hasClass('fade') + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + + element.addClass('active') + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if ( element.parent('.dropdown-menu') ) { + element.closest('li.dropdown').addClass('active') + } + + callback && callback() + } + + transition ? + $active.one($.support.transition.end, next) : + next() + + $active.removeClass('in') + } + } + + + /* TAB PLUGIN DEFINITION + * ===================== */ + + $.fn.tab = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('tab') + if (!data) $this.data('tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tab.Constructor = Tab + + + /* TAB DATA-API + * ============ */ + + $(function () { + $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { + e.preventDefault() + $(this).tab('show') + }) + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-typeahead.js v2.0.4 + * http://twitter.github.com/bootstrap/javascript.html#typeahead + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function($){ + + "use strict"; // jshint ;_; + + + /* TYPEAHEAD PUBLIC CLASS DEFINITION + * ================================= */ + + var Typeahead = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.typeahead.defaults, options) + this.matcher = this.options.matcher || this.matcher + this.sorter = this.options.sorter || this.sorter + this.highlighter = this.options.highlighter || this.highlighter + this.updater = this.options.updater || this.updater + this.$menu = $(this.options.menu).appendTo('body') + this.source = this.options.source + this.shown = false + this.listen() + } + + Typeahead.prototype = { + + constructor: Typeahead + + , select: function () { + var val = this.$menu.find('.active').attr('data-value') + this.$element + .val(this.updater(val)) + .change() + return this.hide() + } + + , updater: function (item) { + return item + } + + , show: function () { + var pos = $.extend({}, this.$element.offset(), { + height: this.$element[0].offsetHeight + }) + + this.$menu.css({ + top: pos.top + pos.height + , left: pos.left + }) + + this.$menu.show() + this.shown = true + return this + } + + , hide: function () { + this.$menu.hide() + this.shown = false + return this + } + + , lookup: function (event) { + var that = this + , items + , q + + this.query = this.$element.val() + + if (!this.query) { + return this.shown ? this.hide() : this + } + + items = $.grep(this.source, function (item) { + return that.matcher(item) + }) + + items = this.sorter(items) + + if (!items.length) { + return this.shown ? this.hide() : this + } + + return this.render(items.slice(0, this.options.items)).show() + } + + , matcher: function (item) { + return ~item.toLowerCase().indexOf(this.query.toLowerCase()) + } + + , sorter: function (items) { + var beginswith = [] + , caseSensitive = [] + , caseInsensitive = [] + , item + + while (item = items.shift()) { + if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item) + else if (~item.indexOf(this.query)) caseSensitive.push(item) + else caseInsensitive.push(item) + } + + return beginswith.concat(caseSensitive, caseInsensitive) + } + + , highlighter: function (item) { + var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&') + return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { + return '<strong>' + match + '</strong>' + }) + } + + , render: function (items) { + var that = this + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item) + i.find('a').html(that.highlighter(item)) + return i[0] + }) + + items.first().addClass('active') + this.$menu.html(items) + return this + } + + , next: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , next = active.next() + + if (!next.length) { + next = $(this.$menu.find('li')[0]) + } + + next.addClass('active') + } + + , prev: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , prev = active.prev() + + if (!prev.length) { + prev = this.$menu.find('li').last() + } + + prev.addClass('active') + } + + , listen: function () { + this.$element + .on('blur', $.proxy(this.blur, this)) + .on('keypress', $.proxy(this.keypress, this)) + .on('keyup', $.proxy(this.keyup, this)) + + if ($.browser.webkit || $.browser.msie) { + this.$element.on('keydown', $.proxy(this.keypress, this)) + } + + this.$menu + .on('click', $.proxy(this.click, this)) + .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) + } + + , keyup: function (e) { + switch(e.keyCode) { + case 40: // down arrow + case 38: // up arrow + break + + case 9: // tab + case 13: // enter + if (!this.shown) return + this.select() + break + + case 27: // escape + if (!this.shown) return + this.hide() + break + + default: + this.lookup() + } + + e.stopPropagation() + e.preventDefault() + } + + , keypress: function (e) { + if (!this.shown) return + + switch(e.keyCode) { + case 9: // tab + case 13: // enter + case 27: // escape + e.preventDefault() + break + + case 38: // up arrow + if (e.type != 'keydown') break + e.preventDefault() + this.prev() + break + + case 40: // down arrow + if (e.type != 'keydown') break + e.preventDefault() + this.next() + break + } + + e.stopPropagation() + } + + , blur: function (e) { + var that = this + setTimeout(function () { that.hide() }, 150) + } + + , click: function (e) { + e.stopPropagation() + e.preventDefault() + this.select() + } + + , mouseenter: function (e) { + this.$menu.find('.active').removeClass('active') + $(e.currentTarget).addClass('active') + } + + } + + + /* TYPEAHEAD PLUGIN DEFINITION + * =========================== */ + + $.fn.typeahead = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('typeahead') + , options = typeof option == 'object' && option + if (!data) $this.data('typeahead', (data = new Typeahead(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.typeahead.defaults = { + source: [] + , items: 8 + , menu: '<ul class="typeahead dropdown-menu"></ul>' + , item: '<li><a href="#"></a></li>' + } + + $.fn.typeahead.Constructor = Typeahead + + + /* TYPEAHEAD DATA-API + * ================== */ + + $(function () { + $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { + var $this = $(this) + if ($this.data('typeahead')) return + e.preventDefault() + $this.typeahead($this.data()) + }) + }) + +}(window.jQuery);
\ No newline at end of file diff --git a/docs/js/bootstrap.min.js b/docs/js/bootstrap.min.js new file mode 100644 index 00000000..14356981 --- /dev/null +++ b/docs/js/bootstrap.min.js @@ -0,0 +1,6 @@ +/*! +* Bootstrap.js by @fat & @mdo +* Copyright 2012 Twitter, Inc. +* http://www.apache.org/licenses/LICENSE-2.0.txt +*/ +!function(a){a(function(){"use strict",a.support.transition=function(){var a=function(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd",transition:"transitionend"},c;for(c in b)if(a.style[c]!==undefined)return b[c]}();return a&&{end:a}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger(b=a.Event("close"));if(b.isDefaultPrevented())return;e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=c,this.options.slide&&this.slide(this.options.slide),this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(b){return b||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(a){return a||(this.paused=!0),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this,j=a.Event("slide");this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h]();if(e.hasClass("active"))return;if(a.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(j);if(j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})}else{this.$element.trigger(j);if(j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=a.extend({},a.fn.carousel.defaults,typeof c=="object"&&c);e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():f.interval&&e.cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b,c,d,e;if(this.transitioning)return;b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find("> .accordion-group > .in");if(d&&d.length){e=d.data("collapse");if(e&&e.transitioning)return;d.collapse("hide"),e||d.data("collapse",null)}this.$element[b](0),this.transition("addClass",a.Event("show"),"shown"),this.$element[b](this.$element[0][c])},hide:function(){var b;if(this.transitioning)return;b=this.dimension(),this.reset(this.$element[b]()),this.transition("removeClass",a.Event("hide"),"hidden"),this.$element[b](0)},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[a!==null?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){c.type=="show"&&e.reset(),e.transitioning=0,e.$element.trigger(d)};this.$element.trigger(c);if(c.isDefaultPrevented())return;this.transitioning=1,this.$element[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e,f,g;if(c.is(".disabled, :disabled"))return;return f=c.attr("data-target"),f||(f=c.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,"")),e=a(f),e.length||(e=c.parent()),g=e.hasClass("open"),d(),g||e.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown",".dropdown form",function(a){a.stopPropagation()}).on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this,c=a.Event("show");this.$element.trigger(c);if(this.isShown||c.isDefaultPrevented())return;a("body").addClass("modal-open"),this.isShown=!0,g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");b.$element.parent().length||b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();var e=this;b=a.Event("hide"),this.$element.trigger(b);if(!this.isShown||b.isDefaultPrevented())return;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);if(!c.options.delay||!c.options.delay.show)return c.show();clearTimeout(this.timeout),c.hoverState="in",this.timeout=setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show)},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!c.options.delay||!c.options.delay.hide)return c.hide();c.hoverState="out",this.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},isHTML:function(a){return typeof a!="string"||a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3||/^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(a)},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.isHTML(b)?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover",title:"",delay:0}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.isHTML(b)?"html":"text"](b),a.find(".popover-content > *")[this.isHTML(c)?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body"),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){var b=this,c;this.offsets=a([]),this.targets=a([]),c=this.$body.find(this.selector).map(function(){var b=a(this),c=b.data("target")||b.attr("href"),d=/^#\w/.test(c)&&a(c);return d&&c.length&&[[d.position().top,c]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,c=b-this.$scrollElement.height(),d=this.offsets,e=this.targets,f=this.activeTarget,g;if(a>=c)return f!=(g=e.last()[0])&&this.activate(g);for(g=d.length;g--;)f!=e[g]&&a>=d[g]&&(!d[g+1]||a<=d[g+1])&&this.activate(e[g])},activate:function(b){var c,d;this.activeTarget=b,a(this.selector).parent(".active").removeClass("active"),d=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',c=a(d).parent("li").addClass("active"),c.parent(".dropdown-menu")&&(c=c.closest("li.dropdown").addClass("active")),c.trigger("activate")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f,g;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],g=a.Event("show",{relatedTarget:e}),b.trigger(g);if(g.isDefaultPrevented())return;f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(a)).change(),this.hide()},updater:function(a){return a},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){return c.matcher(a)}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){var b=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return a.replace(new RegExp("("+b+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},keypress:function(a){if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:if(a.type!="keydown")break;a.preventDefault(),this.prev();break;case 40:if(a.type!="keydown")break;a.preventDefault(),this.next()}a.stopPropagation()},blur:function(a){var b=this;setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);
\ No newline at end of file diff --git a/docs/mccall81_245T.html b/docs/mccall81_245T.html new file mode 100644 index 00000000..426a35c4 --- /dev/null +++ b/docs/mccall81_245T.html @@ -0,0 +1,232 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mccall81_245T. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Datasets on aerobic soil metabolism of 2,4,5-T in six soils +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="symbol">mccall81_245T</span></pre> + + <div class="Description"> + <h2>Description</h2> + + <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="Format"> + <h2>Format</h2> + + <p>A dataframe containing the following variables. + <dl> + <dt><code>name</code></dt><dd>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>.</dd></p> + + <p><dt><code>time</code></dt><dd>a numeric vector containing sampling times in days after + treatment</dd></p> + + <p><dt><code>value</code></dt><dd>a numeric vector containing concentrations in percent of applied radioactivity</dd></p> + + <p><dt><code>soil</code></dt><dd>a factor containing the name of the soil</dd></p> + + <p></dl></p> + + <p></p> + + </div> + + <div class="Source"> + <h2>Source</h2> + + <p>McCall P, Vrona SA, Kelley SS (1981) Fate of uniformly carbon-14 ring labeled 2,4,5-Trichlorophenoxyacetic acid and 2,4-dichlorophenoxyacetic acid. J Agric Chem 29, 100-107 + <a href = 'http://dx.doi.org/10.1021/jf00103a026'>http://dx.doi.org/10.1021/jf00103a026</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="symbol">SFO_SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">T245</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="string">"phenol"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">phenol</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="string">"anisole"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">anisole</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'> <span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># fit.1 <- mkinfit(SFO_SFO_SFO, subset(mccall81_245T, soil == "Commerce"))</span> +<span class="comment"># summary(fit.1, data = FALSE)</span> +<span class="comment"># </span> +<span class="comment">## ---------------------------------------------</span> + <span class="comment"># No covariance matrix and k_phenol_sink is really small, therefore fix it to zero</span> + <span class="symbol">fit.2</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO_SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/subset'>subset</a></span><span class="keyword">(</span><span class="symbol">mccall81_245T</span><span class="keyword">,</span> <span class="symbol">soil</span> == <span class="string">"Commerce"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">parms.ini</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_phenol_sink</span> <span class="argument">=</span> <span class="number">0</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">fixed_parms</span> <span class="argument">=</span> <span class="string">"k_phenol_sink"</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/summary'>summary</a></span><span class="keyword">(</span><span class="symbol">fit.2</span><span class="keyword">,</span> <span class="argument">data</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">)</span></div> +<div class='output'>mkin version: 0.9.44.9000 +R version: 3.3.1 +Date of fit: Sat Sep 10 05:53:00 2016 +Date of summary: Sat Sep 10 05:53:00 2016 + +Equations: +d_T245 = - k_T245_sink * T245 - k_T245_phenol * T245 +d_phenol = + k_T245_phenol * T245 - k_phenol_sink * phenol - + k_phenol_anisole * phenol +d_anisole = + k_phenol_anisole * phenol - k_anisole_sink * anisole + +Model predictions using solution type deSolve + +Fitted with method Port using 246 model solutions performed in 1.45 s + +Weighting: none + +Starting values for parameters to be optimised: + value type +T245_0 100.9000 state +k_T245_sink 0.1000 deparm +k_T245_phenol 0.1001 deparm +k_phenol_anisole 0.1002 deparm +k_anisole_sink 0.1003 deparm + +Starting values for the transformed parameters actually optimised: + value lower upper +T245_0 100.900000 -Inf Inf +log_k_T245_sink -2.302585 -Inf Inf +log_k_T245_phenol -2.301586 -Inf Inf +log_k_phenol_anisole -2.300587 -Inf Inf +log_k_anisole_sink -2.299590 -Inf Inf + +Fixed parameter values: + value type +phenol_0 0 state +anisole_0 0 state +k_phenol_sink 0 deparm + +Optimised, transformed parameters with symmetric confidence intervals: + Estimate Std. Error Lower Upper +T245_0 103.9000 2.35200 98.930 108.8000 +log_k_T245_sink -4.1130 0.13250 -4.390 -3.8350 +log_k_T245_phenol -3.6120 0.05002 -3.716 -3.5070 +log_k_phenol_anisole -0.9037 0.30580 -1.544 -0.2637 +log_k_anisole_sink -5.0090 0.11180 -5.243 -4.7750 + +Parameter correlation: + T245_0 log_k_T245_sink log_k_T245_phenol +T245_0 1.00000 0.63761 -0.1742 +log_k_T245_sink 0.63761 1.00000 -0.3831 +log_k_T245_phenol -0.17416 -0.38313 1.0000 +log_k_phenol_anisole -0.05948 0.08745 -0.3047 +log_k_anisole_sink -0.16208 -0.60469 0.5227 + log_k_phenol_anisole log_k_anisole_sink +T245_0 -0.05948 -0.1621 +log_k_T245_sink 0.08745 -0.6047 +log_k_T245_phenol -0.30470 0.5227 +log_k_phenol_anisole 1.00000 -0.1774 +log_k_anisole_sink -0.17744 1.0000 + +Residual standard error: 2.706 on 19 degrees of freedom + +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 +T245_0 1.039e+02 44.160 6.462e-21 98.930000 108.80000 +k_T245_sink 1.636e-02 7.545 1.978e-07 0.012400 0.02159 +k_T245_phenol 2.701e-02 19.990 1.607e-14 0.024320 0.02999 +k_phenol_anisole 4.051e-01 3.270 2.014e-03 0.213600 0.76820 +k_anisole_sink 6.679e-03 8.942 1.544e-08 0.005285 0.00844 + +Chi2 error levels in percent: + err.min n.optim df +All data 9.831 5 17 +T245 7.908 3 5 +phenol 99.808 1 6 +anisole 5.379 1 6 + +Resulting formation fractions: + ff +T245_sink 0.3772 +T245_phenol 0.6228 +phenol_anisole 1.0000 +phenol_sink 0.0000 +anisole_sink 1.0000 + +Estimated disappearance times: + DT50 DT90 +T245 15.982 53.091 +phenol 1.711 5.685 +anisole 103.784 344.763 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mccall81_245T</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkin_long_to_wide.html b/docs/mkin_long_to_wide.html new file mode 100644 index 00000000..d4bb7ee2 --- /dev/null +++ b/docs/mkin_long_to_wide.html @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkin_long_to_wide. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Convert a dataframe from long to wide format +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkin_long_to_wide.html'>mkin_long_to_wide</a></span><span class="keyword">(</span><span class="symbol">long_data</span><span class="keyword">,</span> <span class="argument">time</span> <span class="argument">=</span> <span class="string">"time"</span><span class="keyword">,</span> <span class="argument">outtime</span> <span class="argument">=</span> <span class="string">"time"</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>long_data</dt> + <dd> + 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". +</dd> + <dt>time</dt> + <dd> + The name of the time variable in the long input data. +</dd> + <dt>outtime</dt> + <dd> + The name of the time variable in the wide output data. +</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>This function takes a dataframe in the long form as required by <code><a href='http://www.rdocumentation.org/packages/FME/topics/modCost'>modCost</a></code> + and converts it into a dataframe with one independent variable and several + dependent variables as columns.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + Dataframe in wide format. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="functioncall"><a href='mkin_long_to_wide.html'>mkin_long_to_wide</a></span><span class="keyword">(</span><span class="symbol">FOCUS_2006_D</span><span class="keyword">)</span></div> +<div class='output'> 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 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkin_long_to_wide</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkin_wide_to_long.html b/docs/mkin_wide_to_long.html new file mode 100644 index 00000000..73c54a28 --- /dev/null +++ b/docs/mkin_wide_to_long.html @@ -0,0 +1,129 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkin_wide_to_long. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Convert a dataframe with observations over time into long format +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkin_wide_to_long.html'>mkin_wide_to_long</a></span><span class="keyword">(</span><span class="symbol">wide_data</span><span class="keyword">,</span> <span class="argument">time</span> <span class="argument">=</span> <span class="string">"t"</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>wide_data</dt> + <dd> + 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. +</dd> + <dt>time</dt> + <dd> + The name of the time variable. +</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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='http://www.rdocumentation.org/packages/FME/topics/modCost'>modCost</a></code>.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + Dataframe in long format as needed for <code><a href='http://www.rdocumentation.org/packages/FME/topics/modCost'>modCost</a></code>. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="symbol">wide</span> <span class="assignement"><-</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/data.frame'>data.frame</a></span><span class="keyword">(</span><span class="argument">t</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">1</span><span class="keyword">,</span><span class="number">2</span><span class="keyword">,</span><span class="number">3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">x</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">1</span><span class="keyword">,</span><span class="number">4</span><span class="keyword">,</span><span class="number">7</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">y</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">3</span><span class="keyword">,</span><span class="number">4</span><span class="keyword">,</span><span class="number">5</span><span class="keyword">)</span><span class="keyword">)</span> +<span class="functioncall"><a href='mkin_wide_to_long.html'>mkin_wide_to_long</a></span><span class="keyword">(</span><span class="symbol">wide</span><span class="keyword">)</span></div> +<div class='output'> 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 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkin_wide_to_long</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinds.html b/docs/mkinds.html new file mode 100644 index 00000000..48b2e904 --- /dev/null +++ b/docs/mkinds.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinds. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1>A dataset class for mkin</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="symbol">mkinds</span></pre> + + <div class="Format"> + <h2>Format</h2> + + <p>An <code><a href='http://www.rdocumentation.org/packages/R6/topics/R6Class'>R6Class</a></code> generator object.</p> + + </div> + + <div class="Description"> + <h2>Description</h2> + + <p>A dataset class for mkin</p> + + </div> + + <div class="Fields"> + <h2>Fields</h2> + + <p></p> + + <p><dl> +<dt><code>title</code></dt><dd>A full title for the dataset</dd></p> + + <p><dt><code>sampling</code></dt><dd>times The sampling times</dd></p> + + <p><dt><code>time_unit</code></dt><dd>The time unit</dd></p> + + <p><dt><code>observed</code></dt><dd>Names of the observed compounds</dd></p> + + <p><dt><code>unit</code></dt><dd>The unit of the observations</dd></p> + + <p><dt><code>replicates</code></dt><dd>The number of replicates</dd></p> + + <p><dt><code>data</code></dt><dd>A dataframe with at least the columns name, time and value +in order to be compatible with mkinfit</dd></p> + + <p></dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="symbol">mds</span> <span class="assignement"><-</span> <span class="symbol">mkinds</span><span class="keyword">$</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/methods/topics/new'>new</a></span><span class="keyword">(</span><span class="string">"FOCUS A"</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_A</span><span class="keyword">)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinds</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinerrmin.html b/docs/mkinerrmin.html new file mode 100644 index 00000000..58cf6d47 --- /dev/null +++ b/docs/mkinerrmin.html @@ -0,0 +1,161 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinerrmin. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> +Calculate the minimum error to assume in order to pass the variance test +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkinerrmin.html'>mkinerrmin</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="argument">alpha</span> <span class="argument">=</span> <span class="number">0.05</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>fit</dt> + <dd> + an object of class <code><a href='mkinfit.html'>mkinfit</a></code>. + </dd> + <dt>alpha</dt> + <dd> + The confidence level chosen for the chi-squared test. +</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>This function uses <code><a href='http://www.rdocumentation.org/packages/stats/topics/optimize'>optimize</a></code> in order to iteratively find 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="Value"> + <h2>Value</h2> + + <p><dl> + A dataframe with the following components: + <dt>err.min</dt><dd>The relative error, expressed as a fraction.</dd></p> + + <p><dt>n.optim</dt><dd>The number of optimised parameters attributed to the data series.</dd></p> + + <p><dt>df</dt><dd>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.</dd></p> + + <p>The dataframe has one row for the total dataset and one further row for + each observed state variable in the model. +</dl></p> + + </div> + + <div class="Details"> + <h2>Details</h2> + + <p>This function is used internally by <code><a href='summary.mkinfit.html'>summary.mkinfit</a></code>.</p> + + </div> + + <div class="References"> + <h2>References</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="symbol">SFO_SFO</span> <span class="assignement">=</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="string">"m1"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">use_of_ff</span> <span class="argument">=</span> <span class="string">"max"</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'> +<span class="symbol">fit_FOCUS_D</span> <span class="assignement">=</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_D</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/Round'>round</a></span><span class="keyword">(</span><span class="functioncall"><a href='mkinerrmin.html'>mkinerrmin</a></span><span class="keyword">(</span><span class="symbol">fit_FOCUS_D</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">4</span><span class="keyword">)</span></div> +<div class='output'> err.min n.optim df +All data 0.0640 4 15 +parent 0.0646 2 7 +m1 0.0469 2 8 +</div> +<div class='input'><span class="symbol">fit_FOCUS_E</span> <span class="assignement">=</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_E</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/Round'>round</a></span><span class="keyword">(</span><span class="functioncall"><a href='mkinerrmin.html'>mkinerrmin</a></span><span class="keyword">(</span><span class="symbol">fit_FOCUS_E</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">4</span><span class="keyword">)</span></div> +<div class='output'> err.min n.optim df +All data 0.1544 4 13 +parent 0.1659 2 7 +m1 0.1095 2 6 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinerrmin</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinfit.html b/docs/mkinfit.html new file mode 100644 index 00000000..9264c59b --- /dev/null +++ b/docs/mkinfit.html @@ -0,0 +1,538 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinfit. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Fit a kinetic model to data with one or more state variables +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">mkinmod</span><span class="keyword">,</span> <span class="symbol">observed</span><span class="keyword">,</span> + <span class="argument">parms.ini</span> <span class="argument">=</span> <span class="string">"auto"</span><span class="keyword">,</span> + <span class="argument">state.ini</span> <span class="argument">=</span> <span class="string">"auto"</span><span class="keyword">,</span> + <span class="argument">fixed_parms</span> <span class="argument">=</span> NULL<span class="keyword">,</span> <span class="argument">fixed_initials</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/names'>names</a></span><span class="keyword">(</span><span class="symbol">mkinmod</span><span class="keyword">$</span><span class="symbol">diffs</span><span class="keyword">)</span><span class="keyword">[</span><span class="keyword">-</span><span class="number">1</span><span class="keyword">]</span><span class="keyword">,</span> + <span class="argument">from_max_mean</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"auto"</span><span class="keyword">,</span> <span class="string">"analytical"</span><span class="keyword">,</span> <span class="string">"eigen"</span><span class="keyword">,</span> <span class="string">"deSolve"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">method.ode</span> <span class="argument">=</span> <span class="string">"lsoda"</span><span class="keyword">,</span> + <span class="argument">use_compiled</span> <span class="argument">=</span> <span class="string">"auto"</span><span class="keyword">,</span> + <span class="argument">method.modFit</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"Port"</span><span class="keyword">,</span> <span class="string">"Marq"</span><span class="keyword">,</span> <span class="string">"SANN"</span><span class="keyword">,</span> <span class="string">"Nelder-Mead"</span><span class="keyword">,</span> <span class="string">"BFGS"</span><span class="keyword">,</span> <span class="string">"CG"</span><span class="keyword">,</span> <span class="string">"L-BFGS-B"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">maxit.modFit</span> <span class="argument">=</span> <span class="string">"auto"</span><span class="keyword">,</span> + <span class="argument">control.modFit</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">transform_rates</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> + <span class="argument">transform_fractions</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> + <span class="argument">plot</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> <span class="argument">err</span> <span class="argument">=</span> NULL<span class="keyword">,</span> <span class="argument">weight</span> <span class="argument">=</span> <span class="string">"none"</span><span class="keyword">,</span> + <span class="argument">scaleVar</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> + <span class="argument">atol</span> <span class="argument">=</span> <span class="number">1e-8</span><span class="keyword">,</span> <span class="argument">rtol</span> <span class="argument">=</span> <span class="number">1e-10</span><span class="keyword">,</span> <span class="argument">n.outtimes</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">,</span> + <span class="argument">reweight.method</span> <span class="argument">=</span> NULL<span class="keyword">,</span> + <span class="argument">reweight.tol</span> <span class="argument">=</span> <span class="number">1e-8</span><span class="keyword">,</span> <span class="argument">reweight.max.iter</span> <span class="argument">=</span> <span class="number">10</span><span class="keyword">,</span> + <span class="argument">trace_parms</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>mkinmod</dt> + <dd> + A list of class <code><a href='mkinmod.html'>mkinmod</a></code>, containing the kinetic model to be + fitted to the data, or one of the shorthand names ("SFO", "FOMC", "DFOP", + "HS", "SFORB"). If a shorthand name is given, a parent only degradation + model is generated for the variable with the highest value in + <code>observed</code>. + </dd> + <dt>observed</dt> + <dd> + The observed data. It has to be in the long format as described in + <code><a href='http://www.rdocumentation.org/packages/FME/topics/modFit'>modFit</a></code>, i.e. 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. Optionally, a further column + can contain weights for each data point. Its name must be passed as a + further argument named <code>err</code> which is then passed on to + <code><a href='http://www.rdocumentation.org/packages/FME/topics/modFit'>modFit</a></code>. + </dd> + <dt>parms.ini</dt> + <dd> + 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. + + 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. + </dd> + <dt>state.ini</dt> + <dd> + 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 <code><a href='mkinmod.html'>mkinmod</a></code>). 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. + </dd> + <dt>fixed_parms</dt> + <dd> + The names of parameters that should not be optimised but rather kept at the + values specified in <code>parms.ini</code>. + </dd> + <dt>fixed_initials</dt> + <dd> + 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. + </dd> + <dt>from_max_mean</dt> + <dd> + 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. + </dd> + <dt>solution_type</dt> + <dd> + 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 ode solver from package + <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/deSolve'>deSolve</a></code> is used. If set to "analytical", an analytical + solution of the model is used. This is only implemented for simple + degradation experiments with only one state variable, i.e. with no + metabolites. The default is "auto", which uses "analytical" if possible, + otherwise "eigen" if the model can be expressed using eigenvalues and + eigenvectors, and finally "deSolve" for the remaining models (time + dependence of degradation rates and metabolites). This argument is passed + on to the helper function <code><a href='mkinpredict.html'>mkinpredict</a></code>. + </dd> + <dt>method.ode</dt> + <dd> + The solution method passed via <code><a href='mkinpredict.html'>mkinpredict</a></code> to + <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/ode'>ode</a></code> in case the solution type is "deSolve". The default + "lsoda" is performant, but sometimes fails to converge. + </dd> + <dt>use_compiled</dt> + <dd> + If set to <code>FALSE</code>, no compiled version of the <code><a href='mkinmod.html'>mkinmod</a></code> + model is used, in the calls to <code><a href='mkinpredict.html'>mkinpredict</a></code> even if + a compiled verion is present. + </dd> + <dt>method.modFit</dt> + <dd> + The optimisation method passed to <code><a href='http://www.rdocumentation.org/packages/FME/topics/modFit'>modFit</a></code>. + + In order to optimally deal with problems where local minima occur, the + "Port" algorithm is now used per default as it is less prone to get trapped + in local minima and depends less on starting values for parameters than + the Levenberg Marquardt variant selected by "Marq". However, "Port" needs + more iterations. + + The former default "Marq" is the Levenberg Marquardt algorithm + <code><a href='http://www.rdocumentation.org/packages/minpack.lm/topics/nls.lm'>nls.lm</a></code> from the package <code>minpack.lm</code> and usually needs + the least number of iterations. + + The "Pseudo" algorithm is not included because it needs finite parameter bounds + which are currently not supported. + + The "Newton" algorithm is not included because its number of iterations + can not be controlled by <code>control.modFit</code> and it does not appear + to provide advantages over the other algorithms. + </dd> + <dt>maxit.modFit</dt> + <dd> + Maximum number of iterations in the optimisation. If not "auto", this will + be passed to the method called by <code><a href='http://www.rdocumentation.org/packages/FME/topics/modFit'>modFit</a></code>, overriding + what may be specified in the next argument <code>control.modFit</code>. + </dd> + <dt>control.modFit</dt> + <dd> + Additional arguments passed to the optimisation method used by + <code><a href='http://www.rdocumentation.org/packages/FME/topics/modFit'>modFit</a></code>. + </dd> + <dt>transform_rates</dt> + <dd> + 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. + </dd> + <dt>transform_fractions</dt> + <dd> + 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. If TRUE, the g parameter of the DFOP and HS + models are also transformed, as they can also be seen as compositional + data. The transformation used for these transformations is the + <code><a href='ilr.html'>ilr</a></code> transformation. + </dd> + <dt>plot</dt> + <dd> + Should the observed values and the numerical solutions be plotted at each + stage of the optimisation? + </dd> + <dt>quiet</dt> + <dd> + Suppress printing out the current model cost after each improvement? + </dd> + <dt>err </dt> + <dd>either <code>NULL</code>, or the name of the column with the + <em>error</em> estimates, used to weigh the residuals (see details of + <code><a href='http://www.rdocumentation.org/packages/FME/topics/modCost'>modCost</a></code>); if <code>NULL</code>, then the residuals are not weighed. + </dd> + <dt>weight</dt> + <dd> + only if <code>err</code>=<code>NULL</code>: how to weight the residuals, one of "none", + "std", "mean", see details of <code><a href='http://www.rdocumentation.org/packages/FME/topics/modCost'>modCost</a></code>. + </dd> + <dt>scaleVar</dt> + <dd> + Will be passed to <code><a href='http://www.rdocumentation.org/packages/FME/topics/modCost'>modCost</a></code>. Default is not to scale Variables + according to the number of observations. + </dd> + <dt>atol</dt> + <dd> + Absolute error tolerance, passed to <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/ode'>ode</a></code>. Default is 1e-8, + lower than in <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/lsoda'>lsoda</a></code>. + </dd> + <dt>rtol</dt> + <dd> + Absolute error tolerance, passed to <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/ode'>ode</a></code>. Default is 1e-10, + much lower than in <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/lsoda'>lsoda</a></code>. + </dd> + <dt>n.outtimes</dt> + <dd> + The length of the dataseries that is produced by the model prediction + function <code><a href='mkinpredict.html'>mkinpredict</a></code>. This impacts the accuracy of + the numerical solver if that is used (see <code>solution_type</code> argument. + The default value is 100. + </dd> + <dt>reweight.method</dt> + <dd> + The method used for iteratively reweighting residuals, also known + as iteratively reweighted least squares (IRLS). Default is NULL, + the other method implemented is called "obs", meaning that each + observed variable is assumed to have its own variance, this is + estimated from the fit and used for weighting the residuals + in each iteration until convergence of this estimate up to + <code>reweight.tol</code> or up to the maximum number of iterations + specified by <code>reweight.max.iter</code>. + </dd> + <dt>reweight.tol</dt> + <dd> + Tolerance for convergence criterion for the variance components + in IRLS fits. + </dd> + <dt>reweight.max.iter</dt> + <dd> + Maximum iterations in IRLS fits. + </dd> + <dt>trace_parms</dt> + <dd> + Should a trace of the parameter values be listed? + </dd> + <dt>...</dt> + <dd> + Further arguments that will be passed to <code><a href='http://www.rdocumentation.org/packages/FME/topics/modFit'>modFit</a></code>. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>This function uses the Flexible Modelling Environment package + <code><a href='http://www.rdocumentation.org/packages/FME/topics/FME'>FME</a></code> to create a function calculating the model cost, i.e. the + deviation between the kinetic model and the observed data. This model cost is + then minimised using the Port algorithm <code><a href='http://www.rdocumentation.org/packages/stats/topics/nlminb'>nlminb</a></code>, + using the specified initial or fixed parameters and starting values. + Per default, parameters in the kinetic models are internally transformed in order + to better satisfy the assumption of a normal distribution of their estimators. + In each step of the optimsation, the kinetic model is solved using the + function <code><a href='mkinpredict.html'>mkinpredict</a></code>. The variance of the residuals for each + observed variable can optionally be iteratively reweighted until convergence + using the argument <code>reweight.method = "obs"</code>.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + A list with "mkinfit" and "modFit" in the class attribute. + A summary can be obtained by <code><a href='summary.mkinfit.html'>summary.mkinfit</a></code>. +</dl></p> + + </div> + + <div class="Note"> + <h2>Note</h2> + + <p>The implementation of iteratively reweighted least squares is inspired by the + work of the KinGUII team at Bayer Crop Science (Walter Schmitt and Zhenglei + Gao). A similar implemention can also be found in CAKE 2.0, which is the + other GUI derivative of mkin, sponsored by Syngenta.</p> + + </div> + + <div class="Note"> + <h2>Note</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> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="comment"># Use shorthand notation for parent only degradation</span> +<span class="symbol">fit</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="string">"FOMC"</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_C</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/summary'>summary</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">)</span></div> +<div class='output'>mkin version: 0.9.44.9000 +R version: 3.3.1 +Date of fit: Sat Sep 10 05:53:02 2016 +Date of summary: Sat Sep 10 05:53:02 2016 + +Equations: +d_parent = - (alpha/beta) * 1/((time/beta) + 1) * parent + +Model predictions using solution type analytical + +Fitted with method Port using 64 model solutions performed in 0.16 s + +Weighting: none + +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 + +Optimised, transformed parameters with symmetric confidence intervals: + Estimate Std. Error Lower Upper +parent_0 85.87000 2.2460 80.38000 91.3700 +log_alpha 0.05192 0.1605 -0.34080 0.4446 +log_beta 0.65100 0.2801 -0.03452 1.3360 + +Parameter correlation: + parent_0 log_alpha log_beta +parent_0 1.0000 -0.2033 -0.3624 +log_alpha -0.2033 1.0000 0.9547 +log_beta -0.3624 0.9547 1.0000 + +Residual standard error: 2.275 on 6 degrees of freedom + +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 38.230 1.069e-08 80.3800 91.370 +alpha 1.053 6.231 3.953e-04 0.7112 1.560 +beta 1.917 3.570 5.895e-03 0.9661 3.806 + +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 +</div> +<div class='input'> +<span class="comment"># One parent compound, one metabolite, both single first order.</span> +<span class="comment"># Use mkinsub for convenience in model formulation. Pathway to sink included per default.</span> +<span class="symbol">SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span> + <span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"m1"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'><span class="comment"># Fit the model to the FOCUS example dataset D using defaults</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/system.time'>system.time</a></span><span class="keyword">(</span><span class="symbol">fit</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_D</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"eigen"</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'> user system elapsed + 1.272 1.360 1.044 +</div> +<div class='input'><span class="functioncall"><a href='http://www.rdocumentation.org/packages/stats/topics/coef'>coef</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">)</span></div> +<div class='output'> parent_0 log_k_parent_sink log_k_parent_m1 log_k_m1_sink + 99.59848 -3.03822 -2.98030 -5.24750 +</div> +<div class='input'><span class="functioncall"><a href='endpoints.html'>endpoints</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">)</span></div> +<div class='output'>$ff +parent_sink parent_m1 m1_sink + 0.485524 0.514476 1.000000 + +$SFORB +logical(0) + +$distimes + DT50 DT90 +parent 7.022929 23.32967 +m1 131.760712 437.69961 + +</div> +<div class='input'><span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># # deSolve is slower when no C compiler (gcc) was available during model generation</span> +<span class="comment"># print(system.time(fit.deSolve <- mkinfit(SFO_SFO, FOCUS_2006_D, </span> +<span class="comment"># solution_type = "deSolve")))</span> +<span class="comment"># coef(fit.deSolve)</span> +<span class="comment"># endpoints(fit.deSolve)</span> +<span class="comment">## ---------------------------------------------</span> + +<span class="comment"># Use stepwise fitting, using optimised parameters from parent only fit, FOMC</span> +<span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># FOMC_SFO <- mkinmod(</span> +<span class="comment"># parent = mkinsub("FOMC", "m1"),</span> +<span class="comment"># m1 = mkinsub("SFO"))</span> +<span class="comment"># # Fit the model to the FOCUS example dataset D using defaults</span> +<span class="comment"># fit.FOMC_SFO <- mkinfit(FOMC_SFO, FOCUS_2006_D)</span> +<span class="comment"># # Use starting parameters from parent only FOMC fit</span> +<span class="comment"># fit.FOMC = mkinfit("FOMC", FOCUS_2006_D, plot=TRUE)</span> +<span class="comment"># fit.FOMC_SFO <- mkinfit(FOMC_SFO, FOCUS_2006_D, </span> +<span class="comment"># parms.ini = fit.FOMC$bparms.ode, plot=TRUE)</span> +<span class="comment"># </span> +<span class="comment"># # Use stepwise fitting, using optimised parameters from parent only fit, SFORB</span> +<span class="comment"># SFORB_SFO <- mkinmod(</span> +<span class="comment"># parent = list(type = "SFORB", to = "m1", sink = TRUE),</span> +<span class="comment"># m1 = list(type = "SFO"))</span> +<span class="comment"># # Fit the model to the FOCUS example dataset D using defaults</span> +<span class="comment"># fit.SFORB_SFO <- mkinfit(SFORB_SFO, FOCUS_2006_D)</span> +<span class="comment"># fit.SFORB_SFO.deSolve <- mkinfit(SFORB_SFO, FOCUS_2006_D, solution_type = "deSolve")</span> +<span class="comment"># # Use starting parameters from parent only SFORB fit (not really needed in this case)</span> +<span class="comment"># fit.SFORB = mkinfit("SFORB", FOCUS_2006_D)</span> +<span class="comment"># fit.SFORB_SFO <- mkinfit(SFORB_SFO, FOCUS_2006_D, parms.ini = fit.SFORB$bparms.ode)</span> +<span class="comment">## ---------------------------------------------</span> + +<span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># # Weighted fits, including IRLS</span> +<span class="comment"># SFO_SFO.ff <- mkinmod(parent = mkinsub("SFO", "m1"),</span> +<span class="comment"># m1 = mkinsub("SFO"), use_of_ff = "max")</span> +<span class="comment"># f.noweight <- mkinfit(SFO_SFO.ff, FOCUS_2006_D)</span> +<span class="comment"># summary(f.noweight)</span> +<span class="comment"># f.irls <- mkinfit(SFO_SFO.ff, FOCUS_2006_D, reweight.method = "obs")</span> +<span class="comment"># summary(f.irls)</span> +<span class="comment"># f.w.mean <- mkinfit(SFO_SFO.ff, FOCUS_2006_D, weight = "mean")</span> +<span class="comment"># summary(f.w.mean)</span> +<span class="comment"># f.w.value <- mkinfit(SFO_SFO.ff, subset(FOCUS_2006_D, value != 0), err = "value")</span> +<span class="comment"># summary(f.w.value)</span> +<span class="comment">## ---------------------------------------------</span> + +<span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># # Manual weighting</span> +<span class="comment"># dw <- FOCUS_2006_D</span> +<span class="comment"># errors <- c(parent = 2, m1 = 1)</span> +<span class="comment"># dw$err.man <- errors[FOCUS_2006_D$name]</span> +<span class="comment"># f.w.man <- mkinfit(SFO_SFO.ff, dw, err = "err.man")</span> +<span class="comment"># summary(f.w.man)</span> +<span class="comment"># f.w.man.irls <- mkinfit(SFO_SFO.ff, dw, err = "err.man",</span> +<span class="comment"># reweight.method = "obs")</span> +<span class="comment"># summary(f.w.man.irls)</span> +<span class="comment">## ---------------------------------------------</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinfit</li> + </ul> + <ul> + <li> optimize </li> + </ul> --> + + <h2>See also</h2> + <p>Plotting methods <code><a href='plot.mkinfit.html'>plot.mkinfit</a></code> and + <code><a href='mkinparplot.html'>mkinparplot</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> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinmod.html b/docs/mkinmod.html new file mode 100644 index 00000000..afbb9cc2 --- /dev/null +++ b/docs/mkinmod.html @@ -0,0 +1,221 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinmod. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Function to set up a kinetic model with one or more state variables +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="symbol">...</span><span class="keyword">,</span> <span class="argument">use_of_ff</span> <span class="argument">=</span> <span class="string">"min"</span><span class="keyword">,</span> <span class="argument">speclist</span> <span class="argument">=</span> NULL<span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> <span class="argument">verbose</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>...</dt> + <dd> + For each observed variable, a list has to be specified as an argument, containing + at least a component <code>type</code>, specifying the type of kinetics to use + for the variable. 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" and "HS" can additionally be chosen for the first + variable which is assumed to be the source compartment. + Additionally, each component of the list can include a character vector <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" (default) and the model for + the compartment is "SFO" or "SFORB", an additional component of the list + can be "sink=FALSE" effectively fixing the flux to sink to zero. + </dd> + <dt>use_of_ff</dt> + <dd> + Specification of the use of formation fractions in the model equations and, if + applicable, the coefficient matrix. If "min", a minimum use of formation + fractions is made in order to avoid fitting the product of formation fractions + and rate constants. If "max", formation fractions are always used. + </dd> + <dt>speclist</dt> + <dd> + 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. + </dd> + <dt>quiet</dt> + <dd> + Should messages be suppressed? + </dd> + <dt>verbose</dt> + <dd> + If <code>TRUE</code>, passed to <code><a href='http://www.rdocumentation.org/packages/inline/topics/cfunction'>cfunction</a></code> if applicable to give + detailed information about the C function being built. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>The function usually takes several expressions, each assigning a compound name to + a list, specifying the kinetic model type and reaction or transfer to other + observed compartments. Instead of specifying several expressions, a list + of lists can be given in the speclist argument.</p> + + <p>For the definition of model types and their parameters, the equations given + in the FOCUS and NAFTA guidance documents are used.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + A list of class <code>mkinmod</code> for use with <code><a href='mkinfit.html'>mkinfit</a></code>, containing + <dt>diffs</dt><dd> A vector of string representations of differential equations, + one for each modelling variable. </dd></p> + + <p><dt>parms</dt><dd> A vector of parameter names occurring in the differential equations. </dd></p> + + <p><dt>map</dt><dd> A list containing named character vectors for each observed variable, specifying + the modelling variables by which it is represented. </dd></p> + + <p><dt>use_of_ff</dt><dd> The content of <code>use_of_ff</code> is passed on in this list component. </dd></p> + + <p><dt>coefmat</dt><dd> The coefficient matrix, if the system of differential equations can be + represented by one. </dd></p> + + <p></dl></p> + + </div> + + <div class="Note"> + <h2>Note</h2> + + <p>The IORE submodel is not well tested (yet). When using this model for metabolites, + you may want to read the second note in the help page to + <code><a href='mkinfit.html'>mkinfit</a></code>.</p> + + </div> + + <div class="References"> + <h2>References</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + <p>NAFTA Technical Working Group on Pesticides (not dated) Guidance for + Evaluating and Calculating Degradation Kinetics in Environmental + Media</p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="comment"># Specify the SFO model (this is not needed any more, as we can now mkinfit("SFO", ...)</span> +<span class="symbol">SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span> + +<span class="comment"># One parent compound, one metabolite, both single first order</span> +<span class="symbol">SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span> + <span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"m1"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'> +<span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># # The above model used to be specified like this, before the advent of mkinsub()</span> +<span class="comment"># SFO_SFO <- mkinmod(</span> +<span class="comment"># parent = list(type = "SFO", to = "m1"),</span> +<span class="comment"># m1 = list(type = "SFO"))</span> +<span class="comment"># </span> +<span class="comment"># # Show details of creating the C function</span> +<span class="comment"># SFO_SFO <- mkinmod(</span> +<span class="comment"># parent = mkinsub("SFO", "m1"),</span> +<span class="comment"># m1 = mkinsub("SFO"), verbose = TRUE)</span> +<span class="comment"># </span> +<span class="comment"># # If we have several parallel metabolites </span> +<span class="comment"># # (compare tests/testthat/test_synthetic_data_for_UBA_2014.R)</span> +<span class="comment"># m_synth_DFOP_par <- mkinmod(parent = mkinsub("DFOP", c("M1", "M2")),</span> +<span class="comment"># M1 = mkinsub("SFO"),</span> +<span class="comment"># M2 = mkinsub("SFO"),</span> +<span class="comment"># use_of_ff = "max", quiet = TRUE)</span> +<span class="comment"># </span> +<span class="comment"># fit_DFOP_par_c <- mkinfit(m_synth_DFOP_par, </span> +<span class="comment"># synthetic_data_for_UBA_2014[[12]]$data,</span> +<span class="comment"># quiet = TRUE)</span> +<span class="comment">## ---------------------------------------------</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinmod</li> + </ul> + <ul> + <li> models </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinparplot-4.png b/docs/mkinparplot-4.png Binary files differnew file mode 100644 index 00000000..77eafd95 --- /dev/null +++ b/docs/mkinparplot-4.png diff --git a/docs/mkinparplot.html b/docs/mkinparplot.html new file mode 100644 index 00000000..3b78785e --- /dev/null +++ b/docs/mkinparplot.html @@ -0,0 +1,123 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinparplot. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Function to plot the confidence intervals obtained using + <code><a href='mkinfit.html'>mkinfit</a></code> +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkinparplot.html'>mkinparplot</a></span><span class="keyword">(</span><span class="symbol">object</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>object</dt> + <dd> + A fit represented in an <code><a href='mkinfit.html'>mkinfit</a></code> object. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>This function plots the confidence intervals for the parameters + fitted using <code><a href='mkinfit.html'>mkinfit</a></code>.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + Nothing is returned by this function, as it is called for its side effect, namely to produce a plot. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="symbol">model</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span> + <span class="argument">T245</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"phenol"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">sink</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">phenol</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"anisole"</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">anisole</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">use_of_ff</span> <span class="argument">=</span> <span class="string">"max"</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'><span class="symbol">fit</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">model</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/subset'>subset</a></span><span class="keyword">(</span><span class="symbol">mccall81_245T</span><span class="keyword">,</span> <span class="symbol">soil</span> == <span class="string">"Commerce"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> +<span class="functioncall"><a href='mkinparplot.html'>mkinparplot</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">)</span></div> +<p><img src='mkinparplot-4.png' alt='' width='540' height='400' /></p></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinparplot</li> + </ul> + <ul> + <li> hplot </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinplot.html b/docs/mkinplot.html new file mode 100644 index 00000000..a8f6632e --- /dev/null +++ b/docs/mkinplot.html @@ -0,0 +1,115 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinplot. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Plot the observed data and the fitted model of an mkinfit object +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkinplot.html'>mkinplot</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>fit</dt> + <dd> + an object of class <code><a href='mkinfit.html'>mkinfit</a></code>. + </dd> + <dt>...</dt> + <dd> + further arguments passed to <code><a href='plot.mkinfit.html'>plot.mkinfit</a></code>. +</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Deprecated function. It now only calls the plot method <code><a href='plot.mkinfit.html'>plot.mkinfit</a></code>.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + The function is called for its side effect. +</dl></p> + + </div> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinplot</li> + </ul> + <ul> + + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinpredict.html b/docs/mkinpredict.html new file mode 100644 index 00000000..438b37c0 --- /dev/null +++ b/docs/mkinpredict.html @@ -0,0 +1,345 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinpredict. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Produce predictions from a kinetic model using specific parameters +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">mkinmod</span><span class="keyword">,</span> <span class="symbol">odeparms</span><span class="keyword">,</span> <span class="symbol">odeini</span><span class="keyword">,</span> <span class="symbol">outtimes</span><span class="keyword">,</span> <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"deSolve"</span><span class="keyword">,</span> + <span class="argument">use_compiled</span> <span class="argument">=</span> <span class="string">"auto"</span><span class="keyword">,</span> <span class="argument">method.ode</span> <span class="argument">=</span> <span class="string">"lsoda"</span><span class="keyword">,</span> <span class="argument">atol</span> <span class="argument">=</span> <span class="number">1e-08</span><span class="keyword">,</span> <span class="argument">rtol</span> <span class="argument">=</span> <span class="number">1e-10</span><span class="keyword">,</span> + <span class="argument">map_output</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>mkinmod</dt> + <dd> + A kinetic model as produced by <code><a href='mkinmod.html'>mkinmod</a></code>. + </dd> + <dt>odeparms</dt> + <dd> + A numeric vector specifying the parameters used in the kinetic model, which + is generally defined as a set of ordinary differential equations. + </dd> + <dt>odeini</dt> + <dd> + A numeric vectory 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. + </dd> + <dt>outtimes</dt> + <dd> + A numeric vector specifying the time points for which model predictions + should be generated. + </dd> + <dt>solution_type</dt> + <dd> + 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 faster but not applicable to some models e.g. + using FOMC for the parent compound. + </dd> + <dt>method.ode</dt> + <dd> + The solution method passed via <code><a href='mkinpredict.html'>mkinpredict</a></code> to + <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/ode'>ode</a></code> in case the solution type is "deSolve". The default + "lsoda" is performant, but sometimes fails to converge. + </dd> + <dt>use_compiled</dt> + <dd> + If set to <code>FALSE</code>, no compiled version of the <code><a href='mkinmod.html'>mkinmod</a></code> + model is used, even if is present. + </dd> + <dt>atol</dt> + <dd> + Absolute error tolerance, passed to <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/ode'>ode</a></code>. Default is 1e-8, + lower than in <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/lsoda'>lsoda</a></code>. + </dd> + <dt>rtol</dt> + <dd> + Absolute error tolerance, passed to <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/ode'>ode</a></code>. Default is 1e-10, + much lower than in <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/lsoda'>lsoda</a></code>. + </dd> + <dt>map_output</dt> + <dd> + Boolean to specify if the output should list values for the observed + variables (default) or for all state variables (if set to FALSE). + </dd> + <dt>...</dt> + <dd> + Further arguments passed to the ode solver in case such a solver is used. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>This function produces a time series for all the observed variables in a + kinetic model as specified by <code><a href='mkinmod.html'>mkinmod</a></code>, using a specific set of + kinetic parameters and initial values for the state variables.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + A matrix in the same format as the output of <code><a href='http://www.rdocumentation.org/packages/deSolve/topics/ode'>ode</a></code>. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="symbol">SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span> + <span class="comment"># Compare solution types</span> + <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">:</span><span class="number">20</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"analytical"</span><span class="keyword">)</span></div> +<div class='output'> time degradinol +1 0 100.0000000 +2 1 74.0818221 +3 2 54.8811636 +4 3 40.6569660 +5 4 30.1194212 +6 5 22.3130160 +7 6 16.5298888 +8 7 12.2456428 +9 8 9.0717953 +10 9 6.7205513 +11 10 4.9787068 +12 11 3.6883167 +13 12 2.7323722 +14 13 2.0241911 +15 14 1.4995577 +16 15 1.1108997 +17 16 0.8229747 +18 17 0.6096747 +19 18 0.4516581 +20 19 0.3345965 +21 20 0.2478752 +</div> +<div class='input'> <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">:</span><span class="number">20</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"deSolve"</span><span class="keyword">)</span></div> +<div class='output'> time degradinol +1 0 100.0000000 +2 1 74.0818221 +3 2 54.8811636 +4 3 40.6569660 +5 4 30.1194212 +6 5 22.3130160 +7 6 16.5298888 +8 7 12.2456428 +9 8 9.0717953 +10 9 6.7205513 +11 10 4.9787068 +12 11 3.6883167 +13 12 2.7323722 +14 13 2.0241911 +15 14 1.4995577 +16 15 1.1108996 +17 16 0.8229747 +18 17 0.6096747 +19 18 0.4516581 +20 19 0.3345965 +21 20 0.2478752 +</div> +<div class='input'> <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">:</span><span class="number">20</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"deSolve"</span><span class="keyword">,</span> <span class="argument">use_compiled</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">)</span></div> +<div class='output'> time degradinol +1 0 100.0000000 +2 1 74.0818221 +3 2 54.8811636 +4 3 40.6569660 +5 4 30.1194212 +6 5 22.3130160 +7 6 16.5298888 +8 7 12.2456428 +9 8 9.0717953 +10 9 6.7205513 +11 10 4.9787068 +12 11 3.6883167 +13 12 2.7323722 +14 13 2.0241911 +15 14 1.4995577 +16 15 1.1108996 +17 16 0.8229747 +18 17 0.6096747 +19 18 0.4516581 +20 19 0.3345965 +21 20 0.2478752 +</div> +<div class='input'> <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">:</span><span class="number">20</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"eigen"</span><span class="keyword">)</span></div> +<div class='output'> time degradinol +1 0 100.0000000 +2 1 74.0818221 +3 2 54.8811636 +4 3 40.6569660 +5 4 30.1194212 +6 5 22.3130160 +7 6 16.5298888 +8 7 12.2456428 +9 8 9.0717953 +10 9 6.7205513 +11 10 4.9787068 +12 11 3.6883167 +13 12 2.7323722 +14 13 2.0241911 +15 14 1.4995577 +16 15 1.1108997 +17 16 0.8229747 +18 17 0.6096747 +19 18 0.4516581 +20 19 0.3345965 +21 20 0.2478752 +</div> +<div class='input'> + + <span class="comment"># Compare integration methods to analytical solution</span> + <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">:</span><span class="number">20</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"analytical"</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">21</span><span class="keyword">,</span><span class="keyword">]</span></div> +<div class='output'> time degradinol +21 20 0.2478752 +</div> +<div class='input'> <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">:</span><span class="number">20</span><span class="keyword">,</span> + <span class="argument">method</span> <span class="argument">=</span> <span class="string">"lsoda"</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">21</span><span class="keyword">,</span><span class="keyword">]</span></div> +<div class='output'> time degradinol +21 20 0.2478752 +</div> +<div class='input'> <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">:</span><span class="number">20</span><span class="keyword">,</span> + <span class="argument">method</span> <span class="argument">=</span> <span class="string">"ode45"</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">21</span><span class="keyword">,</span><span class="keyword">]</span></div> +<div class='output'> time degradinol +21 20 0.2478752 +</div> +<div class='input'> <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> <span class="number">0</span><span class="keyword">:</span><span class="number">20</span><span class="keyword">,</span> + <span class="argument">method</span> <span class="argument">=</span> <span class="string">"rk4"</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">21</span><span class="keyword">,</span><span class="keyword">]</span></div> +<div class='output'> time degradinol +21 20 0.2480043 +</div> +<div class='input'> <span class="comment"># rk4 is not as precise here</span> + + <span class="comment"># The number of output times used to make a lot of difference until the</span> + <span class="comment"># default for atol was adjusted</span> + <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/seq'>seq</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">20</span><span class="keyword">,</span> <span class="argument">by</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">201</span><span class="keyword">,</span><span class="keyword">]</span></div> +<div class='output'> time degradinol +201 20 0.2478752 +</div> +<div class='input'> <span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_degradinol_sink</span> <span class="argument">=</span> <span class="number">0.3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">degradinol</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/seq'>seq</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">20</span><span class="keyword">,</span> <span class="argument">by</span> <span class="argument">=</span> <span class="number">0.01</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">2001</span><span class="keyword">,</span><span class="keyword">]</span></div> +<div class='output'> time degradinol +2001 20 0.2478752 +</div> +<div class='input'> + <span class="comment"># Check compiled model versions - they are faster than the eigenvalue based solutions!</span> + <span class="symbol">SFO_SFO</span> <span class="assignement">=</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="string">"m1"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/system.time'>system.time</a></span><span class="keyword">(</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_parent_m1</span> <span class="argument">=</span> <span class="number">0.05</span><span class="keyword">,</span> <span class="argument">k_parent_sink</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">,</span> <span class="argument">k_m1_sink</span> <span class="argument">=</span> <span class="number">0.01</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">,</span> <span class="argument">m1</span> <span class="argument">=</span> <span class="number">0</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/seq'>seq</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">20</span><span class="keyword">,</span> <span class="argument">by</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"eigen"</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">201</span><span class="keyword">,</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'> time parent m1 +201 20 4.978707 27.46227 +</div> +<div class='output'> user system elapsed + 0.008 0.020 0.005 +</div> +<div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/system.time'>system.time</a></span><span class="keyword">(</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_parent_m1</span> <span class="argument">=</span> <span class="number">0.05</span><span class="keyword">,</span> <span class="argument">k_parent_sink</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">,</span> <span class="argument">k_m1_sink</span> <span class="argument">=</span> <span class="number">0.01</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">,</span> <span class="argument">m1</span> <span class="argument">=</span> <span class="number">0</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/seq'>seq</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">20</span><span class="keyword">,</span> <span class="argument">by</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"deSolve"</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">201</span><span class="keyword">,</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'> time parent m1 +201 20 4.978707 27.46227 +</div> +<div class='output'> user system elapsed + 0.012 0.004 0.002 +</div> +<div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/system.time'>system.time</a></span><span class="keyword">(</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="functioncall"><a href='mkinpredict.html'>mkinpredict</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">k_parent_m1</span> <span class="argument">=</span> <span class="number">0.05</span><span class="keyword">,</span> <span class="argument">k_parent_sink</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">,</span> <span class="argument">k_m1_sink</span> <span class="argument">=</span> <span class="number">0.01</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="number">100</span><span class="keyword">,</span> <span class="argument">m1</span> <span class="argument">=</span> <span class="number">0</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/seq'>seq</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">20</span><span class="keyword">,</span> <span class="argument">by</span> <span class="argument">=</span> <span class="number">0.1</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">solution_type</span> <span class="argument">=</span> <span class="string">"deSolve"</span><span class="keyword">,</span> <span class="argument">use_compiled</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">)</span><span class="keyword">[</span><span class="number">201</span><span class="keyword">,</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'> time parent m1 +201 20 4.978707 27.46227 +</div> +<div class='output'> user system elapsed + 0.036 0.000 0.036 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinpredict</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinresplot-4.png b/docs/mkinresplot-4.png Binary files differnew file mode 100644 index 00000000..7dbd7522 --- /dev/null +++ b/docs/mkinresplot-4.png diff --git a/docs/mkinresplot.html b/docs/mkinresplot.html new file mode 100644 index 00000000..09f4f7b9 --- /dev/null +++ b/docs/mkinresplot.html @@ -0,0 +1,163 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinresplot. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Function to plot residuals stored in an mkin object +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkinresplot.html'>mkinresplot</a></span><span class="keyword">(</span><span class="symbol">object</span><span class="keyword">,</span> + <span class="argument">obs_vars</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/names'>names</a></span><span class="keyword">(</span><span class="symbol">object</span><span class="keyword">$</span><span class="symbol">mkinmod</span><span class="keyword">$</span><span class="symbol">map</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">xlim</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0</span><span class="keyword">,</span> <span class="number">1.1</span> <span class="keyword">*</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/Extremes'>max</a></span><span class="keyword">(</span><span class="symbol">object</span><span class="keyword">$</span><span class="symbol">data</span><span class="keyword">$</span><span class="symbol">time</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">xlab</span> <span class="argument">=</span> <span class="string">"Time"</span><span class="keyword">,</span> <span class="argument">ylab</span> <span class="argument">=</span> <span class="string">"Residual"</span><span class="keyword">,</span> + <span class="argument">maxabs</span> <span class="argument">=</span> <span class="string">"auto"</span><span class="keyword">,</span> <span class="argument">legend</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">lpos</span> <span class="argument">=</span> <span class="string">"topright"</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>object</dt> + <dd> + A fit represented in an <code><a href='mkinfit.html'>mkinfit</a></code> object. +</dd> + <dt>obs_vars</dt> + <dd> + A character vector of names of the observed variables for which residuals + should be plotted. Defaults to all observed variables in the model +</dd> + <dt>xlim</dt> + <dd> + plot range in x direction. + </dd> + <dt>xlab</dt> + <dd> + Label for the x axis. Defaults to "Time [days]". +</dd> + <dt>ylab</dt> + <dd> + Label for the y axis. Defaults to "Residual [% of applied radioactivity]". +</dd> + <dt>maxabs</dt> + <dd> + Maximum absolute value of the residuals. This is used for the scaling of + the y axis and defaults to "auto". +</dd> + <dt>legend</dt> + <dd> + Should a legend be plotted? Defaults to "TRUE". +</dd> + <dt>lpos</dt> + <dd> + Where should the legend be placed? Default is "topright". Will be passed on to + <code><a href='http://www.rdocumentation.org/packages/graphics/topics/legend'>legend</a></code>. </dd> + <dt>...</dt> + <dd> + further arguments passed to <code><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></code>. +</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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="Value"> + <h2>Value</h2> + + <p><dl> + Nothing is returned by this function, as it is called for its side effect, namely to produce a plot. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="symbol">model</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"m1"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'><span class="symbol">fit</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">model</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_D</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> +<span class="functioncall"><a href='mkinresplot.html'>mkinresplot</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="string">"m1"</span><span class="keyword">)</span></div> +<p><img src='mkinresplot-4.png' alt='' width='540' height='400' /></p></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinresplot</li> + </ul> + <ul> + <li> hplot </li> + </ul> --> + + <h2>See also</h2> + <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> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mkinsub.html b/docs/mkinsub.html new file mode 100644 index 00000000..5272a578 --- /dev/null +++ b/docs/mkinsub.html @@ -0,0 +1,149 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mkinsub. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Function to set up a kinetic submodel for one state variable +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="symbol">submodel</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> NULL<span class="keyword">,</span> <span class="argument">sink</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">full_name</span> <span class="argument">=</span> <span class="number">NA</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>submodel</dt> + <dd> + Character vector of length one to specify the submodel type. See + <code><a href='mkinmod.html'>mkinmod</a></code> for the list of allowed submodel names. + </dd> + <dt>to</dt> + <dd> + Vector of the names of the state variable to which a transformation + shall be included in the model. + </dd> + <dt>sink</dt> + <dd> + Should a pathway to sink be included in the model in addition to the + pathways to other state variables? + </dd> + <dt>full_name</dt> + <dd> + 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. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>This is a convenience function to set up the lists used as arguments for + <code><a href='mkinmod.html'>mkinmod</a></code>.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + A list for use with <code><a href='mkinmod.html'>mkinmod</a></code>. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="comment"># One parent compound, one metabolite, both single first order.</span> +<span class="symbol">SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span> + <span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="string">"m1"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'> +<span class="comment"># The same model using mkinsub</span> +<span class="symbol">SFO_SFO.2</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span> + <span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"m1"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'> +<span class="comment"># Now supplying full names</span> +<span class="symbol">SFO_SFO.2</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span> + <span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"m1"</span><span class="keyword">,</span> <span class="argument">full_name</span> <span class="argument">=</span> <span class="string">"Test compound"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">full_name</span> <span class="argument">=</span> <span class="string">"Metabolite M1"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mkinsub</li> + </ul> + <ul> + + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/mmkin.html b/docs/mmkin.html new file mode 100644 index 00000000..5924d3d5 --- /dev/null +++ b/docs/mmkin.html @@ -0,0 +1,172 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>mmkin. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Fit one or more kinetic models with one or more state variables to one or more datasets +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='mmkin.html'>mmkin</a></span><span class="keyword">(</span><span class="symbol">models</span><span class="keyword">,</span> <span class="symbol">datasets</span><span class="keyword">,</span> + <span class="argument">cores</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/Round'>round</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/parallel/topics/detectCores'>detectCores</a></span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">/</span><span class="number">2</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">cluster</span> <span class="argument">=</span> NULL<span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>models</dt> + <dd> + Either a character vector of shorthand names ("SFO", "FOMC", "DFOP", + "HS", "SFORB"), or an optionally named list of <code><a href='mkinmod.html'>mkinmod</a></code> + objects. + </dd> + <dt>datasets</dt> + <dd> + An optionally named list of datasets suitable as observed data for + <code><a href='mkinfit.html'>mkinfit</a></code>. + </dd> + <dt>cores</dt> + <dd> + The number of cores to be used for multicore processing. This is only + used when the <code>cluster</code> argument is <code>NULL</code>. + </dd> + <dt>cluster</dt> + <dd> + A cluster as returned by <code><a href='http://www.rdocumentation.org/packages/parallel/topics/makeCluster'>makeCluster</a></code> to be used for parallel + execution. + </dd> + <dt>...</dt> + <dd> + Further arguments that will be passed to <code><a href='mkinfit.html'>mkinfit</a></code>. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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="Value"> + <h2>Value</h2> + + <p><dl> + A matrix of <code><a href='mkinfit.html'>mkinfit</a></code> objects that can be indexed using the model + and dataset names as row and column indices. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># m_synth_SFO_lin <- mkinmod(parent = mkinsub("SFO", "M1"),</span> +<span class="comment"># M1 = mkinsub("SFO", "M2"),</span> +<span class="comment"># M2 = mkinsub("SFO"), use_of_ff = "max")</span> +<span class="comment"># </span> +<span class="comment"># m_synth_FOMC_lin <- mkinmod(parent = mkinsub("FOMC", "M1"),</span> +<span class="comment"># M1 = mkinsub("SFO", "M2"),</span> +<span class="comment"># M2 = mkinsub("SFO"), use_of_ff = "max")</span> +<span class="comment"># </span> +<span class="comment"># models <- list(SFO_lin = m_synth_SFO_lin, FOMC_lin = m_synth_FOMC_lin)</span> +<span class="comment"># datasets <- lapply(synthetic_data_for_UBA_2014[1:3], function(x) x$data)</span> +<span class="comment"># names(datasets) <- paste("Dataset", 1:3)</span> +<span class="comment"># </span> +<span class="comment"># time_default <- system.time(fits.0 <- mmkin(models, datasets))</span> +<span class="comment"># time_1 <- system.time(fits.1 <- mmkin(models, datasets, cores = 1))</span> +<span class="comment"># </span> +<span class="comment"># time_default</span> +<span class="comment"># time_1</span> +<span class="comment"># </span> +<span class="comment"># endpoints(fits[["SFO_lin", 2]])</span> +<span class="comment"># </span> +<span class="comment"># # Plot.mkinfit handles rows or columns of mmkin result objects</span> +<span class="comment"># plot(fits.0[1, ])</span> +<span class="comment"># plot(fits.0[1, ], obs_var = c("M1", "M2"))</span> +<span class="comment"># plot(fits.0[, 1])</span> +<span class="comment"># # Use double brackets to extract a single mkinfit object, which will be plotted</span> +<span class="comment"># # by plot.mkinfit</span> +<span class="comment"># plot(fits.0[[1, 1]], sep_obs = TRUE, show_residuals = TRUE, show_errmin = TRUE)</span> +<span class="comment"># # Plotting with mmkin (single brackets, extracting an mmkin object) does not</span> +<span class="comment"># # allow to plot the observed variables separately</span> +<span class="comment"># plot(fits.0[1, 1])</span> +<span class="comment">## ---------------------------------------------</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>mmkin</li> + </ul> + <ul> + <li> optimize </li> + </ul> --> + + <h2>See also</h2> + <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> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/plot.mkinfit-10.png b/docs/plot.mkinfit-10.png Binary files differnew file mode 100644 index 00000000..09bb687c --- /dev/null +++ b/docs/plot.mkinfit-10.png diff --git a/docs/plot.mkinfit-4.png b/docs/plot.mkinfit-4.png Binary files differnew file mode 100644 index 00000000..1e90d789 --- /dev/null +++ b/docs/plot.mkinfit-4.png diff --git a/docs/plot.mkinfit-6.png b/docs/plot.mkinfit-6.png Binary files differnew file mode 100644 index 00000000..1dfbbe4c --- /dev/null +++ b/docs/plot.mkinfit-6.png diff --git a/docs/plot.mkinfit-8.png b/docs/plot.mkinfit-8.png Binary files differnew file mode 100644 index 00000000..e4ab674a --- /dev/null +++ b/docs/plot.mkinfit-8.png diff --git a/docs/plot.mkinfit.html b/docs/plot.mkinfit.html new file mode 100644 index 00000000..76ae3c4d --- /dev/null +++ b/docs/plot.mkinfit.html @@ -0,0 +1,238 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>plot.mkinfit. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Plot the observed data and the fitted model of an mkinfit object +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="comment"># S3 method for mkinfit</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="argument">fit</span> <span class="argument">=</span> <span class="symbol">x</span><span class="keyword">,</span> + <span class="argument">obs_vars</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/names'>names</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">$</span><span class="symbol">mkinmod</span><span class="keyword">$</span><span class="symbol">map</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">xlab</span> <span class="argument">=</span> <span class="string">"Time"</span><span class="keyword">,</span> <span class="argument">ylab</span> <span class="argument">=</span> <span class="string">"Observed"</span><span class="keyword">,</span> + <span class="argument">xlim</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/range'>range</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">$</span><span class="symbol">data</span><span class="keyword">$</span><span class="symbol">time</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">ylim</span> <span class="argument">=</span> <span class="string">"default"</span><span class="keyword">,</span> + <span class="argument">col_obs</span> <span class="argument">=</span> <span class="number">1</span><span class="keyword">:</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/length'>length</a></span><span class="keyword">(</span><span class="symbol">obs_vars</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">pch_obs</span> <span class="argument">=</span> <span class="symbol">col_obs</span><span class="keyword">,</span> + <span class="argument">lty_obs</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/rep'>rep</a></span><span class="keyword">(</span><span class="number">1</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/length'>length</a></span><span class="keyword">(</span><span class="symbol">obs_vars</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">add</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> <span class="argument">legend</span> <span class="argument">=</span> <span class="keyword">!</span><span class="symbol">add</span><span class="keyword">,</span> + <span class="argument">show_residuals</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> <span class="argument">maxabs</span> <span class="argument">=</span> <span class="string">"auto"</span><span class="keyword">,</span> + <span class="argument">sep_obs</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> <span class="argument">rel.height.middle</span> <span class="argument">=</span> <span class="number">0.9</span><span class="keyword">,</span> + <span class="argument">lpos</span> <span class="argument">=</span> <span class="string">"topright"</span><span class="keyword">,</span> <span class="argument">inset</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="number">0.05</span><span class="keyword">,</span> <span class="number">0.05</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">show_errmin</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">,</span> <span class="argument">errmin_digits</span> <span class="argument">=</span> <span class="number">3</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span> +<span class="functioncall"><a href='plot.mkinfit.html'>plot_sep</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="argument">sep_obs</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">show_residuals</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">show_errmin</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>x</dt> + <dd> + Alias for fit introduced for compatibility with the generic S3 method. + </dd> + <dt>fit</dt> + <dd> + An object of class <code><a href='mkinfit.html'>mkinfit</a></code>. + </dd> + <dt>obs_vars</dt> + <dd> + 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. + </dd> + <dt>xlab</dt> + <dd> + Label for the x axis. + </dd> + <dt>ylab</dt> + <dd> + Label for the y axis. + </dd> + <dt>xlim</dt> + <dd> + Plot range in x direction. + </dd> + <dt>ylim</dt> + <dd> + Plot range in y direction. + </dd> + <dt>col_obs</dt> + <dd> + Colors used for plotting the observed data and the corresponding model prediction lines. + </dd> + <dt>pch_obs</dt> + <dd> + Symbols to be used for plotting the data. + </dd> + <dt>lty_obs</dt> + <dd> + Line types to be used for the model predictions. + </dd> + <dt>add</dt> + <dd> + Should the plot be added to an existing plot? + </dd> + <dt>legend</dt> + <dd> + Should a legend be added to the plot? + </dd> + <dt>show_residuals</dt> + <dd> + 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. + </dd> + <dt>maxabs</dt> + <dd> + Maximum absolute value of the residuals. This is used for the scaling of + the y axis and defaults to "auto". + </dd> + <dt>sep_obs</dt> + <dd> + 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. + </dd> + <dt>rel.height.middle</dt> + <dd> + The relative height of the middle plot, if more than two rows of plots are shown. + </dd> + <dt>lpos</dt> + <dd> + Position(s) of the legend(s). Passed to <code><a href='http://www.rdocumentation.org/packages/graphics/topics/legend'>legend</a></code> as the first argument. + If not length one, this should be of the same length as the obs_var argument. + </dd> + <dt>inset</dt> + <dd> + Passed to <code><a href='http://www.rdocumentation.org/packages/graphics/topics/legend'>legend</a></code> if applicable. + </dd> + <dt>show_errmin</dt> + <dd> + Should the FOCUS chi2 error value be shown in the upper margin of the plot? + </dd> + <dt>errmin_digits</dt> + <dd> + The number of significant digits for rounding the FOCUS chi2 error percentage. + </dd> + <dt>...</dt> + <dd> + Further arguments passed to <code><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></code>. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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="Value"> + <h2>Value</h2> + + <p><dl> + The function is called for its side effect. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="comment"># One parent compound, one metabolite, both single first order, path from</span> +<span class="comment"># parent to sink included, use Levenberg-Marquardt for speed</span> +<span class="symbol">SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="string">"m1"</span><span class="keyword">,</span> <span class="argument">full</span> <span class="argument">=</span> <span class="string">"Parent"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='mkinsub.html'>mkinsub</a></span><span class="keyword">(</span><span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">full</span> <span class="argument">=</span> <span class="string">"Metabolite M1"</span> <span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'><span class="symbol">fit</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_D</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">method.modFit</span> <span class="argument">=</span> <span class="string">"Marq"</span><span class="keyword">)</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">)</span></div> +<p><img src='plot.mkinfit-4.png' alt='' width='540' height='400' /></p> +<div class='input'><span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="argument">show_residuals</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span></div> +<p><img src='plot.mkinfit-6.png' alt='' width='540' height='400' /></p> +<div class='input'> +<span class="comment"># Show the observed variables separately</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="argument">sep_obs</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">lpos</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"topright"</span><span class="keyword">,</span> <span class="string">"bottomright"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<p><img src='plot.mkinfit-8.png' alt='' width='540' height='400' /></p> +<div class='input'> +<span class="comment"># Show the observed variables separately, with residuals</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="argument">sep_obs</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">show_residuals</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">lpos</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"topright"</span><span class="keyword">,</span> <span class="string">"bottomright"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">show_errmin</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span></div> +<p><img src='plot.mkinfit-10.png' alt='' width='540' height='400' /></p> +<div class='input'> +<span class="comment"># The same can be obtained with less typing, using the convenience function plot_sep</span> +<span class="functioncall"><a href='plot.mkinfit.html'>plot_sep</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="argument">lpos</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"topright"</span><span class="keyword">,</span> <span class="string">"bottomright"</span><span class="keyword">)</span><span class="keyword">)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>plot.mkinfit</li><li>plot_sep</li> + </ul> + <ul> + + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/plot.mmkin-2.png b/docs/plot.mmkin-2.png Binary files differnew file mode 100644 index 00000000..a26e413f --- /dev/null +++ b/docs/plot.mmkin-2.png diff --git a/docs/plot.mmkin-4.png b/docs/plot.mmkin-4.png Binary files differnew file mode 100644 index 00000000..f23ed172 --- /dev/null +++ b/docs/plot.mmkin-4.png diff --git a/docs/plot.mmkin-6.png b/docs/plot.mmkin-6.png Binary files differnew file mode 100644 index 00000000..dc24d92f --- /dev/null +++ b/docs/plot.mmkin-6.png diff --git a/docs/plot.mmkin.html b/docs/plot.mmkin.html new file mode 100644 index 00000000..24b0d60c --- /dev/null +++ b/docs/plot.mmkin.html @@ -0,0 +1,158 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>plot.mmkin. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="comment"># S3 method for mmkin</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="argument">main</span> <span class="argument">=</span> <span class="string">"auto"</span><span class="keyword">,</span> <span class="argument">legends</span> <span class="argument">=</span> <span class="number">1</span><span class="keyword">,</span> <span class="argument">errmin_var</span> <span class="argument">=</span> <span class="string">"All data"</span><span class="keyword">,</span> <span class="argument">errmin_digits</span> <span class="argument">=</span> <span class="number">3</span><span class="keyword">,</span> + <span class="argument">cex</span> <span class="argument">=</span> <span class="number">0.7</span><span class="keyword">,</span> <span class="argument">rel.height.middle</span> <span class="argument">=</span> <span class="number">0.9</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>x</dt> + <dd> + An object of class <code><a href='mmkin.html'>mmkin</a></code>, with either one row or one column. +</dd> + <dt>main</dt> + <dd> + The main title placed on the outer margin of the plot. +</dd> + <dt>legends</dt> + <dd> + An index for the fits for which legends should be shown. +</dd> + <dt>errmin_var</dt> + <dd> + The variable for which the FOCUS chi2 error value should be shown. +</dd> + <dt>errmin_digits</dt> + <dd> + The number of significant digits for rounding the FOCUS chi2 error percentage. +</dd> + <dt>cex</dt> + <dd> + Passed to the plot functions and <code><a href='http://www.rdocumentation.org/packages/graphics/topics/mtext'>mtext</a></code>. +</dd> + <dt>rel.height.middle</dt> + <dd> + The relative height of the middle plot, if more than two rows of plots are shown. +</dd> + <dt>...</dt> + <dd> + Further arguments passed to <code><a href='plot.mkinfit.html'>plot.mkinfit</a></code> and <code><a href='mkinresplot.html'>mkinresplot</a></code>. +</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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="Value"> + <h2>Value</h2> + + <p><dl> + The function is called for its side effect. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="comment"># Only use one core not to offend CRAN checks, use Levenberg-Marquardt for speed</span> + <span class="symbol">fits</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mmkin.html'>mmkin</a></span><span class="keyword">(</span><span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"FOMC"</span><span class="keyword">,</span> <span class="string">"HS"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="string">"FOCUS B"</span> <span class="argument">=</span> <span class="symbol">FOCUS_2006_B</span><span class="keyword">,</span> <span class="string">"FOCUS C"</span> <span class="argument">=</span> <span class="symbol">FOCUS_2006_C</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">cores</span> <span class="argument">=</span> <span class="number">1</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">method.modFit</span> <span class="argument">=</span> <span class="string">"Marq"</span><span class="keyword">)</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">fits</span><span class="keyword">[</span><span class="keyword">,</span> <span class="string">"FOCUS C"</span><span class="keyword">]</span><span class="keyword">)</span></div> +<p><img src='plot.mmkin-2.png' alt='' width='540' height='400' /></p> +<div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">fits</span><span class="keyword">[</span><span class="string">"FOMC"</span><span class="keyword">,</span> <span class="keyword">]</span><span class="keyword">)</span></div> +<p><img src='plot.mmkin-4.png' alt='' width='540' height='400' /></p> +<div class='input'> + <span class="comment"># We can also plot a single fit, if we like the way mmkin works, but then the plot </span> + <span class="comment"># height should be smaller than the plot width (this is not possible for the html pages</span> + <span class="comment"># generated by staticdocs, as far as I know).</span> + <span class="functioncall"><a href='http://www.rdocumentation.org/packages/graphics/topics/plot'>plot</a></span><span class="keyword">(</span><span class="symbol">fits</span><span class="keyword">[</span><span class="string">"FOMC"</span><span class="keyword">,</span> <span class="string">"FOCUS C"</span><span class="keyword">]</span><span class="keyword">)</span> <span class="comment"># same as plot(fits[1, 2])</span></div> +<p><img src='plot.mmkin-6.png' alt='' width='540' height='400' /></p></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>plot.mmkin</li> + </ul> + <ul> + + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/print.mkinds.html b/docs/print.mkinds.html new file mode 100644 index 00000000..308744c1 --- /dev/null +++ b/docs/print.mkinds.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>print.mkinds. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Print mkinds objects +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="comment"># S3 method for mkinds</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>x</dt> + <dd> + An <code><a href='mkinds.html'>mkinds</a></code> object. + </dd> + <dt>...</dt> + <dd> + Not used. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Print mkinds objects.</p> + + </div> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>print.mkinds</li> + </ul> + <ul> + + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/print.mkinmod.html b/docs/print.mkinmod.html new file mode 100644 index 00000000..4ad7737b --- /dev/null +++ b/docs/print.mkinmod.html @@ -0,0 +1,101 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>print.mkinmod. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Print mkinmod objects +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="comment"># S3 method for mkinmod</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>x</dt> + <dd> + An <code><a href='mkinmod.html'>mkinmod</a></code> object. + </dd> + <dt>...</dt> + <dd> + Not used. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Print mkinmod objects in a way that the user finds his way to get to its components.</p> + + </div> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>print.mkinmod</li> + </ul> + <ul> + + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/reference.html b/docs/reference.html new file mode 100644 index 00000000..df1bd9a8 --- /dev/null +++ b/docs/reference.html @@ -0,0 +1,288 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>Function reference. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <div class="row"> + <div class="span8"> + <h2>Function reference</h2> + + <h3>Main functions</h3> + <p>Essential functionality</p> + + + <ul class="index"> + + <li> + <code><a href="mkinmod.html">mkinmod</a></code><br /> + Function to set up a kinetic model with one or more state variables +</li> + + <li> + <code><a href="mkinfit.html">mkinfit</a></code><br /> + Fit a kinetic model to data with one or more state variables +</li> + + <li> + <code><a href="mmkin.html">mmkin</a></code><br /> + Fit one or more kinetic models with one or more state variables to one or more datasets +</li> + + </ul> + <h3>Show results</h3> + <p>Functions working on mkinfit objects</p> + + + <ul class="index"> + + <li> + <code><a href="plot.mkinfit.html">plot.mkinfit</a></code>(plot_sep)<br /> + Plot the observed data and the fitted model of an mkinfit object +</li> + + <li> + <code><a href="summary.mkinfit.html">summary.mkinfit</a></code>(print.summary.mkinfit)<br /> + Summary method for class "mkinfit" +</li> + + <li> + <code><a href="mkinresplot.html">mkinresplot</a></code><br /> + Function to plot residuals stored in an mkin object +</li> + + <li> + <code><a href="mkinparplot.html">mkinparplot</a></code><br /> + Function to plot the confidence intervals obtained using + <code><a href='mkinfit.html'>mkinfit</a></code> +</li> + + <li> + <code><a href="endpoints.html">endpoints</a></code><br /> +Function to calculate endpoints for further use from kinetic models fitted with mkinfit +</li> + + <li> + <code><a href="mkinerrmin.html">mkinerrmin</a></code><br /> +Calculate the minimum error to assume in order to pass the variance test +</li> + + </ul> + <h3>Work with mmkin objects</h3> + <p>Functions working with aggregated results</p> + + + <ul class="index"> + + <li> + <code><a href="Extract.mmkin.html">[.mmkin</a></code><br />Subsetting method for mmkin objects</li> + + <li> + <code><a href="plot.mmkin.html">plot.mmkin</a></code><br /> + Plot model fits (observed and fitted) and the residuals for a row or column of an mmkin object +</li> + + </ul> + <h3>Datasets and known results</h3> + + + <ul class="index"> + + <li> + <code><a href="FOCUS_2006_datasets.html">FOCUS_2006_datasets</a></code>(FOCUS_2006_A, FOCUS_2006_B, FOCUS_2006_C, FOCUS_2006_D, FOCUS_2006_E, FOCUS_2006_F)<br /> +Datasets A to F from the FOCUS Kinetics report from 2006 +</li> + + <li> + <code><a href="FOCUS_2006_SFO_ref_A_to_F.html">FOCUS_2006_SFO_ref_A_to_F</a></code><br /> +Results of fitting the SFO model to Datasets A to F of FOCUS (2006) +</li> + + <li> + <code><a href="FOCUS_2006_FOMC_ref_A_to_F.html">FOCUS_2006_FOMC_ref_A_to_F</a></code><br /> +Results of fitting the FOMC model to Datasets A to F of FOCUS (2006) +</li> + + <li> + <code><a href="FOCUS_2006_HS_ref_A_to_F.html">FOCUS_2006_HS_ref_A_to_F</a></code><br /> +Results of fitting the HS model to Datasets A to F of FOCUS (2006) +</li> + + <li> + <code><a href="FOCUS_2006_DFOP_ref_A_to_B.html">FOCUS_2006_DFOP_ref_A_to_B</a></code><br /> +Results of fitting the DFOP model to Datasets A to B of FOCUS (2006) +</li> + + <li> + <code><a href="mccall81_245T.html">mccall81_245T</a></code><br /> + Datasets on aerobic soil metabolism of 2,4,5-T in six soils +</li> + + <li> + <code><a href="schaefer07_complex_case.html">schaefer07_complex_case</a></code>(schaefer07_complex_results)<br /> + Metabolism data set used for checking the software quality of KinGUI +</li> + + <li> + <code><a href="synthetic_data_for_UBA.html">synthetic_data_for_UBA_2014</a></code><br /> + Synthetic datasets for one parent compound with two metabolites +</li> + + </ul> + <h3>Helper functions</h3> + + + <ul class="index"> + + <li> + <code><a href="mkin_wide_to_long.html">mkin_wide_to_long</a></code><br /> + Convert a dataframe with observations over time into long format +</li> + + <li> + <code><a href="mkin_long_to_wide.html">mkin_long_to_wide</a></code><br /> + Convert a dataframe from long to wide format +</li> + + <li> + <code><a href="mkinsub.html">mkinsub</a></code><br /> + Function to set up a kinetic submodel for one state variable +</li> + + <li> + <code><a href="mkinds.html">mkinds</a></code><br />A dataset class for mkin</li> + + <li> + <code><a href="print.mkinds.html">print.mkinds</a></code><br /> + Print mkinds objects +</li> + + <li> + <code><a href="print.mkinmod.html">print.mkinmod</a></code><br /> + Print mkinmod objects +</li> + + <li> + <code><a href="mkinpredict.html">mkinpredict</a></code><br /> + Produce predictions from a kinetic model using specific parameters +</li> + + <li> + <code><a href="transform_odeparms.html">transform_odeparms</a></code>(backtransform_odeparms)<br /> + Functions to transform and backtransform kinetic parameters for fitting +</li> + + <li> + <code><a href="ilr.html">ilr</a></code>(invilr)<br /> + Function to perform isometric log-ratio transformation +</li> + + <li> + <code><a href="geometric_mean.html">geometric_mean</a></code><br /> Calculate the geometric mean </li> + + </ul> + <h3>Analytical solutions</h3> + <p>Parent only model solutions</p> + + + <ul class="index"> + + <li> + <code><a href="SFO.solution.html">SFO.solution</a></code><br /> Single First-Order kinetics </li> + + <li> + <code><a href="FOMC.solution.html">FOMC.solution</a></code><br /> First-Order Multi-Compartment kinetics </li> + + <li> + <code><a href="DFOP.solution.html">DFOP.solution</a></code><br /> +Double First-Order in Parallel kinetics +</li> + + <li> + <code><a href="SFORB.solution.html">SFORB.solution</a></code><br /> Single First-Order Reversible Binding kinetics </li> + + <li> + <code><a href="HS.solution.html">HS.solution</a></code><br /> Hockey-Stick kinetics </li> + + <li> + <code><a href="IORE.solution.html">IORE.solution</a></code><br /> Indeterminate order rate equation kinetics </li> + + </ul> + <h3>Deprecated functions</h3> + <p>Functions that have been superseeded</p> + + + <ul class="index"> + + <li> + <code><a href="mkinplot.html">mkinplot</a></code><br /> + Plot the observed data and the fitted model of an mkinfit object +</li> + + </ul> + <h3>Other</h3> + + + <ul class="index"> + + <li> + <code><a href="add_err.html">add_err</a></code><br /> + Add normally distributed errors to simulated kinetic degradation data +</li> + + </ul> + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/schaefer07_complex_case.html b/docs/schaefer07_complex_case.html new file mode 100644 index 00000000..23ed3a26 --- /dev/null +++ b/docs/schaefer07_complex_case.html @@ -0,0 +1,134 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>schaefer07_complex_case. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Metabolism data set used for checking the software quality of KinGUI +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='http://www.rdocumentation.org/packages/utils/topics/data'>data</a></span><span class="keyword">(</span><span class="symbol">schaefer07_complex_case</span><span class="keyword">)</span></pre> + + <div class="Description"> + <h2>Description</h2> + + <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="Format"> + <h2>Format</h2> + + <p>The data set is a data frame with 8 observations on the following 6 variables. + <dl> + <dt><code>time</code></dt><dd>a numeric vector</dd></p> + + <p><dt><code>parent</code></dt><dd>a numeric vector</dd></p> + + <p><dt><code>A1</code></dt><dd>a numeric vector</dd></p> + + <p><dt><code>B1</code></dt><dd>a numeric vector</dd></p> + + <p><dt><code>C1</code></dt><dd>a numeric vector</dd></p> + + <p><dt><code>A2</code></dt><dd>a numeric vector</dd></p> + + <p></dl></p> + + <p>The results are a data frame with 14 results for different parameter values</p> + + </div> + + <div class="References"> + <h2>References</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> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="symbol">data</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkin_wide_to_long.html'>mkin_wide_to_long</a></span><span class="keyword">(</span><span class="symbol">schaefer07_complex_case</span><span class="keyword">,</span> <span class="argument">time</span> <span class="argument">=</span> <span class="string">"time"</span><span class="keyword">)</span> +<span class="symbol">model</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span> + <span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/c'>c</a></span><span class="keyword">(</span><span class="string">"A1"</span><span class="keyword">,</span> <span class="string">"B1"</span><span class="keyword">,</span> <span class="string">"C1"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">sink</span> <span class="argument">=</span> <span class="number">FALSE</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">A1</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="string">"A2"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">B1</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">C1</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">A2</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">,</span> <span class="argument">use_of_ff</span> <span class="argument">=</span> <span class="string">"max"</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'><span class="comment">## Not run: mkinfit(model, data, plot=TRUE)</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>schaefer07_complex_case</li><li>schaefer07_complex_results</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/summary.mkinfit.html b/docs/summary.mkinfit.html new file mode 100644 index 00000000..574c5c07 --- /dev/null +++ b/docs/summary.mkinfit.html @@ -0,0 +1,259 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>summary.mkinfit. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Summary method for class "mkinfit" +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="comment"># S3 method for mkinfit</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/summary'>summary</a></span><span class="keyword">(</span><span class="symbol">object</span><span class="keyword">,</span> <span class="argument">data</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">distimes</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">alpha</span> <span class="argument">=</span> <span class="number">0.05</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span> +<span class="comment"># S3 method for summary.mkinfit</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/print'>print</a></span><span class="keyword">(</span><span class="symbol">x</span><span class="keyword">,</span> <span class="argument">digits</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/Extremes'>max</a></span><span class="keyword">(</span><span class="number">3</span><span class="keyword">,</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/options'>getOption</a></span><span class="keyword">(</span><span class="string">"digits"</span><span class="keyword">)</span> <span class="keyword">-</span> <span class="number">3</span><span class="keyword">)</span><span class="keyword">,</span> <span class="symbol">...</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>object</dt> + <dd> + an object of class <code><a href='mkinfit.html'>mkinfit</a></code>. +</dd> + <dt>x</dt> + <dd> + an object of class <code>summary.mkinfit</code>. +</dd> + <dt>data</dt> + <dd> + logical, indicating whether the data should be included in the summary. +</dd> + <dt>distimes</dt> + <dd> + logical, indicating whether DT50 and DT90 values should be included. +</dd> + <dt>alpha</dt> + <dd> + error level for confidence interval estimation from t distribution +</dd> + <dt>digits</dt> + <dd> + Number of digits to use for printing +</dd> + <dt>...</dt> + <dd> + optional arguments passed to methods like <code>print</code>. +</dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <p>Lists model equations, the summary as returned by <code><a href='http://www.rdocumentation.org/packages/FME/topics/modFit'>summary.modFit</a></code>, + the chi2 error levels calculated according to FOCUS guidance (2006) as far + as defined therein, and optionally the data, consisting of observed, predicted + and residual values.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + The summary function returns a list derived from + <code><a href='http://www.rdocumentation.org/packages/FME/topics/modFit'>summary.modFit</a></code>, with components, among others + <dt>version, Rversion</dt><dd>The mkin and R versions used</dd></p> + + <p><dt>date.fit, date.summary</dt><dd>The dates where the fit and the summary were produced</dd></p> + + <p><dt>use_of_ff</dt><dd>Was maximum or minimum use made of formation fractions</dd></p> + + <p><dt>residuals, residualVariance, sigma, modVariance, df</dt><dd>As in summary.modFit</dd></p> + + <p><dt>cov.unscaled, cov.scaled, info, niter, stopmess, par</dt><dd>As in summary.modFit</dd></p> + + <p><dt>bpar</dt><dd>Optimised and backtransformed parameters</dd></p> + + <p><dt>diffs </dt><dd>The differential equations used in the model</dd></p> + + <p><dt>data </dt><dd>The data (see Description above).</dd></p> + + <p><dt>start </dt><dd>The starting values and bounds, if applicable, for optimised parameters.</dd></p> + + <p><dt>fixed </dt><dd>The values of fixed parameters.</dd></p> + + <p><dt>errmin </dt><dd>The chi2 error levels for each observed variable.</dd></p> + + <p><dt>bparms.ode </dt><dd>All backtransformed ODE parameters, for use as starting parameters for + related models.</dd></p> + + <p><dt>ff </dt><dd>The estimated formation fractions derived from the fitted model.</dd></p> + + <p><dt>distimes </dt><dd>The DT50 and DT90 values for each observed variable.</dd></p> + + <p><dt>SFORB</dt><dd>If applicable, eigenvalues of SFORB components of the model.</dd></p> + + <p>The print method is called for its side effect, i.e. printing the summary. +</dl></p> + + </div> + + <div class="References"> + <h2>References</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://focus.jrc.ec.europa.eu/dk'>http://focus.jrc.ec.europa.eu/dk</a></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/summary'>summary</a></span><span class="keyword">(</span><span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span><span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_A</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span><span class="keyword">)</span></div> +<div class='output'>mkin version: 0.9.44.9000 +R version: 3.3.1 +Date of fit: Sat Sep 10 05:53:12 2016 +Date of summary: Sat Sep 10 05:53:12 2016 + +Equations: +d_parent = - k_parent_sink * parent + +Model predictions using solution type analytical + +Fitted with method Port using 35 model solutions performed in 0.09 s + +Weighting: none + +Starting values for parameters to be optimised: + value type +parent_0 101.24 state +k_parent_sink 0.10 deparm + +Starting values for the transformed parameters actually optimised: + value lower upper +parent_0 101.240000 -Inf Inf +log_k_parent_sink -2.302585 -Inf Inf + +Fixed parameter values: +None + +Optimised, transformed parameters with symmetric confidence intervals: + Estimate Std. Error Lower Upper +parent_0 109.200 4.3910 98.410 119.900 +log_k_parent_sink -3.291 0.1152 -3.573 -3.009 + +Parameter correlation: + parent_0 log_k_parent_sink +parent_0 1.000 0.575 +log_k_parent_sink 0.575 1.000 + +Residual standard error: 6.08 on 6 degrees of freedom + +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 24.860 1.394e-07 98.41000 119.90000 +k_parent_sink 0.03722 8.679 6.457e-05 0.02807 0.04934 + +Chi2 error levels in percent: + err.min n.optim df +All data 8.385 2 6 +parent 8.385 2 6 + +Resulting formation fractions: + ff +parent_sink 1 + +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 +</div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>summary.mkinfit</li><li>print.summary.mkinfit</li> + </ul> + <ul> + <li> utilities </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/synthetic_data_for_UBA.html b/docs/synthetic_data_for_UBA.html new file mode 100644 index 00000000..1a29a7b2 --- /dev/null +++ b/docs/synthetic_data_for_UBA.html @@ -0,0 +1,156 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>synthetic_data_for_UBA_2014. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=""> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Synthetic datasets for one parent compound with two metabolites +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="symbol">synthetic_data_for_UBA_2014</span></pre> + + <div class="Description"> + <h2>Description</h2> + + <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.</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="Format"> + <h2>Format</h2> + + <p>A list containing datasets in the form internally used by the 'gmkin' package. + The list has twelfe components. Each of the components is one dataset that has, + among others, the following components + <dl> + <dt><code>title</code></dt><dd>The name of the dataset, e.g. <code>SFO_lin_a</code></dd></p> + + <p><dt><code>data</code></dt><dd>A data frame with the data in the form expected by <code><a href='mkinfit.html'>mkinfit</a></code></dd></p> + + <p></dl></p> + + <p></p> + + </div> + + <div class="Source"> + <h2>Source</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> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># m_synth_SFO_lin <- mkinmod(parent = list(type = "SFO", to = "M1"),</span> +<span class="comment"># M1 = list(type = "SFO", to = "M2"),</span> +<span class="comment"># M2 = list(type = "SFO"), use_of_ff = "max")</span> +<span class="comment"># </span> +<span class="comment"># </span> +<span class="comment"># m_synth_SFO_par <- mkinmod(parent = list(type = "SFO", to = c("M1", "M2"),</span> +<span class="comment"># sink = FALSE),</span> +<span class="comment"># M1 = list(type = "SFO"),</span> +<span class="comment"># M2 = list(type = "SFO"), use_of_ff = "max")</span> +<span class="comment"># </span> +<span class="comment"># m_synth_DFOP_lin <- mkinmod(parent = list(type = "DFOP", to = "M1"),</span> +<span class="comment"># M1 = list(type = "SFO", to = "M2"),</span> +<span class="comment"># M2 = list(type = "SFO"), use_of_ff = "max")</span> +<span class="comment"># </span> +<span class="comment"># m_synth_DFOP_par <- mkinmod(parent = list(type = "DFOP", to = c("M1", "M2"),</span> +<span class="comment"># sink = FALSE),</span> +<span class="comment"># M1 = list(type = "SFO"),</span> +<span class="comment"># M2 = list(type = "SFO"), use_of_ff = "max")</span> +<span class="comment"># </span> +<span class="comment"># mkinfit(m_synth_SFO_lin, synthetic_data_for_UBA_2014[[1]]$data)</span> +<span class="comment">## ---------------------------------------------</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>synthetic_data_for_UBA_2014</li> + </ul> + <ul> + <li>datasets</li> + </ul> --> + + + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/docs/transform_odeparms.html b/docs/transform_odeparms.html new file mode 100644 index 00000000..6f48b1fa --- /dev/null +++ b/docs/transform_odeparms.html @@ -0,0 +1,281 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<title>transform_odeparms. mkin 0.9.44.9000</title> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="author" content=" + Johannes Ranke +"> + +<link href="css/bootstrap.css" rel="stylesheet"> +<link href="css/bootstrap-responsive.css" rel="stylesheet"> +<link href="css/highlight.css" rel="stylesheet"> +<link href="css/staticdocs.css" rel="stylesheet"> + +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + processEscapes: true + } + }); +</script> +<script type="text/javascript" + src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> +</script> + </head> + + <body> + <div class="navbar"> + <div class="navbar-inner"> + <div class="container"> + <a class="brand" href="index.html">mkin 0.9.44.9000</a> + <div class="nav"> + <ul class="nav"> + <li><a href="index.html">Home</a></li> + <li><a href="reference.html">Reference</a></li> + </ul> + </div> + </div> + </div> +</div> + + + <div class="container"> + <header> + + </header> + + <h1> + Functions to transform and backtransform kinetic parameters for fitting +</h1> + +<div class="row"> + <div class="span8"> + <h2>Usage</h2> + <pre><span class="functioncall"><a href='transform_odeparms.html'>transform_odeparms</a></span><span class="keyword">(</span><span class="symbol">parms</span><span class="keyword">,</span> <span class="symbol">mkinmod</span><span class="keyword">,</span> + <span class="argument">transform_rates</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">transform_fractions</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> +<span class="functioncall"><a href='transform_odeparms.html'>backtransform_odeparms</a></span><span class="keyword">(</span><span class="symbol">transparms</span><span class="keyword">,</span> <span class="symbol">mkinmod</span><span class="keyword">,</span> + <span class="argument">transform_rates</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">,</span> <span class="argument">transform_fractions</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span></pre> + + <h2>Arguments</h2> + <dl> + <dt>parms</dt> + <dd> + Parameters of kinetic models as used in the differential equations. + </dd> + <dt>transparms</dt> + <dd> + Transformed parameters of kinetic models as used in the fitting procedure. + </dd> + <dt>mkinmod</dt> + <dd> + The kinetic model of class <code><a href='mkinmod.html'>mkinmod</a></code>, containing the names of + the model variables that are needed for grouping the formation fractions + before <code><a href='ilr.html'>ilr</a></code> transformation, the parameter names and + the information if the pathway to sink is included in the model. + </dd> + <dt>transform_rates</dt> + <dd> + 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. + </dd> + <dt>transform_fractions</dt> + <dd> + 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 and HS models are also + transformed, as they can also be seen as compositional data. The + transformation used for these transformations is the <code><a href='ilr.html'>ilr</a></code> + transformation. + </dd> + </dl> + + <div class="Description"> + <h2>Description</h2> + + <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 paramters 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 <code><a href='ilr.html'>ilr</a></code> transformation is used.</p> + + <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 <code><a href='mkinfit.html'>mkinfit</a></code>.</p> + + </div> + + <div class="Value"> + <h2>Value</h2> + + <p><dl> + A vector of transformed or backtransformed parameters with the same names + as the original parameters. +</dl></p> + + </div> + + <h2 id="examples">Examples</h2> + <pre class="examples"><div class='input'><span class="symbol">SFO_SFO</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinmod.html'>mkinmod</a></span><span class="keyword">(</span> + <span class="argument">parent</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">,</span> <span class="argument">to</span> <span class="argument">=</span> <span class="string">"m1"</span><span class="keyword">,</span> <span class="argument">sink</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span><span class="keyword">,</span> + <span class="argument">m1</span> <span class="argument">=</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/list'>list</a></span><span class="keyword">(</span><span class="argument">type</span> <span class="argument">=</span> <span class="string">"SFO"</span><span class="keyword">)</span><span class="keyword">)</span></div> +<strong class='message'>Successfully compiled differential equation model from auto-generated C code.</strong> +<div class='input'><span class="comment"># Fit the model to the FOCUS example dataset D using defaults</span> +<span class="symbol">fit</span> <span class="assignement"><-</span> <span class="functioncall"><a href='mkinfit.html'>mkinfit</a></span><span class="keyword">(</span><span class="symbol">SFO_SFO</span><span class="keyword">,</span> <span class="symbol">FOCUS_2006_D</span><span class="keyword">,</span> <span class="argument">quiet</span> <span class="argument">=</span> <span class="number">TRUE</span><span class="keyword">)</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/summary'>summary</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">,</span> <span class="argument">data</span><span class="argument">=</span><span class="number">FALSE</span><span class="keyword">)</span> <span class="comment"># See transformed and backtransformed parameters</span></div> +<div class='output'>mkin version: 0.9.44.9000 +R version: 3.3.1 +Date of fit: Sat Sep 10 05:53:13 2016 +Date of summary: Sat Sep 10 05:53:13 2016 + +Equations: +d_parent = - k_parent_sink * parent - k_parent_m1 * parent +d_m1 = + k_parent_m1 * parent - k_m1_sink * m1 + +Model predictions using solution type deSolve + +Fitted with method Port using 153 model solutions performed in 0.634 s + +Weighting: none + +Starting values for parameters to be optimised: + value type +parent_0 100.7500 state +k_parent_sink 0.1000 deparm +k_parent_m1 0.1001 deparm +k_m1_sink 0.1002 deparm + +Starting values for the transformed parameters actually optimised: + value lower upper +parent_0 100.750000 -Inf Inf +log_k_parent_sink -2.302585 -Inf Inf +log_k_parent_m1 -2.301586 -Inf Inf +log_k_m1_sink -2.300587 -Inf Inf + +Fixed parameter values: + value type +m1_0 0 state + +Optimised, transformed parameters with symmetric confidence intervals: + Estimate Std. Error Lower Upper +parent_0 99.600 1.61400 96.330 102.900 +log_k_parent_sink -3.038 0.07826 -3.197 -2.879 +log_k_parent_m1 -2.980 0.04124 -3.064 -2.897 +log_k_m1_sink -5.248 0.13610 -5.523 -4.972 + +Parameter correlation: + parent_0 log_k_parent_sink log_k_parent_m1 log_k_m1_sink +parent_0 1.00000 0.6075 -0.06625 -0.1701 +log_k_parent_sink 0.60752 1.0000 -0.08740 -0.6253 +log_k_parent_m1 -0.06625 -0.0874 1.00000 0.4716 +log_k_m1_sink -0.17006 -0.6253 0.47163 1.0000 + +Residual standard error: 3.211 on 36 degrees of freedom + +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.600000 61.720 2.024e-38 96.330000 1.029e+02 +k_parent_sink 0.047920 12.780 3.050e-15 0.040890 5.616e-02 +k_parent_m1 0.050780 24.250 3.407e-24 0.046700 5.521e-02 +k_m1_sink 0.005261 7.349 5.758e-09 0.003992 6.933e-03 + +Chi2 error levels in percent: + err.min n.optim df +All data 6.398 4 15 +parent 6.827 3 6 +m1 4.490 1 9 + +Resulting formation fractions: + ff +parent_sink 0.4855 +parent_m1 0.5145 +m1_sink 1.0000 + +Estimated disappearance times: + DT50 DT90 +parent 7.023 23.33 +m1 131.761 437.70 +</div> +<div class='input'> +<span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># fit.2 <- mkinfit(SFO_SFO, FOCUS_2006_D, transform_rates = FALSE)</span> +<span class="comment"># summary(fit.2, data=FALSE) </span> +<span class="comment">## ---------------------------------------------</span> + +<span class="symbol">initials</span> <span class="assignement"><-</span> <span class="symbol">fit</span><span class="keyword">$</span><span class="symbol">start</span><span class="keyword">$</span><span class="symbol">value</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/names'>names</a></span><span class="keyword">(</span><span class="symbol">initials</span><span class="keyword">)</span> <span class="assignement"><-</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/colnames'>rownames</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">$</span><span class="symbol">start</span><span class="keyword">)</span> +<span class="symbol">transformed</span> <span class="assignement"><-</span> <span class="symbol">fit</span><span class="keyword">$</span><span class="symbol">start_transformed</span><span class="keyword">$</span><span class="symbol">value</span> +<span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/names'>names</a></span><span class="keyword">(</span><span class="symbol">transformed</span><span class="keyword">)</span> <span class="assignement"><-</span> <span class="functioncall"><a href='http://www.rdocumentation.org/packages/base/topics/colnames'>rownames</a></span><span class="keyword">(</span><span class="symbol">fit</span><span class="keyword">$</span><span class="symbol">start_transformed</span><span class="keyword">)</span> +<span class="functioncall"><a href='transform_odeparms.html'>transform_odeparms</a></span><span class="keyword">(</span><span class="symbol">initials</span><span class="keyword">,</span> <span class="symbol">SFO_SFO</span><span class="keyword">)</span></div> +<div class='output'> parent_0 log_k_parent_sink log_k_parent_m1 log_k_m1_sink + 100.750000 -2.302585 -2.301586 -2.300587 +</div> +<div class='input'><span class="functioncall"><a href='transform_odeparms.html'>backtransform_odeparms</a></span><span class="keyword">(</span><span class="symbol">transformed</span><span class="keyword">,</span> <span class="symbol">SFO_SFO</span><span class="keyword">)</span></div> +<div class='output'> parent_0 k_parent_sink k_parent_m1 k_m1_sink + 100.7500 0.1000 0.1001 0.1002 +</div> +<div class='input'> +<span class="comment">## Not run: ------------------------------------</span> +<span class="comment"># # The case of formation fractions</span> +<span class="comment"># SFO_SFO.ff <- mkinmod(</span> +<span class="comment"># parent = list(type = "SFO", to = "m1", sink = TRUE),</span> +<span class="comment"># m1 = list(type = "SFO"),</span> +<span class="comment"># use_of_ff = "max")</span> +<span class="comment"># </span> +<span class="comment"># fit.ff <- mkinfit(SFO_SFO.ff, FOCUS_2006_D)</span> +<span class="comment"># summary(fit.ff, data = FALSE)</span> +<span class="comment"># initials <- c("f_parent_to_m1" = 0.5)</span> +<span class="comment"># transformed <- transform_odeparms(initials, SFO_SFO.ff)</span> +<span class="comment"># backtransform_odeparms(transformed, SFO_SFO.ff)</span> +<span class="comment"># </span> +<span class="comment"># # And without sink</span> +<span class="comment"># SFO_SFO.ff.2 <- mkinmod(</span> +<span class="comment"># parent = list(type = "SFO", to = "m1", sink = FALSE),</span> +<span class="comment"># m1 = list(type = "SFO"),</span> +<span class="comment"># use_of_ff = "max")</span> +<span class="comment"># </span> +<span class="comment"># </span> +<span class="comment"># fit.ff.2 <- mkinfit(SFO_SFO.ff.2, FOCUS_2006_D)</span> +<span class="comment"># summary(fit.ff.2, data = FALSE)</span> +<span class="comment">## ---------------------------------------------</span></div></pre> + </div> + <div class="span4 sidebar"> + <!-- <ul> + <li>transform_odeparms</li><li>backtransform_odeparms</li> + </ul> + <ul> + <li> manip </li> + </ul> --> + + + + <h2>Author</h2> + + Johannes Ranke + + + </div> +</div> + + <footer> + <p class="pull-right"><a href="#">Back to top</a></p> +<p>Built by <a href="https://github.com/hadley/staticdocs">staticdocs</a>. Styled with <a href="https://getbootstrap.com/2.0.4/">bootstrap</a>.</p> + </footer> + </div> + </body> +</html>
\ No newline at end of file diff --git a/vignettes/FOCUS_D.html b/docs/vignettes/FOCUS_D.html index d02b1b61..94d4f4a3 100644 --- a/vignettes/FOCUS_D.html +++ b/docs/vignettes/FOCUS_D.html @@ -192,8 +192,8 @@ print(FOCUS_2006_D)</code></pre> <pre class="r"><code>summary(fit)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:37 2016 -## Date of summary: Sat Sep 10 04:13:38 2016 +## Date of fit: Sat Sep 10 05:54:26 2016 +## Date of summary: Sat Sep 10 05:54:26 2016 ## ## Equations: ## d_parent = - k_parent_sink * parent - k_parent_m1 * parent @@ -201,7 +201,7 @@ print(FOCUS_2006_D)</code></pre> ## ## Model predictions using solution type deSolve ## -## Fitted with method Port using 153 model solutions performed in 0.643 s +## Fitted with method Port using 153 model solutions performed in 0.65 s ## ## Weighting: none ## diff --git a/vignettes/FOCUS_L.html b/docs/vignettes/FOCUS_L.html index 10d1eb01..26076d0a 100644 --- a/vignettes/FOCUS_L.html +++ b/docs/vignettes/FOCUS_L.html @@ -236,15 +236,15 @@ FOCUS_2006_L1_mkin <- mkin_wide_to_long(FOCUS_2006_L1)</code></pre> summary(m.L1.SFO)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:38 2016 -## Date of summary: Sat Sep 10 04:13:38 2016 +## Date of fit: Sat Sep 10 05:54:26 2016 +## Date of summary: Sat Sep 10 05:54:26 2016 ## ## Equations: ## d_parent = - k_parent_sink * parent ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 37 model solutions performed in 0.086 s +## Fitted with method Port using 37 model solutions performed in 0.087 s ## ## Weighting: none ## @@ -329,8 +329,8 @@ summary(m.L1.SFO)</code></pre> <pre class="r"><code>summary(m.L1.FOMC, data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:39 2016 -## Date of summary: Sat Sep 10 04:13:39 2016 +## Date of fit: Sat Sep 10 05:54:27 2016 +## Date of summary: Sat Sep 10 05:54:27 2016 ## ## ## Warning: Optimisation by method Port did not converge. @@ -342,7 +342,7 @@ summary(m.L1.SFO)</code></pre> ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 188 model solutions performed in 0.443 s +## Fitted with method Port using 188 model solutions performed in 0.444 s ## ## Weighting: none ## @@ -426,15 +426,15 @@ plot(m.L2.FOMC, show_residuals = TRUE, <pre class="r"><code>summary(m.L2.FOMC, data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:40 2016 -## Date of summary: Sat Sep 10 04:13:40 2016 +## Date of fit: Sat Sep 10 05:54:28 2016 +## Date of summary: Sat Sep 10 05:54:28 2016 ## ## Equations: ## d_parent = - (alpha/beta) * 1/((time/beta) + 1) * parent ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 81 model solutions performed in 0.191 s +## Fitted with method Port using 81 model solutions performed in 0.198 s ## ## Weighting: none ## @@ -496,8 +496,8 @@ plot(m.L2.DFOP, show_residuals = TRUE, show_errmin = TRUE, <pre class="r"><code>summary(m.L2.DFOP, data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:41 2016 -## Date of summary: Sat Sep 10 04:13:41 2016 +## Date of fit: Sat Sep 10 05:54:29 2016 +## Date of summary: Sat Sep 10 05:54:29 2016 ## ## Equations: ## d_parent = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * @@ -506,7 +506,7 @@ plot(m.L2.DFOP, show_residuals = TRUE, show_errmin = TRUE, ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 336 model solutions performed in 0.797 s +## Fitted with method Port using 336 model solutions performed in 0.825 s ## ## Weighting: none ## @@ -585,8 +585,8 @@ plot(mm.L3)</code></pre> <pre class="r"><code>summary(mm.L3[["DFOP", 1]])</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:42 2016 -## Date of summary: Sat Sep 10 04:13:42 2016 +## Date of fit: Sat Sep 10 05:54:30 2016 +## Date of summary: Sat Sep 10 05:54:30 2016 ## ## Equations: ## d_parent = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * @@ -595,7 +595,7 @@ plot(mm.L3)</code></pre> ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 137 model solutions performed in 0.326 s +## Fitted with method Port using 137 model solutions performed in 0.319 s ## ## Weighting: none ## @@ -685,15 +685,15 @@ plot(mm.L4)</code></pre> <pre class="r"><code>summary(mm.L4[["SFO", 1]], data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:42 2016 -## Date of summary: Sat Sep 10 04:13:42 2016 +## Date of fit: Sat Sep 10 05:54:30 2016 +## Date of summary: Sat Sep 10 05:54:31 2016 ## ## Equations: ## d_parent = - k_parent_sink * parent ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 46 model solutions performed in 0.106 s +## Fitted with method Port using 46 model solutions performed in 0.107 s ## ## Weighting: none ## @@ -745,15 +745,15 @@ plot(mm.L4)</code></pre> <pre class="r"><code>summary(mm.L4[["FOMC", 1]], data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:42 2016 -## Date of summary: Sat Sep 10 04:13:43 2016 +## Date of fit: Sat Sep 10 05:54:31 2016 +## Date of summary: Sat Sep 10 05:54:31 2016 ## ## Equations: ## d_parent = - (alpha/beta) * 1/((time/beta) + 1) * parent ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 66 model solutions performed in 0.15 s +## Fitted with method Port using 66 model solutions performed in 0.149 s ## ## Weighting: none ## diff --git a/vignettes/FOCUS_Z.pdf b/docs/vignettes/FOCUS_Z.pdf Binary files differindex 27b9951d..06acf802 100644 --- a/vignettes/FOCUS_Z.pdf +++ b/docs/vignettes/FOCUS_Z.pdf diff --git a/vignettes/compiled_models.html b/docs/vignettes/compiled_models.html index 004a808c..97416dc7 100644 --- a/vignettes/compiled_models.html +++ b/docs/vignettes/compiled_models.html @@ -251,21 +251,21 @@ mb.1 <- microbenchmark( print(mb.1)</code></pre> <pre><code>## Unit: milliseconds ## expr min lq mean median uq -## deSolve, not compiled 6507.8296 6549.5160 6597.4319 6591.2024 6642.2330 -## Eigenvalue based 890.5249 917.6589 928.4907 944.7928 947.4735 -## deSolve, compiled 735.4908 742.0363 749.3996 748.5817 756.3540 +## deSolve, not compiled 6438.0110 6444.1220 6460.7839 6450.2330 6472.1703 +## Eigenvalue based 885.8356 892.8422 908.1567 899.8489 919.3173 +## deSolve, compiled 717.8236 722.6525 738.3923 727.4815 748.6767 ## max neval cld -## 6693.2636 3 c -## 950.1543 3 b -## 764.1264 3 a</code></pre> +## 6494.1075 3 c +## 938.7858 3 b +## 769.8719 3 a</code></pre> <pre class="r"><code>autoplot(mb.1)</code></pre> -<p><img src="data:image/png;base64,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" width="672" /></p> -<p>We see that using the compiled model is by a factor of 8.8 faster than using the R version with the default ode solver, and it is even faster than the Eigenvalue based solution implemented in R which does not need iterative solution of the ODEs:</p> +<p><img src="data:image/png;base64,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sX0leYjzPO/VzPbra3/v+//kea9nNl/1bFDtNw2a887hHz1ve2ZzZbgtVvcJaMUioKhKXb0L7+ffyTz+hfyf/Px43hr578J3MtddQLedHaz1hca7dmQG5SH+0ntfa96BPuq9P7vZeob3sXCtv84/h4+07d4UbovVfQJasQgoqlKMgH42v27vz1vjFALq7xn3F+F6//DTtzs5xOm5a9qM09t/5cmnvNPzj5i51777scwz0dV9AlqxCCiqUoyAftH7budrnEpAfb/lP6+t+0QQuU/u7XiIs72z0nmbeVeg7/c+6ncI6Dne+1oymy/nnslf3SegFYuAoirFCOgPvE92vsapBdRKr+/teaM6HuJ/e172E/Q77rjjSN73QF8PXpr7HQLay/OaMpv/kV/K3Oo+Aa1YBBRVKUZAF3jeuszjT33607/IW+MUAjro88MzI38OfyGePMQkz7sqs32pd06rP9HzfpzZnJp5v10EdErbu/C9w22xuk9AKxYBRVWKEdBDH/I+t9NuHvii957X89Y4hYAO987YFO56l+d9p+MhNp/mffgpu930Ua+v77/oeR9abzfXneV5L/kdArop9znQZZnPgYrVfQJasQgoqlKMgPqLgn41Lr336k953rT8NU4hoHd43l/++O4Hlwx7r+fd08khLve891645J4r/8I7y6Zwkt28/faxp2d+8EgG1J9sfxLplpsHep8Lt+XqBLRiEVBUpTgBTV9zWub98fc05r+1cyoBbTk/9577e6/p7BAtl2Sf/vBddvPEmNzu409Gjpi9d2J45tmPvRBuy9UJaMUioKhKcQLq+38c/dkzzzl37LboGqf0JtLj9f9wzpmf+ZcZe/3OD/HMqM9+4JyvTMz9wvsnhv6PMz/wmQvyfhtT9N4j9Z844+ODX85ty9UJaIUioHBWFVWpik7VLQQUzqqiKlXRqbqFgMJZVVSlKjpVtxBQOKuKqlRFp+oWAgpnhe9zd/P3wlcK/l74ykVA4SwCilNFQAGgQAQUAApEQAGgQAQUAApEQAGgQAQUAApEQAGgQAQUAApEQAGgQAQUAApEQAGgQAQUAApEQAGgQAQUAAr0/wHAKCTVltv+ggAAAABJRU5ErkJggg==" width="672" /></p> +<p>We see that using the compiled model is by a factor of 8.9 faster than using the R version with the default ode solver, and it is even faster than the Eigenvalue based solution implemented in R which does not need iterative solution of the ODEs:</p> <pre class="r"><code>rownames(smb.1) <- smb.1$expr smb.1["median"]/smb.1["deSolve, compiled", "median"]</code></pre> <pre><code>## median -## deSolve, not compiled 8.804921 -## Eigenvalue based 1.262110 +## deSolve, not compiled 8.866525 +## Eigenvalue based 1.236937 ## deSolve, compiled 1.000000</code></pre> </div> <div id="benchmark-for-a-model-that-can-not-be-solved-with-eigenvalues" class="section level2"> @@ -286,19 +286,19 @@ smb.1["median"]/smb.1["deSolve, compiled", "median" <pre class="r"><code>smb.2 <- summary(mb.2) print(mb.2)</code></pre> <pre><code>## Unit: seconds -## expr min lq mean median uq -## deSolve, not compiled 13.741831 13.74759 13.815509 13.753350 13.852348 -## deSolve, compiled 1.358402 1.35862 1.368666 1.358838 1.373798 +## expr min lq mean median uq +## deSolve, not compiled 13.446530 13.475187 13.565657 13.50384 13.625221 +## deSolve, compiled 1.334123 1.348677 1.356064 1.36323 1.367035 ## max neval cld -## 13.951345 3 b -## 1.388759 3 a</code></pre> +## 13.746597 3 b +## 1.370839 3 a</code></pre> <pre class="r"><code>smb.2["median"]/smb.2["deSolve, compiled", "median"]</code></pre> <pre><code>## median ## 1 NA ## 2 NA</code></pre> <pre class="r"><code>autoplot(mb.2)</code></pre> -<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAJACAMAAAB7fzyHAAAC8VBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQWFhYXFxcZGRkaGhobGxscHBwdHR0eHh4fHx8gICAiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dJSUlKSkpLS0tNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///81RcESAAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nO3de7wU5Zng8TJeoybGyWTHnZiNu5mdzcxmNqUOrhnNrtlxMm9zPIcTlPsdBBUYRY0RIyMgUVFJABmMiqMYE0cjGg2JFzSKl0mM4kSRqwqKlzMi6gEEDqf+2q7q7nO6qpux3uKp7qrz/L4fP3ZXdz1vV1vJ79N9ug84HgAgEafZBwAAeUVAASAhAgoACRFQAEiIgAJAQgQUABIioACQEAEFgIQIKAAkREABICECCgAJEVAASIiAAkBCBBQAEiKg8X3QAUDKbs97r9nHYC8SBQIaHwEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMpYBfTdBZe8nNY5BPoAAqqMVUBXuO74tM4h0AcQUGWsAnq/6/bbktZJBPKPgCpjG1D3tymdQ6APIKDKWAf052mdRCD/CKgy1gFdnNZJBPKPgCpjHdAr0zqJQP4RUGWsA3phWicRyD8Cqox1QMemdRKB/COgylgHtD2tkwjkHwFVxjqgp6d1EoH8I6DKWAe0X1onEcg/AqqMdUDdzWmdRSD3CKgy9gF9Ka2zCOQeAVXGPqDPpnUWgdwjoMrYB/ShtM4ikHsEVBn7gPLL8MC+EFBl7AN6e1pnEcg9AqqMfUBvSOssArlHQJWxD+jVKZ1EIP8IqDL2Ab08rbMI5B4BVcY+oBekdRaB3COgytgHdEJaZxHIPQKqjH1Ah6R1FoHcI6DK2Ae0Na2zCOQeAVXGPqD8eXbAvhBQZewDenJaZxHIPQKqjH1A3S1pnUYg7wioMgkCuj6t0wjkHQFVJkFAX0jrNAJ5R0CVSRDQJ9M6jUDeEVBlEgR0eVqnEcg7AqpMgoD+S1qnEcg7AqqMbUBPdN0lxWuvb0rpVAJ5RkCVsQ3ot1z3Rx0dvzzplN+ldTKB/CKgytgGtNV153R0tLjuTWmdTCC/CKgytgEd4brf63jBJaBAHQRUGduAnlf8p+MOAgrUQ0CVsQ3o9OKL0I6ZBBSoh4AqYxvQa/w/z24cAQXqIaDK2AZ03inuaR2nE1CgHgKqjHVAC+6Jr7oEFKiHgCpjHdDhrrucgAJ1EVBlrAM61XXnElCgLgKqjHVAZ7ruSAIK1EVAlbEO6CLX7UdAgboIqDLWAb3bLSGgQA0Cqox1QFe67vEEFKiLgCpjHdCNpX4SUKAWAVXGOqC7TiwW9CQCCtRBQJWxDqjXXnz5OZyAAnUQUGXsAzrLdU9YQECBOgioMvYBXXuSe9lPCShQBwFVxj6g3htP7yWgQD0EVJkEAS0ioEA9BFQZAgrIIaDKEFBADgFVhoACcgioMgQUkENAlSGggBwCqgwBBeQQ0Pi2GFN745qrzm0fOm3ROzF3T8e+H6rmHgIKyCGg8dXJVPcCY/qPHmRMy51xdk+BMVsIKNAkBDS+Opn6hWlfXvxPuPVGY56KsXsKCCjQPAQ0vjqZGm9WlK4sMDNj7J6CZcs6CSjQJAQ0vtpMbTems3RtlRn5ybunhoACTUFA41g1a3Tb1IffLMVo09xz2kbO+r1/tdOYNaU99naWSrp6zoQB5819xb/qt2uh+XFw8yYz8OPwaNTGqye2TVz8fp1Fum6f3D75xu1br53QNu72XZ7/rv3Nh6a0jZ69yvPCb+FDy4eOuRcBBeQQ0BjuKJjCyIKZE8ToFy2mfUK7MTf590w2wx/ZWbXnnQXTMqa493KvVLU/mJHd/u23mwXR0bAHW0zr2BYzdGvtIjMuvu+WVjN1yEX+xSLPb+YV5rKbZ/Qv/MQLBTS0fOiYi7rvLtn4kYVfVQX0VptBQIeu4suoZh+DvUh9Ug7oamNu3ul1Xmf8GL3WMuiZbq/72cHmyeJd64ca0zb97vXdpT3XmMJPd3s7bzAD3itVrXtk8BK1e6x/ER4N2dRSuLfL+2CG+UHtIrP2et59xswsXiwzwzy/mQV/gRcHmHXVAQ0tHzpm397yX665wuaZP14V0NqvGQDoC1IO6KV+1ooVnOrH6Nryx+0rzff9i233nF8oRmrwzf5LR2+6uT7Y8yL/lWJQtSXB68E1ZlJ3zWi12Wa+f/Fhy5l7axbZUNzY2HPh+c2cEwwtMTOqAxpaPnTMPgIKoK50A9p9lnk5uPKwH6PJZuwE3xgzpHx/59OLRhkzYnPx6uDyj0RXmGnlqr1qRhfTudjc69Ub7TGsPPjauj01i+zxqi88v5mlV7AbzNDqgFYvHz7m4FnwFh4Qx1v4T7TNmA+DK6/4MTrTVLT27tL93ChzafEFpDEflfccUq5a9ySz1ts7rGWbt4/RwPbKQ3h1F4lcGLO+MrWjKqDVy4ePuRofIgFy+BDpE/XUba0fo0mm6tFnzXijfG21KXzc2761ZmCldneZW7wXzGz/1tBoSLF32yvX6y0SDWjpJer7xnxQFdDq5cPHXI2AAnII6CcbUn47vMKP0RXm+WDj43fe97xR5tflfTqDYg0qp+0xc36ldm8X38PPM7/1bw2NhhTfcW8Irqx7rrPeItGAPhrssMoMqn4LH1o+dMzVCCggh4B+sstLH9p0T/NjdF/5V44WmqWeN9+MKr/1fsKM8fyPboLedF9sFvZEb5pZPXB4l38tNBp2qVnsX+wZXNhed5FIQKcFn/rPMNOrAxpaPnTM1QgoIIeAfrLi2+Cbdno75gdfCdo1ytyyy+t6sND2dvHlZbsZvfzdru5tDww093j+TxwLd+3xv4HU9m5P9B4w55pbg3VCo96yZV29D/GKabm/y9s5z1xWf5FIQM38Hd6ORca8Uh3Q0PKhY65GQAE5BDSGW4wpjCqYpUGMft9qWsadaQor/XteGlssVP/W4r/mBS8KlxhzxtiCaXukp3betv7GvFlaJzRqzK6qh7izODS+zQx+t/4ikYDODo6ncIcX+iJ9aPnQMVchoIAcAhpD91OzxrRNfbbnFyaHnTHums2lu7oenTGp/awpc9eVd332yglt58wNPlqq/Br65ebiykLVo+GAei/PHtc2afEH+1gkEtA3H5ncOmrmi6Vlqn+Vs3f58DH3IqCAHALaLHuCb3YmETQzKQIKyCGgzfLWgKSTBBTICALaLLPnJZ0koEBGENBmeTzpO3gCCmQFAc0fAgpkBAFVhoACcgioMgkCuvmZvQQUqIeAKmMf0LUnuZcRUKAeAqqMfUBnue4JCwgoUAcBVcY+oO2u6w4noEAdBFQZ64DuOtE93j2JgAJ1EFBlrAO6sdhPHwEFahBQZawDutItFZSAAjUIqDLWAb27/Nd5ElCgBgFVxjqgi1y3HwEF6iKgylgHdKbrjiSgQF0EVBnrgE513bkEFKiLgCpjHdARrrucgAJ1EVBlrANacE98lYACdRFQZawDeop7WsffElCgHgKqjG1Ar3Hd1o6xBBSoh4AqYxvQ6a47omMmAQXqIaDK2Ab0vOI/HXcQUKAeAqqMbUBHuO73Ol4goEA9BFQZ24C2uu6cjo4WAgrUQUCVsQ3ot1z3Rx0dvzzplN+ldTKB/CKgytgG9ETXXVK89vqmlE4lkGcEVBnbgBb9S1qnEcg7AqpMgoAuT+s0AnlHQJVJENAn0zqNQN4RUGUSBPSFtE4jkHcEVJkEAV2f1mkE8o6AKpMgoFvSOo1A3hFQZewDenJaZxHIPQKqjH1AT0/rLAK5R0CVsQ9oa1pnEcg9AqqMfUCHpHUWgdwjoMrYB3RCWmcRyD0Cqox9QC9I6ywCuUdAlbEP6OVpnUUg9wioMvYBvTqlkwjkHwFVxj6gN6R1FoHcI6DK2Af0trTOIpB7BFQZ+4D+PK2zCOQeAVXGPqAPp3UWgdwjoMrYB/TZtM4ikHsEVBn7gL6U1lkEco+AKmMf0M1pnUUg9wioMtYB7ZfWSQTyj4AqYx1Q/jQ7YJ8IqDLWAW1P6yQC+UdAlbEO6Ni0TiKQfwRUGeuAXpjWSQTyj4AqYx3QK9M6iUD+EVBlrAO6OK2TCOQfAVXGOqD8KjywTwRUGeuA/jalcwj0AQRUGduA9tuS1kkE8o+AKmMV0BWuOz6tcwj0AQRUGauAvjv/uy+ndQ6BPoCAKmMVUAD/IQKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5BBQZQgoIIeAKkNAATkEVBkCCsghoMoQUEAOAVWGgAJyCKgyBBSQQ0CVIaCAHAKqDAEF5DQ7oPe3zE4wFYkCAY2PgAJymh3QM1z3efupSBQIaHwEFJDT7ICe6ro/t5+KRIGAxkdAATkZCOhN9lORKBDQ+AgoICcDAb3efioSBQIaHwEF5GQgoDPtpyJRIKDxEVBATgYC+l37qUgUCGh8BBSQk4GAnmc/FYkCAY2PgAJyMhDQcfZTkSgQ0PgIKCAnAwEdaj8ViQIBjY+AAnIyENB2+6lIFAhofAQUkJOBgBbspyJRIKDxEVBATgYCerr9VCQKBDQ+AgrIyUBAv2k/FYkCAY2PgAJyMhDQfvZTkSgQ0PgIKCAnAwF137GeikSBgMZHQAE5WQjoZuupSBQIaHwEFJCThYBusJ6KRIGAxkdAATlZCOhq66lIFAhofAQUkJOFgL5gPRWJAgGNj4ACcrIQ0H+1nopEgYDGR0ABOVkI6JPWU5EoEND4CCggJwsBfdR6KhIFAhofAQXkZCGgy62nIlEgoPERUEBOFgJ6v/VUJAoEND4CCsjJQkDvtp6KRIGAxkdAATlZCOid1lORKBDQ+AgoICcLAf1n66lIFAhofAQUkJOFgP7YeioSBQIaHwEF5GQhoAutpyJRIKDxEVBAThYCOs96KhIFAhofAQXkZCGgV1tPRaJAQOMjoICcLAR0tvVUJAoEND4CCsjJQkBnWE9FokBA4yOggJwsBPRS66lIFAhofAQUkJOFgF5oPRWJAgGNj4ACcrIQ0MnWU5EoEND4CCggJwsBnWg9FYkCAY2PgAJyshDQsdZTkSgQ0PgIKCAnCwEdYT0ViQIBjY+AAnKyENBB1lORKBDQ+AgoICcLAR1gPRWJAgGNj4ACcrIQ0P7WU5EoEND4CCggJwsB/bb1VCQKBDQ+AgrIyUJAT7OeikSBgMZHQAE5WQjo31hPRaJAQOMjoICcLAS0n/VUJAoEND4CCsjJQkDdd2ynIlEgoPERUEBOJgL6xsZ71llNRaJAQOMjoICcTAR0w1lum9VUJAoEND4CCsjJREAfc90TrKYiUSCg8RFQQE4mArqYgDYMAQXkZCKglxLQhiGggJxMBHQUAW0YAgrIyURAv01AG4aAAnIyEdC/JqANQ0ABOZkIqEtAG4aAAnIIqDIEFJBDQJUhoIAcAqoMAQXkEFBlCCggh4AqQ0ABOQRUGQIKyCGgyhBQQA4BVYaAAnIIqDIEFJDT/ID+NQFtJAIKyGl+QE87noA2EAEF5DQ/oH97KgFtIAIKyMlAQPsT0AYioICcDAR0JAFtIAIKyMlAQC8hoA1EQAE5GQjoPxPQBiKggJwMBLRz2oTTCGijEFBATgYCWvx/9RkEtFEIKCCHgCpDQAE5BFQZAgrIIaDKEFBADgFVhoACcgioMgQUkENAlSGggBwCqgwBBeQQUGUIKCCHgCpDQAE5BFQZAgrIIaDKEFBADgFVhoACcgioMgQUkENAlSGggBwCqgwBBeQQUM/bYkztjWuuOrd96LRF78Tcvbn2fUg19xBQQA4BrZuf7gXG9B89yJiWO+PsnoQxW8SWIaBAUxDQuvn5hWlfXvxPs/VGY56KsXsSBBTIPQJaNz/jzYrSlQVmZozdkxAK6LJlnQQUaBICWi8/243pLF1bZUZ+8u6JCAU0QECBptAd0FWzRrdNffjNUmQ2zT2nbeSs3/tXO41ZU9pjb2eppKvnTBhw3txXKk1aaH4c3LzJDPw4PFrTr66lI9om3LEzsspc46v6iGrj1RPbJi5+v86Ddd0+uX3yjdu3Xjuhbdztuzw/vW8+NKVt9OxVnhd+Cx86jNBz60VAATmqA3pHwRRGFsycIDK/aDHtE9qNucm/Z7IZ/sjOqj3vLJiWMcW9l5ea5v3BjOz2b7/dLIiOhhT3nT/5nqUDzVWRVR5aYMxVCz7s2fHBFtM6tsUM3Vr7YDMuvu+WVjN1yEX+xaKgmVeYy26e0b/wEy8U0NBhhJ6b742Sjq0ApBQDuq2Zj98TUKspmYCuNubmnV7ndcaPzGstg57p9rqfHWyeLN61fqgxbdPvXt9d2nONKfx0t7fzBjPgvVKtukcGL1G7x/oX4dFoQKcUQ/y0KeyIrBJ+C7+ppXBvl/fBDPOD2gebtdfz7jNmZvFimRkWTBb8B3pxgFlXHdDQYYSem2+vW7Ii2X8rABn0zUpA92eRhAG91M9VsYJT/chcW/64faX5vn+x7Z7zC8X4DL45iPV0c32w50X+K8CgVkuC13lrzKTumtFqxX391u0MMhdaJRzQ2Wa+f/Fhy5l7ax5sQ3FjY89FMDknGFpiZlQHNHQYoefmI6BA39PEgHafZV4OrjzsR2ayGTvBN8YMKd/f+fSiUcaM2Fy8Orj8I9EVZlq5Vq+a0cV0Ljb3evVGexT3DX7eEGQutEo4oMPKd722bk/Ng+3xqi+CydIr3Q1maHVAqw8j/NyCZ3t2yXO7AUgpVmBPMx+/J6BWUyIB3WZM6WeQr/iROdNUtPbu0v3cKHNp8YWhMR+V9xxSrlX3JLPW2zusZZu3j9GegO6tBDS8Siig2yuH4tV9sMiFMesrUzuqAlp9GOHnVo0PkQA5ij9E6qnWWj8yk0zVqrNmvFG+ttoUPu5t2lozsFKxu8wt3gtmtn9raDSs8i2iUECDVUIBLfZue+V6vQeLBrT0EvV9Yz6oCmj1YYSfWzUCCshRHFBvSPlt7go/MleY54ONj9953/NGmV+X9+kMSjSonKzHzPmVir1dfA8/z/zWvzU0GlYd0PAqoYAW33FvCK6se66z3oNFA/posMMqM6j6LXzoMELPrRoBBeRoDujlpQ9juqf5kbmv/CtHC81Sz5tvRpXfUj9hxnj+RzLzgj0vNgt7YjbNrB44vMu/FhoNCwU0tEr4Z6CXmsX+xZ7Bhe11HywS0GnBtwNmmOnVAQ0dRui5VSOggBzNAS2+vb1pp7djfvBVn12jzC27vK4HC21vF19etpvRy9/t6t72wEBzj+f/JLFw1x7/m0Vt7/bE7AFzrrk1WCc06i1b1rWPgIZWKd70Su9+r5iW+7u8nfPMZfUfLBJQM3+Ht2NRsEJvQEOHEXpuBBRIh+aAercYUxhVMEuDyPy+1bSMO9MUVvr3vDS2WJ7+rcV/zQte7C0x5oyxBdP2SG/MtvU35s3SOqFRY3btI6ChVYpvsode0vuF1juLN49vM4Pfrf9gkYDODo67cIcX+iJ96DBCz42AAqlQHdDup2aNaZv6bM8vQg47Y9w1m0t3dT06Y1L7WVPmrivv+uyVE9rOmftGdRQvNxdXFqoe/Q8CWr2K98yEM4b9e++eL88e1zZp8Qf7eLBIQN98ZHLrqJkv9qxc5xmEn1svAgrIUR3QVOwJvrGZpv36Y0gIKCCHgEp7a0Daj0BAgYwgoNJmz0v7EQgokBEEVNrjab+DJ6BAVhDQ/CGgQEYQUGUIKCCHgCpDQAE5BFQZAgrIIaDKEFBADgFVhoACcgioMgQUkENAlSGggBwCqgwBBeQQUGUIKCCHgCpDQAE5BFQZAgrIIaDKEFBAThYC+t5bBLRhCCggJwMBXXPyCScR0EYhoICcDAT0ereIgDYIAQXkZCCgUwhoAxFQQE4GAjqIgDYQAQXkZCCgf0dAG4iAAnIyENCTCGgDEVBATvMDeqpLQBuIgAJymh/QEwhoIxFQQE7zA+oS0EYioIAcAqoMAQXkEFBlCCggh4AqQ0ABOQRUGQIKyCGgyhBQQA4BVYaAAnIIqDIEFJBDQJUhoIAcAqoMAQXkZCKg3yCgDUNAATmZCGgbAW0YAgrIyURAJxHQhiGggJxMBHQ2AW0YAgrIyURAf0JAG4aAAnIyEdDnT3T7WU1FokBA4yOggJxMBPS16/rNtJqKRIGAxkdAATmZCOgW26lIFAhofAQUkJOFgJ7wru1UJAoEND4CCsjJQkBPsp6KRIGAxkdAATlZCOg3raciUSCg8RFQQE4WAvr/rKciUSCg8RFQQE4WAvr31lORKBDQ+AgoICcLAW21nopEgYDGR0ABOVkI6HespyJRIKDxEVBAThYCOtR6KhIFAhofAQXkZCGgo6ynIlEgoPERUEBOFgI63noqEgUCGh8BBeRkIaDnWE9FokBA4yOggJwsBPQfrKciUSCg8RFQQE4WAnqx9VQkCgQ0PgIKyMlCQC+znopEgYDGR0ABOVkI6D9aT0WiQEDjI6CAnCwEdI71VCQKBDQ+AgrIyUJA51pPRaJAQOMjoICcLAT0R9ZTkSgQ0PgIKCAnCwH9J+upSBQIaHwEFJCThYDeZD0ViQIBjY+AAnKyENCl1lORKBDQ+AgoICcLAf2Z9VQkCgQ0PgIKyMlCQO+1nopEgYDGR0ABOVkI6APWU5EoEND4CCggJwsB/bX1VCQKBDQ+AgrIyUJAH7eeikSBgMZHQAE5WQjoU9ZTkSgQ0PgIKCAnCwH9nfVUJAoEND4CCsjJQkD/YD0ViQIBjY+AAnKyENA11lORKBDQ+AgoICcLAX3VeioSBQIaHwEF5GQhoFuspyJRIKDxEVBATgYCeoL9VCQKBDQ+AgrIyUBAT7afikSBgMZHQAE5GQjo/7WfikSBgMZHQAE5GQjot+2nIlEgoPERUEBOBgLaaj8ViQIBjY+AAnIyENCz7KciUSCg8RFQQE4GAjrSfioSBQIaHwEF5GQgoBPtpyJRIKDxEVBATgYCer79VCQKBDQ+AgrIyUBAp9tPRaJAQOMjoICcDAT0B/ZTkSgQ0PgIKCAnAwFdYD8ViQIBjY+AAnIyEFD7vxaegCZHQAE5zQ7o/3HdX9lPRaJAQOMjoICcZgd0vHvyRvupSBQIaHwEFJDT7ICu++FvEkxFokBA4yOggJxmBzSZSBQIaHwEFJBDQJUhoIAcAqoMAQXkEFBlCCggh4AqQ0ABOQRUGQIKyCGgyhBQQA4BVYaAAnIIqDIEFJBDQJUhoIAcAqoMAQXkEFBlCCggh4AqQ0ABOQRUGQIKyCGgyhBQQA4BVYaAAnIIqDIEFJBDQJUhoIAcAqoMAQXkEFBlCCggh4AqQ0ABOQRUGQIKyCGgyhBQQA4BVYaAAnIIqDIEFJBDQJUhoIAcAqoMAQXkEFBlCCggh4AqQ0ABOQRUGQIKyHlh5cq3m30M9iJRIKAAmmGi677d7GPYbwQUQDMQUABIiIACQEIEFAASIqAAkBABBYCECCgAaEZAASAhAgoACRFQAEiIgAJAQgQUABIioACQEAEF0GA/N1vK196+fnjL8OveaurR7A8CCqCxdp1dCej67xgz3Jj2dc09oOQIKIBG6lr9fVMOaNcEM/19b+ulZnxXkw8qKQIKoIFubTGmEtCVZsjO4sWOweap5h5UYgQUQAM9/MMf/rAS0OvNguByvpnXzEPaDwQUQINVAnqxeSK4/I25pJmHsx8IKIAGqwR0vHkxuFxlzm7m4ewHAgqgwSoBbTevBpevmoFNPJr9QUABNFhvQF8LLjeatmYezn4goAAarPYt/LhmHs5+IKAAGqz3Q6Qng8snzHebeTj7gYACaLBKQK8zi4LLReb6Zh7OfiCgABqsEtAnzfDdxYs9w/kiPQDE0/OrnOPN1Xu8PVeZCfwqJwDEUgmot67dtJ8/wAzc0NzjSY6AAmiwnoB6b103rGXY9e809Wj2BwEFgIQIKAAkREABICECCgAJEVAASIiAAkBCBBQAEiKgAJAQAQWAhAgoACREQAEgIQIKAAkRUPQVpzlhX0q+VDDvyh1a7fp/VnPbEf5j1t6MTCOg6CvqBTRhkggo4iGg6CvuuyHwBccpXbnd24+Afnnz5reFjy+0fu1hvbF5MwHNHQKKPubPnKr/UScOaLol28f6BDR3CCj6mFBAP/qoM8kaBBTxEFD0MaGAJkRAEQ8BRR8TCmh5wy/T3acedcixI9Z5b439k4O/VHimvMOac/78iM/+5dnPh9foKdmmC/73MYce960lu/ex+9pz//zIo44/r/IXVDw94sufPvy4kc/0rrJm1BcP+c/fWLi9dMtD3znm4D8ZtKqyfnR1Apo7BBR9TP2AfmWa86ffOMpxDr/tmNAcSUcAAATJSURBVAP+139znAMe82/vvvbA8kf2/7Cneo1KyRYeVL77q9vq7d59TXn78GX+5p6JlS8AnL27vMqvjjjo618/2HG+9kFxe/eI0r2HLiutH1mdgOYQAUUfUz+gB3x6qee9f2qxVp9/1uu+wHFO9m+/0XE+d9Edt0053HHGV69RLtmvD3AOm7j0vuv+u+MMqrf7Asc5cNwtd04+zDnK/2slzy9ujl9y64RiF88vrXL0ZwcUy7n+q45zQXH73OJhDLtx0QDnyGD96OoENIcIKPqY+gF1rvIvnyleual4+dGBzmeKF1uPdL7W4d+++b86zmNVa5RLVnzFeK9/+f5/cj6zt3b3tw5zjgimVh7sB/JlxznicX/ziWIgV5ce9W+6/RsecZwTPe9FxznkQX/zxtIXPiOrewQ0hwgo+ph9BPQj/3K743xqp3/l2OD2eY6zprTf0+GXoOWSuY7z78H2XVde+WHt7jMc58LS9kDneM+b4jjfLW1eVHoJWnzUR73ywxbXO8dxzivdf3qwHVndI6A5REDRx9QP6LGl7coveJZu7+/8VXm/vUc7/6NqjXLJznKc1n/rvTW6+zcc59XS9usrfuN5f+U4r5c2X3X8oPo/ONhZtd5fOs760uZ9wXZkdY+A5hABRR+zr0/hveorpdu/Vv2bn1+oWqO829qjird/bdrPNpVuje7+x84he6uGPuccWt7ce7Dz+WCVP61e77M9u68LtiOrewQ0hwgo+hiLgB5XXcRDq9ao7LZl4h8F9/3FP35UZ/cDK69rSw7s/eNLjnUOrH7U0rXe3XeU7gmv7hHQHCKg6GMsAvp15+/qr9Fbsq5//UHbMcXIffGt2t2Pcg7vrtqsegV6qPM5ryagRzuHdJU2N1TuqV7dI6A5REDRx1gE9DvOF+uvES5Z98r+jjOmdvf/6Tjlb9Bvuu22zqqfgb5efGvu1QT0eMdZV9r8ZfX6ldVrHhY5QEDRx1gEdKHjPF66/ekvfelHVWuUdxv81ZGl7feCP9wuuvsUx7m8tH2hc/Reb7LjfK+0eXHp8/ZIQM/v+RS+f7AdWd0joDlEQNHHWAR025HOVzb7m1u/7nzq9ao1yruNdA5+Odj+meOcXrv76gOczzztb6/7nNPqeX9wnCNX+puPH+44L3k1AX258j3QO0rfA42s7hHQHCKg6GMsAuotLjZv2tJ7rjjWcaZXr1He7TbH+ePv3fXAkuEHOc7ddXa/xHEOOnvJ3Zf9kXO4n8Ip/uatt44/sPSLR9GAelP930T68Y2DnK8E29HVCWgOEVD0MTYB7b7ygNJn6p+aVv1xUGW3rrMqn7kfdGW93bsuKN/9mZ/5m7vHVXaftCf0qOVru0eW7v38i8F2dHUCmkMEFH2MTUA979/GHnfY0SeMXxteo2f/J9r/4ujDvnzKzLe8+rs/N+a4Tx/db3LlD69/cth/OezTXx7xTGSVnmsPtR9z8BeGbKhsR1cnoLlDQIEaTSoZAc0dAgrUIKCIh4ACNQgo4iGgQA0CingIKFAj+Gw8xb8Xvh7+Xvg8IqBADQKKeAgoACREQAEgIQIKAAkRUABIiIACQEIEFAASIqAAkBABBYCECCgAJERAASAhAgoACRFQAEiIgAJAQgQUABL6/zCLQzIOWDvBAAAAAElFTkSuQmCC" width="672" /></p> -<p>Here we get a performance benefit of a factor of 10.1 using the version of the differential equation model compiled from C code!</p> +<p><img src="data:image/png;base64,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" width="672" /></p> +<p>Here we get a performance benefit of a factor of 9.9 using the version of the differential equation model compiled from C code!</p> <p>This vignette was built with mkin 0.9.44.9000 on</p> <pre><code>## R version 3.3.1 (2016-06-21) ## Platform: x86_64-pc-linux-gnu (64-bit) diff --git a/vignettes/mkin.html b/docs/vignettes/mkin.html index 0540ffd0..0540ffd0 100644 --- a/vignettes/mkin.html +++ b/docs/vignettes/mkin.html diff --git a/inst/web/Extract.mmkin.html b/inst/web/Extract.mmkin.html index e4225ffd..6e32f5a9 100644 --- a/inst/web/Extract.mmkin.html +++ b/inst/web/Extract.mmkin.html @@ -183,7 +183,7 @@ $calls $time user system elapsed - 0.260 0.000 0.259 + 0.252 0.000 0.252 $mkinmod <mkinmod> model generated with @@ -369,7 +369,7 @@ function (P) } return(mC) } -<environment: 0x37c6c70> +<environment: 0x33d3c70> $cost_notrans function (P) @@ -391,7 +391,7 @@ function (P) scaleVar = scaleVar) return(mC) } -<environment: 0x37c6c70> +<environment: 0x33d3c70> $hessian_notrans parent_0 alpha beta @@ -457,7 +457,7 @@ $bparms.state 99.66619 $date -[1] "Sat Sep 10 04:12:07 2016" +[1] "Sat Sep 10 05:19:30 2016" attr(,"class") [1] "mkinfit" "modFit" @@ -544,7 +544,7 @@ $calls $time user system elapsed - 0.068 0.000 0.069 + 0.068 0.000 0.067 $mkinmod <mkinmod> model generated with @@ -731,7 +731,7 @@ function (P) } return(mC) } -<environment: 0x4cb0ed0> +<environment: 0x48bdf40> $cost_notrans function (P) @@ -753,7 +753,7 @@ function (P) scaleVar = scaleVar) return(mC) } -<environment: 0x4cb0ed0> +<environment: 0x48bdf40> $hessian_notrans parent_0 k_parent_sink @@ -816,7 +816,7 @@ $bparms.state 99.17407 $date -[1] "Sat Sep 10 04:12:07 2016" +[1] "Sat Sep 10 05:19:30 2016" attr(,"class") [1] "mkinfit" "modFit" @@ -896,7 +896,7 @@ $calls $time user system elapsed - 0.068 0.000 0.069 + 0.068 0.000 0.067 $mkinmod <mkinmod> model generated with @@ -1083,7 +1083,7 @@ function (P) } return(mC) } -<environment: 0x4cb0ed0> +<environment: 0x48bdf40> $cost_notrans function (P) @@ -1105,7 +1105,7 @@ function (P) scaleVar = scaleVar) return(mC) } -<environment: 0x4cb0ed0> +<environment: 0x48bdf40> $hessian_notrans parent_0 k_parent_sink @@ -1168,7 +1168,7 @@ $bparms.state 99.17407 $date -[1] "Sat Sep 10 04:12:07 2016" +[1] "Sat Sep 10 05:19:30 2016" attr(,"class") [1] "mkinfit" "modFit" diff --git a/inst/web/mccall81_245T.html b/inst/web/mccall81_245T.html index 9972571a..66a8fce2 100644 --- a/inst/web/mccall81_245T.html +++ b/inst/web/mccall81_245T.html @@ -114,8 +114,8 @@ </div> <div class='output'>mkin version: 0.9.44.9000 R version: 3.3.1 -Date of fit: Sat Sep 10 04:12:13 2016 -Date of summary: Sat Sep 10 04:12:13 2016 +Date of fit: Sat Sep 10 05:19:35 2016 +Date of summary: Sat Sep 10 05:19:35 2016 Equations: d_T245 = - k_T245_sink * T245 - k_T245_phenol * T245 @@ -125,7 +125,7 @@ d_anisole = + k_phenol_anisole * phenol - k_anisole_sink * anisole Model predictions using solution type deSolve -Fitted with method Port using 246 model solutions performed in 1.456 s +Fitted with method Port using 246 model solutions performed in 1.434 s Weighting: none diff --git a/inst/web/mkinfit.html b/inst/web/mkinfit.html index 910a43ec..899f2cc7 100644 --- a/inst/web/mkinfit.html +++ b/inst/web/mkinfit.html @@ -325,15 +325,15 @@ summary(fit) </div> <div class='output'>mkin version: 0.9.44.9000 R version: 3.3.1 -Date of fit: Sat Sep 10 04:12:15 2016 -Date of summary: Sat Sep 10 04:12:15 2016 +Date of fit: Sat Sep 10 05:19:38 2016 +Date of summary: Sat Sep 10 05:19:38 2016 Equations: d_parent = - (alpha/beta) * 1/((time/beta) + 1) * parent Model predictions using solution type analytical -Fitted with method Port using 64 model solutions performed in 0.156 s +Fitted with method Port using 64 model solutions performed in 0.148 s Weighting: none @@ -409,7 +409,7 @@ print(system.time(fit <- mkinfit(SFO_SFO, FOCUS_2006_D, solution_type = "eigen", quiet = TRUE))) </div> <div class='output'> user system elapsed - 1.228 1.216 0.923 + 1.236 1.188 0.911 </div> <div class='input'>coef(fit) </div> diff --git a/inst/web/mkinpredict.html b/inst/web/mkinpredict.html index fbf06007..d8edeb23 100644 --- a/inst/web/mkinpredict.html +++ b/inst/web/mkinpredict.html @@ -304,7 +304,7 @@ 201 20 4.978707 27.46227 </div> <div class='output'> user system elapsed - 0.024 0.004 0.005 + 0.004 0.028 0.005 </div> <div class='input'> system.time( print(mkinpredict(SFO_SFO, c(k_parent_m1 = 0.05, k_parent_sink = 0.1, k_m1_sink = 0.01), @@ -315,7 +315,7 @@ 201 20 4.978707 27.46227 </div> <div class='output'> user system elapsed - 0.000 0.020 0.002 + 0.016 0.004 0.003 </div> <div class='input'> system.time( print(mkinpredict(SFO_SFO, c(k_parent_m1 = 0.05, k_parent_sink = 0.1, k_m1_sink = 0.01), @@ -326,7 +326,7 @@ 201 20 4.978707 27.46227 </div> <div class='output'> user system elapsed - 0.036 0.000 0.036 + 0.032 0.000 0.035 </div></pre> </div> <div class="span4"> diff --git a/inst/web/summary.mkinfit.html b/inst/web/summary.mkinfit.html index 936350df..53cf5f97 100644 --- a/inst/web/summary.mkinfit.html +++ b/inst/web/summary.mkinfit.html @@ -159,8 +159,8 @@ </div> <div class='output'>mkin version: 0.9.44.9000 R version: 3.3.1 -Date of fit: Sat Sep 10 04:12:23 2016 -Date of summary: Sat Sep 10 04:12:23 2016 +Date of fit: Sat Sep 10 05:19:45 2016 +Date of summary: Sat Sep 10 05:19:45 2016 Equations: d_parent = - k_parent_sink * parent diff --git a/inst/web/transform_odeparms.html b/inst/web/transform_odeparms.html index 43c6cdc2..d016bef5 100644 --- a/inst/web/transform_odeparms.html +++ b/inst/web/transform_odeparms.html @@ -135,8 +135,8 @@ summary(fit, data=FALSE) # See transformed and backtransformed parameters </div> <div class='output'>mkin version: 0.9.44.9000 R version: 3.3.1 -Date of fit: Sat Sep 10 04:12:24 2016 -Date of summary: Sat Sep 10 04:12:24 2016 +Date of fit: Sat Sep 10 05:19:46 2016 +Date of summary: Sat Sep 10 05:19:46 2016 Equations: d_parent = - k_parent_sink * parent - k_parent_m1 * parent @@ -144,7 +144,7 @@ d_m1 = + k_parent_m1 * parent - k_m1_sink * m1 Model predictions using solution type deSolve -Fitted with method Port using 153 model solutions performed in 0.682 s +Fitted with method Port using 153 model solutions performed in 0.681 s Weighting: none diff --git a/inst/web/vignettes/FOCUS_D.html b/inst/web/vignettes/FOCUS_D.html index d02b1b61..9e19315d 100644 --- a/inst/web/vignettes/FOCUS_D.html +++ b/inst/web/vignettes/FOCUS_D.html @@ -192,8 +192,8 @@ print(FOCUS_2006_D)</code></pre> <pre class="r"><code>summary(fit)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:37 2016 -## Date of summary: Sat Sep 10 04:13:38 2016 +## Date of fit: Sat Sep 10 05:20:59 2016 +## Date of summary: Sat Sep 10 05:20:59 2016 ## ## Equations: ## d_parent = - k_parent_sink * parent - k_parent_m1 * parent @@ -201,7 +201,7 @@ print(FOCUS_2006_D)</code></pre> ## ## Model predictions using solution type deSolve ## -## Fitted with method Port using 153 model solutions performed in 0.643 s +## Fitted with method Port using 153 model solutions performed in 0.641 s ## ## Weighting: none ## diff --git a/inst/web/vignettes/FOCUS_L.html b/inst/web/vignettes/FOCUS_L.html index 10d1eb01..8223a3f4 100644 --- a/inst/web/vignettes/FOCUS_L.html +++ b/inst/web/vignettes/FOCUS_L.html @@ -236,15 +236,15 @@ FOCUS_2006_L1_mkin <- mkin_wide_to_long(FOCUS_2006_L1)</code></pre> summary(m.L1.SFO)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:38 2016 -## Date of summary: Sat Sep 10 04:13:38 2016 +## Date of fit: Sat Sep 10 05:20:59 2016 +## Date of summary: Sat Sep 10 05:20:59 2016 ## ## Equations: ## d_parent = - k_parent_sink * parent ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 37 model solutions performed in 0.086 s +## Fitted with method Port using 37 model solutions performed in 0.09 s ## ## Weighting: none ## @@ -329,8 +329,8 @@ summary(m.L1.SFO)</code></pre> <pre class="r"><code>summary(m.L1.FOMC, data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:39 2016 -## Date of summary: Sat Sep 10 04:13:39 2016 +## Date of fit: Sat Sep 10 05:21:00 2016 +## Date of summary: Sat Sep 10 05:21:00 2016 ## ## ## Warning: Optimisation by method Port did not converge. @@ -342,7 +342,7 @@ summary(m.L1.SFO)</code></pre> ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 188 model solutions performed in 0.443 s +## Fitted with method Port using 188 model solutions performed in 0.441 s ## ## Weighting: none ## @@ -426,8 +426,8 @@ plot(m.L2.FOMC, show_residuals = TRUE, <pre class="r"><code>summary(m.L2.FOMC, data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:40 2016 -## Date of summary: Sat Sep 10 04:13:40 2016 +## Date of fit: Sat Sep 10 05:21:01 2016 +## Date of summary: Sat Sep 10 05:21:01 2016 ## ## Equations: ## d_parent = - (alpha/beta) * 1/((time/beta) + 1) * parent @@ -496,8 +496,8 @@ plot(m.L2.DFOP, show_residuals = TRUE, show_errmin = TRUE, <pre class="r"><code>summary(m.L2.DFOP, data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:41 2016 -## Date of summary: Sat Sep 10 04:13:41 2016 +## Date of fit: Sat Sep 10 05:21:02 2016 +## Date of summary: Sat Sep 10 05:21:02 2016 ## ## Equations: ## d_parent = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * @@ -506,7 +506,7 @@ plot(m.L2.DFOP, show_residuals = TRUE, show_errmin = TRUE, ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 336 model solutions performed in 0.797 s +## Fitted with method Port using 336 model solutions performed in 0.899 s ## ## Weighting: none ## @@ -585,8 +585,8 @@ plot(mm.L3)</code></pre> <pre class="r"><code>summary(mm.L3[["DFOP", 1]])</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:42 2016 -## Date of summary: Sat Sep 10 04:13:42 2016 +## Date of fit: Sat Sep 10 05:21:03 2016 +## Date of summary: Sat Sep 10 05:21:03 2016 ## ## Equations: ## d_parent = - ((k1 * g * exp(-k1 * time) + k2 * (1 - g) * exp(-k2 * @@ -595,7 +595,7 @@ plot(mm.L3)</code></pre> ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 137 model solutions performed in 0.326 s +## Fitted with method Port using 137 model solutions performed in 0.403 s ## ## Weighting: none ## @@ -685,15 +685,15 @@ plot(mm.L4)</code></pre> <pre class="r"><code>summary(mm.L4[["SFO", 1]], data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:42 2016 -## Date of summary: Sat Sep 10 04:13:42 2016 +## Date of fit: Sat Sep 10 05:21:04 2016 +## Date of summary: Sat Sep 10 05:21:04 2016 ## ## Equations: ## d_parent = - k_parent_sink * parent ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 46 model solutions performed in 0.106 s +## Fitted with method Port using 46 model solutions performed in 0.109 s ## ## Weighting: none ## @@ -745,15 +745,15 @@ plot(mm.L4)</code></pre> <pre class="r"><code>summary(mm.L4[["FOMC", 1]], data = FALSE)</code></pre> <pre><code>## mkin version: 0.9.44.9000 ## R version: 3.3.1 -## Date of fit: Sat Sep 10 04:13:42 2016 -## Date of summary: Sat Sep 10 04:13:43 2016 +## Date of fit: Sat Sep 10 05:21:04 2016 +## Date of summary: Sat Sep 10 05:21:04 2016 ## ## Equations: ## d_parent = - (alpha/beta) * 1/((time/beta) + 1) * parent ## ## Model predictions using solution type analytical ## -## Fitted with method Port using 66 model solutions performed in 0.15 s +## Fitted with method Port using 66 model solutions performed in 0.152 s ## ## Weighting: none ## diff --git a/inst/web/vignettes/FOCUS_Z.pdf b/inst/web/vignettes/FOCUS_Z.pdf Binary files differindex 27b9951d..85e50e65 100644 --- a/inst/web/vignettes/FOCUS_Z.pdf +++ b/inst/web/vignettes/FOCUS_Z.pdf diff --git a/inst/web/vignettes/compiled_models.html b/inst/web/vignettes/compiled_models.html index 004a808c..212b1abb 100644 --- a/inst/web/vignettes/compiled_models.html +++ b/inst/web/vignettes/compiled_models.html @@ -251,21 +251,21 @@ mb.1 <- microbenchmark( print(mb.1)</code></pre> <pre><code>## Unit: milliseconds ## expr min lq mean median uq -## deSolve, not compiled 6507.8296 6549.5160 6597.4319 6591.2024 6642.2330 -## Eigenvalue based 890.5249 917.6589 928.4907 944.7928 947.4735 -## deSolve, compiled 735.4908 742.0363 749.3996 748.5817 756.3540 +## deSolve, not compiled 6410.2240 6437.0229 6461.3866 6463.8218 6486.9680 +## Eigenvalue based 887.5697 915.3026 929.6279 943.0355 950.6570 +## deSolve, compiled 737.4060 745.6645 749.1956 753.9229 755.0903 ## max neval cld -## 6693.2636 3 c -## 950.1543 3 b -## 764.1264 3 a</code></pre> +## 6510.1142 3 c +## 958.2786 3 b +## 756.2578 3 a</code></pre> <pre class="r"><code>autoplot(mb.1)</code></pre> -<p><img src="data:image/png;base64,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" width="672" /></p> -<p>We see that using the compiled model is by a factor of 8.8 faster than using the R version with the default ode solver, and it is even faster than the Eigenvalue based solution implemented in R which does not need iterative solution of the ODEs:</p> +<p><img src="data:image/png;base64,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" width="672" /></p> +<p>We see that using the compiled model is by a factor of 8.6 faster than using the R version with the default ode solver, and it is even faster than the Eigenvalue based solution implemented in R which does not need iterative solution of the ODEs:</p> <pre class="r"><code>rownames(smb.1) <- smb.1$expr smb.1["median"]/smb.1["deSolve, compiled", "median"]</code></pre> <pre><code>## median -## deSolve, not compiled 8.804921 -## Eigenvalue based 1.262110 +## deSolve, not compiled 8.573584 +## Eigenvalue based 1.250838 ## deSolve, compiled 1.000000</code></pre> </div> <div id="benchmark-for-a-model-that-can-not-be-solved-with-eigenvalues" class="section level2"> @@ -286,18 +286,18 @@ smb.1["median"]/smb.1["deSolve, compiled", "median" <pre class="r"><code>smb.2 <- summary(mb.2) print(mb.2)</code></pre> <pre><code>## Unit: seconds -## expr min lq mean median uq -## deSolve, not compiled 13.741831 13.74759 13.815509 13.753350 13.852348 -## deSolve, compiled 1.358402 1.35862 1.368666 1.358838 1.373798 +## expr min lq mean median uq +## deSolve, not compiled 13.370040 13.424534 13.501075 13.479027 13.56659 +## deSolve, compiled 1.336599 1.336707 1.339399 1.336815 1.34080 ## max neval cld -## 13.951345 3 b -## 1.388759 3 a</code></pre> +## 13.654158 3 b +## 1.344784 3 a</code></pre> <pre class="r"><code>smb.2["median"]/smb.2["deSolve, compiled", "median"]</code></pre> <pre><code>## median ## 1 NA ## 2 NA</code></pre> <pre class="r"><code>autoplot(mb.2)</code></pre> -<p><img src="data:image/png;base64,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" width="672" /></p> +<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAJACAMAAAB7fzyHAAAC5VBMVEUAAAABAQECAgIDAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQWFhYXFxcZGRkaGhobGxscHBwdHR0eHh4fHx8gICAiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFDQ0NERERFRUVHR0dISEhJSUlKSkpNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6utra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////PovJGAAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nO3de5xU5XnA8WO832JsktYmprFNL2lrmsHcapum1jbvsO6yQbm63BUNUCTSVI1bBY0JKikQilFQMdZLAC813ghBFNNoRI3IVQUR0YaLLiCwO+fvnsvM7jkzszrv8Tkc9jy/7x+eOTPvec+ZvPn8PjM7s4vjAgAScbK+AADoqwgoACREQAEgIQIKAAkRUABIiIACQEIEFAASIqAAkBABBYCECCgAJERAASAhAgoACRFQAEiIgAJAQgS0cbveBiDtHdfdnfU1NK4qCgS0cQQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BFQJAgrII6BKEFBAHgFVgoAC8gioEgQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BFQJAgrII6BKEFBAHgFVgoAC8gioEgQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BFQJAgrII6BKEFBAHgFVgoAC8gioEgQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BFQJu4BufDGlFQRyhYAqYRXQtd/o97O01hDIEQKqhFVA7y8Upqa1hkCOEFAlrAJ6X6FwcVprCOQIAVXCNqBj0lpDIEcIqBK2AW1Law2BHCGgStgGdGhaawjkCAFVwjag56a1hkCOEFAlbAM6IK01BHKEgCphG9Bz0lpDIEcIqBK2ATVprSGQIwRUCduAfjOtNQRyhIAqYRvQs1NaQiBPCKgStgE9K601BHKEgCphG9BvpLWGQI4QUCVsA/r1tNYQyBECqoRtQM9Maw2BHCGgStgG9KtprSGQIwRUCduAfjmtNQRyhIAqYRvQfmmtIZAjBFQJ24AWtqW1iEB+EFAlrAP6RlqLCOQHAVXCOqBb0lpEID8IqBLWAd2U1iIC+UFAlbAO6KtpLSKQHwRUCeuAbkxrEYH8IKBKWAd0XVqLCOQHAVXCOqBr01pEID8IqBLWAV2d1iIC+UFAlbAO6ItpLSKQHwRUCeuAvpDWIgL5QUCVsA7oc2ktIpAfBFQJ64A+m9YiAvlBQJWwDuiv01pEID8IqBLWAf1VWosI5AcBVcI6oCvTWkQgPwioEtYBXZHWIgL5QUCVsA7o8rQWEcgPAqqEdUCXpbWIQH4QUCWsA7o0rUUE8oOAKmEd0EfTWkQgPwioEtYBfTitRQTyg4AqYR3Qh9JaRCA/CKgS1gF9MK1FBPKDgCphHdD70lpEID8IqBLWAV2c1iIC+UFAlbAO6KK0FhHIDwKqhHVA70lrEYH8IKBKWAf0rpTWEMgRAqqEdUAnr0prFYHcIKBKWAe08M20VhHIDQKqhH1AC2mtIpAbBFQJAgrII6BKEFBAHgFVgoAC8gioEgQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BFQJAgrII6BKEFBAHgFVgoAC8gioEgQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BFQJAgrII6BKEFBAHgFVgoAC8gioEgQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BFQJAgrII6BKEFBAHgFVgoAC8gioEgQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BFQJAgrII6BKEFBAHgFVgoAC8gioEgQUkEdAlSCggDwCqgQBBeQRUCUIKCCPgCpBQAF5BPSDvWFM7Z1rrru4deiUudsaHJ6O3k9V8wgBBeQR0A9WJ1Ol2cb0HznImKY7GxmeAmPeIKBAxgjoB6uTqftN60P7XXf7TcY82cDwFBBQIHsE9IPVydRYszS8Mdtc3cDwFCxe3EFAgYwR0A9Wm6ndxnSEt1aZtg8enhoCCmSKgL6fVdNGtkx6dEsYo00zLmppm/asf7PDmDXhiK6OsKSrrx034NszXvZv+u2aY34S3L3JDHwvfmi1jT+4sOXCeTvqTNJ5+4TWCTft3n79uJYxt+9z/XftWx6Z2DJy+irXjb+Fj00fu+YeBBSQR0Dfxx1FU2wrmmuDGN3fZFrHtRpzs//IBDP8sb2RkXcWTdMob/RDbli1F01byb//djO7+tC4B5tM8+gmM3R77STtU5fMbzaThlzqb+a6fjOvMlfc0t6/+FM3FtDY9LFr9pTuCW1818LPg4DaHAGo5FVgX9bX0Liq+qQc0NXG3LLX7bjB+DF6tWnQypJbenqwecJ7aP1QY1ouv2d9KRy5xhT/e7+798dmwO/CqpXagpeopdH+Jn5ozKam4qJOd1e7+X7tJNO6XHeJMVd7m8VmmOs3s+hP8PwAsy4a0Nj0sWv2dRVCS22e+bLgkA/1Px6AQ1zKAb3Mz5pXwUl+jK4vf9y+wnzP3+y8d3LRi9TgW/yXju7l5sZg5KX+K8WgaguC14NrzPhSzaFR080sf/NO07ldNZNs8HY2dm9cv5nXBgctMO3RgMamj12zj4ACqCvdgJbOMy8FNx71YzTBjB7nG2WGlB/veGruCGPO3+zdHFz+kehSM6VctVfMSC+d88wit96h3YaVD3x13YGaSQ640Y3rNzN8BbvBDI0GNDp9/JqDZ8FbeCA1vIXv1U5j3gluvOzH6FxT0dwzpPTMCHOZ9wLSmHfLI4eUq1Yab9a6XcOadrq9HBrYXTmFW3eSqo0x6ytH7YkENDp9/Jqj+BAJkMeHSL3qrttaP0bjTeTs09pfL99abYrv9bRvrRlYqd3dZr77nJnu3xs7NMbr3e7K7XqTVAc0fIm6w5hdkYBGp49fcxQBBeQR0N4NKb8dXurH6Crzm2DnvW07XHeEebg8piMo1qBy2n5hJldq96b3Hn6m+V//3tihMd477g3BjXXPdNSbpDqgjwcDVplB0bfwselj1xxFQAF5BLR3V4Yf2pSm+DFaUv6VozlmoevOMiPKb72Xm1Gu/9HNzGDkVDOnO3pTzOqBwzv9W7FD4y4z8/zNgcHF3XUnqQrolOBT/3ZzeTSgselj1xxFQAF5BLR33tvgm/e6e2YFXwnaN8LM3+d2PlhsedN7edlqRj70Vmdp5wMDzb2u/xPH4t0H/G8gtbzVHb0HzMXm1mCe2KHu4sWdPad42TTd1+nunWmuqD9JVUDNrD3unrnGvBwNaGz62DVHEVBAHgF9H/ONKY4omoVBjJ5tNk1jzjXFFf4jvx3tFap/s/efmcGLwgXGnDO6aFoe64nezv7GbAnniR1qzL7IKe70DhrbYga/VX+SqoBOD66neIcb+yJ9bPrYNUcQUEAeAX0fpSenjWqZ9HT3L0wOO2fMDzeHD3U+3j6+9byJM9aVhz59zbiWi2YEHy1Vfg39SjO1MlH00HhA3Zemj2kZP29XL5NUBXTLYxOaR1z9fDhN9Fc5e6aPX3MPAgrII6AH24Hgm51JBM1MioAC8gjowbZ1QNIjCShwiCGgB9v0mUmPJKDAIYaAHmzLkr6DJ6DAoYaA9h0EFDjEEFAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgStgH9JtprSKQGwRUCeuATl6V1ioCuUFAlbAO6F0prSGQIwRUCeuA3pPWIgL5QUCVsA7oorQWEcgPAqqEdUAXp7WIQH4QUCWsA3pfWosI5AcBVcI6oA+mtYhAfhBQJawD+lBaiwjkBwFVwjqgD6e1iEB+EFAlrAP6aFqLCOQHAVXCOqBL01pEID8IqBLWAV2W1iIC+UFAlbAO6PK0FhHIDwKqhHVAV6S1iEB+EFAlrAO6Mq1FBPKDgCphHdBfpbWIQH4QUCWsA/rrtBYRyA8CqoR1QJ9NaxGB/CCgSlgH9Lm0FhHIDwKqhHVAX0hrEYH8IKBKWAf0xbQWEcgPAqqEdUBXp7WIQH4QUCWsA7o2rUUE8oOAKmEd0HVpLSKQHwRUCeuAbkxrEYH8IKBKWAf01bQWEcgPAqqEdUA3pbWIQH4QUCWsA7olrUUE8oOAKmEd0DfSWkQgPwioEtYB3ZbWIgL5QUCVsA1ov7TWEMgRAqqEbUC/nNYaAjlCQJWwDehX01pDIEcIqBK2AT0zrTUEcoSAKmEb0K+ntYZAjhBQJWwD+o201hDIEQKqhG1Az0prDYEcIaBK2Ab07JSWEMgTAqqEbUC/mdYaAjlCQJWwDahJaw2BHCGgStgG9Jy01hDIEQKqhG1AB6S1hkCOEFAlbAN6blprCOQIAVXCNqBD01pDIEcIqBK2AW1Law2BHCGgStgGdExaawjkCAFVwjagF6e1hkCOEFAlrAJ6f6EwNa01BHKEgCphFdC1/9Dv3rTWEMgRAqqEVUDf3vhCSisI5AoBVcIuoAAaQUCVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsgjoEoQUEAeAVWCgALyCKgSBBSQR0CVIKCAPAKqBAEF5BFQJQgoII+AKkFAAXkEVAkCCsjLKKDbfvlcksOqokBAG0dAAXnZBHTr6EK/2QmOq4oCAW0cAQXkZRPQ/yoUCmcstz+uKgoEtHEEFJCXSUC3/bMX0MIY+wOrokBAG0dAAXmZBHRZoTD0nwr9fm19YFUUCGjjCCggL5OA/qxQmD23UGi3PrAqCgS0cQQUkJdVQOds+1Lh7161PbAqCgS0cQQUkJdZQN1LC4Xx46e+aHVgVRQIaOMIKCAvu4CuOcP/JKnZ6sCqKBDQxhFQQF52AXVv9gN6htWBVVEgoI0joIC8DAPqPnPbPxHQg4WAAvKyDKjrnkNADxYCCsgjoEoQUEAeAVWCgALyCKgSBBSQpzmgbxhTe+ea6y5uHTpl7rYGh2er90uqeYSAAvIIaExptjH9Rw4ypunORoYnYcwbYtMQUCBTBDTmftP60H7X3X6TMU82MDwJAgrkBgGNGWuWhjdmm6sbGJ6EUEAXL+4goEDGCGjUbmM6wlurTNsHD09EKKABAgpkSmdAV00b2TLp0S1hZDbNuKilbdqz/s0OY9aEI7o6wpKuvnbcgG/PeLnSpDnmJ8Hdm8zA9+KH1vSrc+H5LePu2Fs1ywzji3xEtfEHF7ZcOG9HnZN13j6hdcJNu7dfP65lzO37XD+9Wx6Z2DJy+irXjb+Fj11G7Ln1IKCAPJUBvaNoim1Fc20QmfubTOu4VmNu9h+ZYIY/tjcy8s6iaRrljX4obJr7omkr+fffbmZXHxrjjZ014d6FA811VbM8MtuY62a/0z3wwSbTPLrJDN1ee7L2qUvmN5tJQy71N3Ndv5lXmStuae9f/KkbC2jsMmLPzfd66O3tAKR5r7P2HPSTLo4E1OpAmYCuNuaWvW7HDcaPzKtNg1aW3NLTg80T3kPrhxrTcvk960vhyDWm+N/73b0/NgN+F9aq1Ba8RC2N9jfxQ6sDOtEL8VOmuKdqlvhb+E1NxUWd7q528/3ak03rct0lxlztbRabYcGRRf9Ezw8w66IBjV1G7Ln5ugqhpcn+twJwqHk0EtAPM0/CgF7m58qr4CQ/MteXP25fYb7nb3beO7noxWfwLUGsLzc3BiMv9V8BBrVaELzOW2PGl2oOjfLG+q3bG2QuNks8oNPNLH/zTtO5XTUn2+DtbOzeBEdeGxy0wLRHAxq7jNhz8xFQIGeyDWjpPPNSeBl+ZCaY0eN8o8yQ8uMdT80dYcz5m72bg8s/El1qppRr9YoZ6aVznlnk1ju0mzc2+HlDkLnYLPGADis/9Oq6AzUnO+BGN8GR4SvdDWZoNKDRy4g/t+DZXhB6Zj8AaZ2u23nQT/rzSECtDhQJ6E5jwp9BvuxH5lxT0dwzpPTMCHOZ98LQmHfLI4eUa1Uab9a6XcOadrq9HBryxna55VrGZ4kFdHflUty6J6vaGLO+ctSeSECjlxF/blF8iATIU/ghUne11vqRGW8is05rf718a7UpvtfTtLVmYKVid5v57nNmun9v7NC4yreIYgENZokF1Ovd7srteierDmj4EnWHMbsiAY1eRvy5RRFQQJ7CgLpDym9zl/qRucr8Jth5b9sO1x1hHi6P6QhKNKicrF+YyZWKvem9h59p/te/N3ZoXDSg8VliAfXecW8Ibqx7pqPeyaoD+ngwYJUZFH0LH7uM2HOLIqCAPI0BvTL8MKY0xY/MkvKvHM0xC113lhlRfku93Ixy/Y9kZgYjp5o53TGbYlYPHN7p34odGhcLaGyW+M9ALzPz/M2BwcXddU9WFdApwbcD2s3l0YDGLiP23KIIKCBPY0C9t7c373X3zAq+6rNvhJm/z+18sNjypvfystWMfOitztLOBwaae13/J4nFuw/43yxqeas7Zg+Yi82twTyxQ93Fizt7CWhsFu+ul3vGvWya7ut09840V9Q/WVVAzaw97p65wQw9AY1dRuy5EVAgXRoD6s43pjiiaBYGkXm22TSNOdcUV/iP/Ha0V57+zd5/ZgYv9hYYc87ooml5rCdmO/sbsyWcJ3aoMft6CWhsFu9N9tDv9nyh9U7v7rEtZvBb9U9WFdDpwXUX73CjAY1fRuy5EVAgVSoDWnpy2qiWSU93/yLksHPG/HBz+FDn4+3jW8+bOGNdeejT14xruWjG69EoXmmmViaKHvo+AY3O4q4cd86w/+sZ+dL0MS3j5+3q5WRVAd3y2ITmEVc/3z1znWcQf249CCggT2VAU3Eg+MZmmj7UnyEhoIA8Aipl64C0z0BAgUMMAZUyfWbaZyCgwCGGgEpZlvY7eAIKHGoIaN9BQIFDDAFVgoAC8jIM6K72875GQA8WAgrIyy6gXSP8P1P5FasDq6JAQBtHQAF52QX0/uDv/F5mdWBVFAho4wgoIC+7gA4sFBYueuwtqwOrokBAG0dAAXmZBfSZQqHZrp5vE9APgYAC8jIJ6KJC4bqphcLN1gdWRYGANo6AAvIyCeiL/Qr/+KXCma9ZH1gVBQLaOAIKyMskoG+3+Z8fTbc/rioKBLRxBBSQl01Al55RKJy10f64qigQ0MYRUEBeNgF9+6fNw36V4LCqKBDQxhFQQF5GAU2oKgoEtHEEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIA8AqoEAQXkEVAlCCggj4AqQUABeQRUCQIKyCOgShBQQB4BVYKAAvIIqBIEFJBHQJUgoIC8DStWrM36GhpXFQUCCiBLDxQKN2d9DYkRUABZIqAAkBABBYCECCgAJERAASAhAgoACRFQANCIgAJAQgQUABIioACQEAEFgIQIKAAkREABICECCiAjPzNvlG+9eePwpuE3bM30apIgoACyse+CSkDXf8uY4ca0rsv2guwRUABZ6Fz9PVMOaOc4c/kOd/tlZmxnxhdli4ACyMCtTcZUArrCDNnrbfYMNk9me1HWCCiADDz6ox/9qBLQG83sYDvLzMzykhIgoAAyUgnoVLM82P7SfDfLy0mAgALISCWgY83zwXaVuSDLy0mAgALISCWgreaVYPuKGZjh1SRBQAFkpCegrwbbjaYly8tJgIACyEjtW/gxWV5OAgQUQEZ6PkR6ItguN/+W5eUkQEABZKQS0BvM3GA719yY5eUkQEABZKQS0CfM8P3e5sBwvkgPAI3p/lXOseYHB9wD15lx/ConADSkElB3XatpnTzADNyQ7fXYI6AAMtIdUHfrDcOaht24LdOrSYKAAkBCBBQAEiKgAJAQAQWAhAgoACREQAEgIQIKAAkRUABIiIACQEIEFAASIqAAkBABBYCECCjy4h+duM8knyo4viB3abXz/2nNfcf756y9G4c0Aoq8qBfQhEkioGgMAUVeLPlx4JOOE9643f0QAf3s5s1vCl9fbP7ay3p982YC2ucQUOTMnzqR/1MnDmi6JetlfgLa5xBQ5EwsoO++25FkDgKKxhBQ5EwsoAkRUDSGgCJnYgEt7/hluufrJx116vnr3K2j/+DIzxRXlgesuejPj//oX13wm/gc3SXbdMnXTjn6tLMW7O9l+NqL//yEk/p9u/IPUzx1/mePPe60tpU9s6wZ8emj/vDMObvDex751ilH/sGgVZX5q2cnoH0OAUXO1A/o56Y4nzrzJMc57rZTDvubP3Gcw37h31+6/vDyR/b/eiA6R6Vkc44oP/z5nfWGl35Y3j9usb974MLKFwAu2F+e5efHH/HFLx7pOKfv8vb3nx8+evTicP6q2QloH0RAkTP1A3rYsQtdd8fXvVp9/Gm3dInj/K1//02O87FL77ht4nGOMzY6R7lkDx/mHHPhwiU3/JnjDKo3fLbjHD5m/p0TjnFO8v85ycne7tgFt47zujg5nOXkjw7wyrn+845zibd/sXcZw26aO8A5IZi/enYC2gcRUORM/YA61/nbld6Nm73tu4c7J3qb7Sc4p7/t37/5jx3nF5E5yiXzXjEu8rc7ft85sat2+NZjnOODo1Yc6QfyJcc5fpm/u9wL5OrwrH9X8u94zHG+5LrPO85RD/q7N4Vf+Kya3SWgfRABRc70EtB3/e1ux/nIXv/GqcH9Mx1nTTjuqfhL0HLJCo7zf8H+3ddc807t8HbH+U64P9Dp57oTHeffwt1Lw5eg3lkfd8un9ea7yHG+HT5+drBfNbtLQPsgAoqcqR/QU8P9yi94hvf3d75QHtd1svMXkTnKJTvPcZpf6Lm3eviZjvNKuP/a0l+67hcc57Vw9xXHD6r/g4O9kfn+ynHWh7tLgv2q2V0C2gcRUORMb5/Cu9Eb4f2nR3/z85OROcrD1p7k3X/6lLs2hfdWD/+Ec1RX5KCPOUeXd7uOdD4ezPKp6Hwf7R6+Ltivmt0loH0QAUXOWAT0tGgRj47MURn2xoW/Fzz2l//xbp3hh1de14YO7/nzJac6h0fPGt7qGb4nfCQ+u0tA+yACipyxCOgXnX+pP0dPyTp/9f2WU7zIfXpr7fCTnONKkd3IK9CjnY+5NQE92TmqM9zdUHkkOrtLQPsgAoqcsQjot5xP158jXrLSiv6OM6p2+F87Tvkb9Jtuu60j8jPQ17y35m5NQPs5zrpw93+i81dmrzkt+gACipyxCOgcx1kW3v/UZz7zn5E5ysMGf74t3P9d8MftqodPdJwrw/3vOCd3uRMc59/D3anh5+1VAZ3c/Sl8/2C/anaXgPZBBBQ5YxHQnSc4n9vs727/ovOR1yJzlIe1OUe+FOzf5Thn1w5ffZhz4lP+/rqPOc2u+6LjnLDC3112nOP81q0J6EuV74HeEX4PtGp2l4D2QQQUOWMRUHee17wpC++96lTHuTw6R3nYbY7ziX+/+4EFw49wnHvqDP+u4xxxwYJ7rvg95zg/hRP93VtvHXt4+ItH1QF1J5IIeBUAAAEXSURBVPm/ifSTmwY5nwv2q2cnoH0QAUXO2AS0dM1h4WfqH5kS/TioMqzzvMpn7kdcU2945yXlh0+8y9/dP6YyfPyB2FnLt/a3hY9+/Plgv3p2AtoHEVDkjE1AXfeF0acdc/IZY9fG5+gev7z1L08+5rN/f/VWt/7wZ0adduzJX5lQ+eP1Twz7o2OO/ez5K6tm6b71SOspR35yyIbKfvXsBLTPIaBAjYxKRkD7HAIK1CCgaAwBBWoQUDSGgAI1CCgaQ0CBGsFn4yn+u/D18O/C90UEFKhBQNEYAgoACRFQAEiIgAJAQgQUABIioACQEAEFgIQIKAAkREABICECCgAJEVAASIiAAkBCBBQAEiKgAJAQAQWAhP4fn/GIO88XPMIAAAAASUVORK5CYII=" width="672" /></p> <p>Here we get a performance benefit of a factor of 10.1 using the version of the differential equation model compiled from C code!</p> <p>This vignette was built with mkin 0.9.44.9000 on</p> <pre><code>## R version 3.3.1 (2016-06-21) |