diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | DESCRIPTION | 2 | ||||
-rw-r--r-- | R/set_nd.R (renamed from R/process_residues.R) | 6 | ||||
-rw-r--r-- | _pkgdown.yml | 1 | ||||
-rw-r--r-- | docs/reference/index.html | 15 | ||||
-rw-r--r-- | docs/reference/set_nd.html | 247 | ||||
-rw-r--r-- | docs/sitemap.xml | 3 | ||||
-rw-r--r-- | man/set_nd.Rd | 8 | ||||
-rw-r--r-- | test.log | 27 | ||||
-rw-r--r-- | tests/testthat/test_set_nd.R | 42 |
10 files changed, 339 insertions, 18 deletions
@@ -1,3 +1,9 @@ +commit 63df3871a442de4bf47e4d9de1449e7f6ed65b2f +Author: Johannes Ranke <jranke@uni-bremen.de> +Date: 2019-10-09 19:17:07 +0200 + + Function to set non-detects in residue series + commit 9f848a9518aabf162723271bafba244221ee83ed Author: Johannes Ranke <johannes.ranke@jrwb.de> Date: 2019-09-27 12:55:03 +0200 diff --git a/DESCRIPTION b/DESCRIPTION index 73c561d..39e174b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -2,7 +2,7 @@ Package: pfm Type: Package Title: Utilities for Pesticide Fate Modelling Version: 0.5.7 -Date: 2019-10-09 +Date: 2019-10-10 Authors@R: person("Johannes Ranke", email = "jranke@uni-bremen.de", role = c("aut", "cre", "cph"), comment = c(ORCID = "0000-0003-4371-6538")) diff --git a/R/process_residues.R b/R/set_nd.R index 35d3a4e..5d98940 100644 --- a/R/process_residues.R +++ b/R/set_nd.R @@ -16,6 +16,8 @@ #' @param lod Limit of detection (numeric) #' @param loq Limit of quantification(numeric). Must be specified if the FOCUS rule to #' stop after the first non-detection is to be applied +#' @param time_zero Is the first value in the series a time zero value? +#' @param time_zero_nd_value Which value should we use for non-detects at time zero? #' @param stop_after_first_nondetect Should we really stop after the first non-detection? #' @references FOCUS (2014) p. 75, 76, 131, 132 #' @export @@ -100,8 +102,8 @@ set_nd <- function(r, lod, loq = NA, #' @describeIn set_nd Set non-detects in residues series according to FOCUS rules #' @export -set_nd_focus <- function(res, lod, loq = NA, time_zero = TRUE) { - result <- set_nd(res, lod, loq = loq, time_zero = time_zero, +set_nd_focus <- function(r, lod, loq = NA, time_zero = TRUE) { + result <- set_nd(r, lod, loq = loq, time_zero = time_zero, time_zero_nd_value = 0, stop_after_first_nondetect = TRUE) return(result) } diff --git a/_pkgdown.yml b/_pkgdown.yml index bec5bf7..e12082d 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -18,6 +18,7 @@ reference: - pfm_degradation - SFO_actual_twa - FOMC_actual_twa + - set_nd - title: Predicted environmental concentrations in soil contents: - PEC_soil diff --git a/docs/reference/index.html b/docs/reference/index.html index e1acfc1..a704ad0 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -167,6 +167,21 @@ <p><code><a href="FOMC_actual_twa.html">FOMC_actual_twa()</a></code> </p> </td> <td><p>Actual and maximum moving window time average concentrations for FOMC kinetics</p></td> + </tr><tr> + + <td> + <p><code><a href="set_nd.html">set_nd()</a></code> <code><a href="set_nd.html">set_nd_focus()</a></code> </p> + </td> + <td><p>Set non-detects in residue series without replicates +Sets non-detects directly before or directly after detects to NA. Values between +lod and loq are set to their mean value if an loq is specified. +If 'time_zero' is set to TRUE, the residue series is assumed to start with time +zero, and non-detects at time zero are set to 'time_zero_nd_value'. For the +set_nd_focus variant, this is zero, otherwise this argument has NA as default +value. +If stopping after the first non-detection is requested, as in in the FOCUS +variant of the function, an loq has to be specified in order to decide +if any later detections are above the loq.</p></td> </tr> </tbody><tbody> <tr> diff --git a/docs/reference/set_nd.html b/docs/reference/set_nd.html new file mode 100644 index 0000000..32ac155 --- /dev/null +++ b/docs/reference/set_nd.html @@ -0,0 +1,247 @@ +<!-- Generated by pkgdown: do not edit by hand --> +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<title>Set non-detects in residue series without replicates +Sets non-detects directly before or directly after detects to NA. Values between +lod and loq are set to their mean value if an loq is specified. +If 'time_zero' is set to TRUE, the residue series is assumed to start with time +zero, and non-detects at time zero are set to 'time_zero_nd_value'. For the +set_nd_focus variant, this is zero, otherwise this argument has NA as default +value. +If stopping after the first non-detection is requested, as in in the FOCUS +variant of the function, an loq has to be specified in order to decide +if any later detections are above the loq. — set_nd • pfm</title> + +<!-- jquery --> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<!-- Bootstrap --> + +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> + +<!-- Font Awesome icons --> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.7.1/css/all.min.css" integrity="sha256-nAmazAk6vS34Xqo0BSrTb+abbtFlgsFK7NKSi6o7Y78=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.7.1/css/v4-shims.min.css" integrity="sha256-6qHlizsOWFskGlwVOKuns+D1nB6ssZrHQrNj1wGplHc=" crossorigin="anonymous" /> + +<!-- clipboard.js --> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> + +<!-- headroom.js --> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> + +<!-- pkgdown --> +<link href="../pkgdown.css" rel="stylesheet"> +<script src="../pkgdown.js"></script> + + + +<meta property="og:title" content="Set non-detects in residue series without replicates +Sets non-detects directly before or directly after detects to NA. Values between +lod and loq are set to their mean value if an loq is specified. +If 'time_zero' is set to TRUE, the residue series is assumed to start with time +zero, and non-detects at time zero are set to 'time_zero_nd_value'. For the +set_nd_focus variant, this is zero, otherwise this argument has NA as default +value. +If stopping after the first non-detection is requested, as in in the FOCUS +variant of the function, an loq has to be specified in order to decide +if any later detections are above the loq. — set_nd" /> + +<meta property="og:description" content="Set non-detects in residue series without replicates +Sets non-detects directly before or directly after detects to NA. Values between +lod and loq are set to their mean value if an loq is specified. +If 'time_zero' is set to TRUE, the residue series is assumed to start with time +zero, and non-detects at time zero are set to 'time_zero_nd_value'. For the +set_nd_focus variant, this is zero, otherwise this argument has NA as default +value. +If stopping after the first non-detection is requested, as in in the FOCUS +variant of the function, an loq has to be specified in order to decide +if any later detections are above the loq." /> +<meta name="twitter:card" content="summary" /> + + + +<!-- mathjax --> +<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script> + +<!--[if lt IE 9]> +<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> +<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> +<![endif]--> + + + + </head> + + <body> + <div class="container template-reference-topic"> + <header> + <div class="navbar navbar-default navbar-fixed-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <span class="navbar-brand"> + <a class="navbar-link" href="../index.html">pfm</a> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">0.5.7</span> + </span> + </div> + + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li> + <a href="../index.html"> + <span class="fas fa fas fa-home fa-lg"></span> + + </a> +</li> +<li> + <a href="../reference/index.html">Reference</a> +</li> + </ul> + + <ul class="nav navbar-nav navbar-right"> + + </ul> + + </div><!--/.nav-collapse --> + </div><!--/.container --> +</div><!--/.navbar --> + + + + </header> + +<div class="row"> + <div class="col-md-9 contents"> + <div class="page-header"> + <h1>Set non-detects in residue series without replicates +Sets non-detects directly before or directly after detects to NA. Values between +lod and loq are set to their mean value if an loq is specified. +If 'time_zero' is set to TRUE, the residue series is assumed to start with time +zero, and non-detects at time zero are set to 'time_zero_nd_value'. For the +set_nd_focus variant, this is zero, otherwise this argument has NA as default +value. +If stopping after the first non-detection is requested, as in in the FOCUS +variant of the function, an loq has to be specified in order to decide +if any later detections are above the loq.</h1> + + <div class="hidden name"><code>set_nd.Rd</code></div> + </div> + + <div class="ref-description"> + + <p>Set non-detects in residue series without replicates +Sets non-detects directly before or directly after detects to NA. Values between +lod and loq are set to their mean value if an loq is specified. +If 'time_zero' is set to TRUE, the residue series is assumed to start with time +zero, and non-detects at time zero are set to 'time_zero_nd_value'. For the +set_nd_focus variant, this is zero, otherwise this argument has NA as default +value. +If stopping after the first non-detection is requested, as in in the FOCUS +variant of the function, an loq has to be specified in order to decide +if any later detections are above the loq.</p> + + </div> + + <pre class="usage"><span class='fu'>set_nd</span>(<span class='no'>r</span>, <span class='no'>lod</span>, <span class='kw'>loq</span> <span class='kw'>=</span> <span class='fl'>NA</span>, <span class='kw'>time_zero</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>time_zero_nd_value</span> <span class='kw'>=</span> <span class='fl'>NA</span>, + <span class='kw'>stop_after_first_nondetect</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>) + +<span class='fu'>set_nd_focus</span>(<span class='no'>r</span>, <span class='no'>lod</span>, <span class='kw'>loq</span> <span class='kw'>=</span> <span class='fl'>NA</span>, <span class='kw'>time_zero</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</pre> + + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> + <table class="ref-arguments"> + <colgroup><col class="name" /><col class="desc" /></colgroup> + <tr> + <th>r</th> + <td><p>A character vector of sequential residues without replicates, with +non-detects specified as 'nd' and unquantified values above the limit of +detection specified as 'nq', otherwise coercible to numeric</p></td> + </tr> + <tr> + <th>lod</th> + <td><p>Limit of detection (numeric)</p></td> + </tr> + <tr> + <th>loq</th> + <td><p>Limit of quantification(numeric). Must be specified if the FOCUS rule to +stop after the first non-detection is to be applied</p></td> + </tr> + <tr> + <th>time_zero</th> + <td><p>Is the first value in the series a time zero value?</p></td> + </tr> + <tr> + <th>time_zero_nd_value</th> + <td><p>Which value should we use for non-detects at time zero?</p></td> + </tr> + <tr> + <th>stop_after_first_nondetect</th> + <td><p>Should we really stop after the first non-detection?</p></td> + </tr> + </table> + + <h2 class="hasAnchor" id="functions"><a class="anchor" href="#functions"></a>Functions</h2> + + +<ul> +<li><p><code>set_nd_focus</code>: Set non-detects in residues series according to FOCUS rules</p></li> +</ul> + + <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2> + + <p>FOCUS (2014) p. 75, 76, 131, 132</p> + + + <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> + <pre class="examples"><div class='input'><span class='no'>parent_1</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='fl'>.12</span>, <span class='fl'>.09</span>, <span class='fl'>.05</span>, <span class='fl'>.03</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>) +<span class='fu'>set_nd</span>(<span class='no'>parent_1</span>, <span class='fl'>0.02</span>)</div><div class='output co'>#> [1] 0.12 0.09 0.05 0.03 0.01 NA NA NA NA NA</div><div class='input'><span class='no'>parent_2</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='fl'>.12</span>, <span class='fl'>.09</span>, <span class='fl'>.05</span>, <span class='fl'>.03</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='fl'>.03</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>) +<span class='fu'>set_nd</span>(<span class='no'>parent_2</span>, <span class='fl'>0.02</span>)</div><div class='output co'>#> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.03 0.01 NA NA</div><div class='input'><span class='fu'>set_nd_focus</span>(<span class='no'>parent_2</span>, <span class='fl'>0.02</span>, <span class='kw'>loq</span> <span class='kw'>=</span> <span class='fl'>0.05</span>)</div><div class='output co'>#> [1] 0.12 0.09 0.05 0.03 0.01 NA NA NA NA NA</div><div class='input'><span class='no'>parent_3</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='fl'>.12</span>, <span class='fl'>.09</span>, <span class='fl'>.05</span>, <span class='fl'>.03</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='fl'>.06</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>) +<span class='fu'>set_nd</span>(<span class='no'>parent_3</span>, <span class='fl'>0.02</span>)</div><div class='output co'>#> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.06 0.01 NA NA</div><div class='input'><span class='fu'>set_nd_focus</span>(<span class='no'>parent_3</span>, <span class='fl'>0.02</span>, <span class='kw'>loq</span> <span class='kw'>=</span> <span class='fl'>0.05</span>)</div><div class='output co'>#> [1] 0.12 0.09 0.05 0.03 0.01 0.01 0.06 0.01 NA NA</div><div class='input'><span class='no'>metabolite</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>, <span class='fl'>0.03</span>, <span class='fl'>0.06</span>, <span class='fl'>0.10</span>, <span class='fl'>0.11</span>, <span class='fl'>0.10</span>, <span class='fl'>0.09</span>, <span class='fl'>0.05</span>, <span class='fl'>0.03</span>, <span class='st'>"nd"</span>, <span class='st'>"nd"</span>) +<span class='fu'>set_nd</span>(<span class='no'>metabolite</span>, <span class='fl'>0.02</span>)</div><div class='output co'>#> [1] NA NA 0.01 0.03 0.06 0.10 0.11 0.10 0.09 0.05 0.03 0.01 NA</div></pre> + </div> + <div class="col-md-3 hidden-xs hidden-sm" id="sidebar"> + <h2>Contents</h2> + <ul class="nav nav-pills nav-stacked"> + <li><a href="#arguments">Arguments</a></li> + + <li><a href="#functions">Functions</a></li> + + <li><a href="#references">References</a></li> + + <li><a href="#examples">Examples</a></li> + </ul> + + </div> +</div> + + + <footer> + <div class="copyright"> + <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown"> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.</p> +</div> + + </footer> + </div> + + + + + </body> +</html> + + diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 6eff936..79d9b14 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -100,6 +100,9 @@ <loc>https://pkgdown.jrwb.de/pfm/reference/sawtooth.html</loc> </url> <url> + <loc>https://pkgdown.jrwb.de/pfm/reference/set_nd.html</loc> + </url> + <url> <loc>https://pkgdown.jrwb.de/pfm/reference/soil_scenario_data_EFSA_2015.html</loc> </url> <url> diff --git a/man/set_nd.Rd b/man/set_nd.Rd index 8c766ac..8c6003c 100644 --- a/man/set_nd.Rd +++ b/man/set_nd.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/process_residues.R +% Please edit documentation in R/set_nd.R \name{set_nd} \alias{set_nd} \alias{set_nd_focus} @@ -17,7 +17,7 @@ if any later detections are above the loq.} set_nd(r, lod, loq = NA, time_zero = TRUE, time_zero_nd_value = NA, stop_after_first_nondetect = FALSE) -set_nd_focus(res, lod, loq = NA, time_zero = TRUE) +set_nd_focus(r, lod, loq = NA, time_zero = TRUE) } \arguments{ \item{r}{A character vector of sequential residues without replicates, with @@ -29,6 +29,10 @@ detection specified as 'nq', otherwise coercible to numeric} \item{loq}{Limit of quantification(numeric). Must be specified if the FOCUS rule to stop after the first non-detection is to be applied} +\item{time_zero}{Is the first value in the series a time zero value?} + +\item{time_zero_nd_value}{Which value should we use for non-detects at time zero?} + \item{stop_after_first_nondetect}{Should we really stop after the first non-detection?} } \description{ @@ -2,23 +2,24 @@ Loading pfm Loading required package: R6 Loading required package: mkin Testing pfm -✔ | OK F W S | Context -
⠏ | 0 | Exposit calculations
⠋ | 1 | Exposit calculations
⠙ | 2 | Exposit calculations
⠹ | 3 | Exposit calculations
⠸ | 4 | Exposit calculations
⠼ | 5 | Exposit calculations
⠴ | 6 | Exposit calculations
⠦ | 7 | Exposit calculations
✔ | 7 | Exposit calculations -
⠏ | 0 | Geometric mean calculation
⠋ | 1 | Geometric mean calculation
⠙ | 2 | Geometric mean calculation
⠹ | 3 | Geometric mean calculation
⠸ | 4 | Geometric mean calculation
⠼ | 5 | Geometric mean calculation
⠴ | 6 | Geometric mean calculation
✔ | 6 | Geometric mean calculation -
⠏ | 0 | Check max_twa for parent mkinfit models against analytical solutions
⠋ | 1 | Check max_twa for parent mkinfit models against analytical solutions
✔ | 1 | Check max_twa for parent mkinfit models against analytical solutions [2.0 s] -
⠏ | 0 | Simple PEC sediment calculations
⠋ | 1 | Simple PEC sediment calculations
✔ | 1 | Simple PEC sediment calculations -
⠏ | 0 | Simple PEC soil calculations
⠋ | 1 | Simple PEC soil calculations
⠙ | 2 | Simple PEC soil calculations
⠹ | 3 | Simple PEC soil calculations
⠸ | 4 | Simple PEC soil calculations
⠼ | 5 | Simple PEC soil calculations
⠴ | 6 | Simple PEC soil calculations
⠦ | 7 | Simple PEC soil calculations
⠧ | 8 | Simple PEC soil calculations
⠇ | 9 | Simple PEC soil calculations
⠏ | 10 | Simple PEC soil calculations
⠋ | 11 | Simple PEC soil calculations
⠙ | 12 | Simple PEC soil calculations
⠹ | 13 | Simple PEC soil calculations
⠸ | 14 | Simple PEC soil calculations
⠼ | 15 | Simple PEC soil calculations
⠴ | 16 | Simple PEC soil calculations
⠦ | 17 | Simple PEC soil calculations
✔ | 17 | Simple PEC soil calculations [0.2 s] -
⠏ | 0 | Simple PEC surface water calculations with drift entry
⠋ | 1 | Simple PEC surface water calculations with drift entry
⠙ | 2 | Simple PEC surface water calculations with drift entry
✔ | 2 | Simple PEC surface water calculations with drift entry -
⠏ | 0 | Actual and time weighted average concentrations for SFO kinetics
⠋ | 1 | Actual and time weighted average concentrations for SFO kinetics
✔ | 1 | Actual and time weighted average concentrations for SFO kinetics -
⠏ | 0 | FOCUS Step 1 calculations
⠋ | 1 | FOCUS Step 1 calculations
⠙ | 2 | FOCUS Step 1 calculations
⠹ | 3 | FOCUS Step 1 calculations
⠸ | 4 | FOCUS Step 1 calculations
⠼ | 5 | FOCUS Step 1 calculations
⠴ | 6 | FOCUS Step 1 calculations
⠦ | 7 | FOCUS Step 1 calculations
⠧ | 8 | FOCUS Step 1 calculations
⠇ | 9 | FOCUS Step 1 calculations
✔ | 9 | FOCUS Step 1 calculations [0.1 s] -
⠏ | 0 | FOCUS Steps 12 input files
⠋ | 1 | FOCUS Steps 12 input files
⠙ | 2 | FOCUS Steps 12 input files
⠹ | 3 | FOCUS Steps 12 input files
⠸ | 4 | FOCUS Steps 12 input files
⠼ | 5 | FOCUS Steps 12 input files
⠴ | 6 | FOCUS Steps 12 input files
⠦ | 7 | FOCUS Steps 12 input files
⠧ | 8 | FOCUS Steps 12 input files
✔ | 8 | FOCUS Steps 12 input files -
⠏ | 0 | Read and analyse TOXSWA cwa files
⠋ | 1 | Read and analyse TOXSWA cwa files
⠙ | 2 | Read and analyse TOXSWA cwa files
⠹ | 3 | Read and analyse TOXSWA cwa files
⠸ | 4 | Read and analyse TOXSWA cwa files
⠼ | 5 | Read and analyse TOXSWA cwa files
⠴ | 6 | Read and analyse TOXSWA cwa files
⠦ | 7 | Read and analyse TOXSWA cwa files
✔ | 7 | Read and analyse TOXSWA cwa files [5.6 s] -
⠏ | 0 | UK drainage PEC calculations
⠋ | 1 | UK drainage PEC calculations
⠙ | 2 | UK drainage PEC calculations
⠹ | 3 | UK drainage PEC calculations
⠸ | 4 | UK drainage PEC calculations
⠼ | 5 | UK drainage PEC calculations
⠴ | 6 | UK drainage PEC calculations
⠦ | 7 | UK drainage PEC calculations
⠧ | 8 | UK drainage PEC calculations
⠇ | 9 | UK drainage PEC calculations
⠏ | 10 | UK drainage PEC calculations
⠋ | 11 | UK drainage PEC calculations
⠙ | 12 | UK drainage PEC calculations
✔ | 12 | UK drainage PEC calculations +✔ | OK F W S | Context +
⠏ | 0 | Exposit calculations
✔ | 7 | Exposit calculations +
⠏ | 0 | Geometric mean calculation
✔ | 6 | Geometric mean calculation +
⠏ | 0 | Check max_twa for parent mkinfit models against analytical solutions
⠋ | 1 | Check max_twa for parent mkinfit models against analytical solutions
✔ | 1 | Check max_twa for parent mkinfit models against analytical solutions [1.9 s] +
⠏ | 0 | Simple PEC sediment calculations
✔ | 1 | Simple PEC sediment calculations +
⠏ | 0 | Simple PEC soil calculations
⠙ | 2 | Simple PEC soil calculations
✔ | 17 | Simple PEC soil calculations [0.2 s] +
⠏ | 0 | Simple PEC surface water calculations with drift entry
✔ | 2 | Simple PEC surface water calculations with drift entry +
⠏ | 0 | Processing of residue series
✔ | 8 | Processing of residue series +
⠏ | 0 | Actual and time weighted average concentrations for SFO kinetics
✔ | 1 | Actual and time weighted average concentrations for SFO kinetics +
⠏ | 0 | FOCUS Step 1 calculations
⠹ | 3 | FOCUS Step 1 calculations
✔ | 9 | FOCUS Step 1 calculations [0.1 s] +
⠏ | 0 | FOCUS Steps 12 input files
✔ | 8 | FOCUS Steps 12 input files +
⠏ | 0 | Read and analyse TOXSWA cwa files
⠋ | 1 | Read and analyse TOXSWA cwa files
⠸ | 4 | Read and analyse TOXSWA cwa files
⠼ | 5 | Read and analyse TOXSWA cwa files
⠴ | 6 | Read and analyse TOXSWA cwa files
✔ | 7 | Read and analyse TOXSWA cwa files [5.5 s] +
⠏ | 0 | UK drainage PEC calculations
✔ | 12 | UK drainage PEC calculations ══ Results ═════════════════════════════════════════════════════════════════════════════════════════ Duration: 8.0 s -OK: 71 +OK: 79 Failed: 0 Warnings: 0 Skipped: 0 diff --git a/tests/testthat/test_set_nd.R b/tests/testthat/test_set_nd.R new file mode 100644 index 0000000..29087a8 --- /dev/null +++ b/tests/testthat/test_set_nd.R @@ -0,0 +1,42 @@ +context("Processing of residue series") +# FOCUS (2014) page 76 (parent) and page 132 (metabolite) + +parent_1 <- c(.12, .09, .05, .03, "nd", "nd", "nd", "nd", "nd", "nd") +parent_2 <- c(.12, .09, .05, .03, "nd", "nd", .03, "nd", "nd", "nd") +parent_3 <- c(.12, .09, .05, .03, "nd", "nd", .06, "nd", "nd", "nd") +metabolite <- c("nd", "nd", "nd", 0.03, 0.06, 0.10, 0.11, 0.10, 0.09, 0.05, 0.03, "nd", "nd") + +test_that("Simple residue series processed as intended", { + + expect_equal(set_nd(parent_1, 0.02), + c(.12, .09, .05, .03, .01, rep(NA, 5))) + + expect_equal(set_nd(parent_2, 0.02, loq = 0.05), + c(.12, .09, .05, .03, .01, .01, .03, .01, NA, NA)) + + expect_equal(set_nd(metabolite, 0.02, loq = 0.05), + c(NA, NA, .01, .03, .06, .1, .11, .1, .09, .05, .03, .01, NA)) + +}) + +test_that("Simple residue series are processed as in the FOCUS guidance", { + + # Parent 1 + expect_error(set_nd_focus(parent_1, 0.02), + "You need to specify an loq") + expect_equal(set_nd_focus(parent_1, 0.02, 0.05), + c(.12, .09, .05, .03, .01, rep(NA, 5))) + + # Parent 2 + expect_equal(set_nd_focus(parent_2, 0.02, loq = 0.05), + c(.12, .09, .05, .03, .01, rep(NA, 5))) + + # Parent 3 + expect_equal(set_nd_focus(parent_3, 0.02, loq = 0.05), + c(.12, .09, .05, .03, .01, .01, .06, .01, NA, NA)) + + # Metabolite + expect_equal(set_nd_focus(metabolite, 0.02, loq = 0.05), + c(0, NA, .01, .03, .06, .1, .11, .1, .09, .05, .03, .01, NA)) + +}) |