(v1.5.0.9034) unit test fix

This commit is contained in:
dr. M.S. (Matthijs) Berends 2021-03-07 21:16:45 +01:00
parent 1bbf409fe5
commit 450bbe5fb7
17 changed files with 49 additions and 35 deletions

View File

@ -1,5 +1,5 @@
Package: AMR Package: AMR
Version: 1.5.0.9033 Version: 1.5.0.9034
Date: 2021-03-07 Date: 2021-03-07
Title: Antimicrobial Resistance Data Analysis Title: Antimicrobial Resistance Data Analysis
Authors@R: c( Authors@R: c(

View File

@ -48,6 +48,7 @@ S3method(as.data.frame,ab)
S3method(as.data.frame,mo) S3method(as.data.frame,mo)
S3method(as.double,mic) S3method(as.double,mic)
S3method(as.integer,mic) S3method(as.integer,mic)
S3method(as.matrix,mic)
S3method(as.numeric,mic) S3method(as.numeric,mic)
S3method(as.rsi,data.frame) S3method(as.rsi,data.frame)
S3method(as.rsi,default) S3method(as.rsi,default)
@ -308,6 +309,7 @@ export(theme_rsi)
importFrom(graphics,arrows) importFrom(graphics,arrows)
importFrom(graphics,axis) importFrom(graphics,axis)
importFrom(graphics,barplot) importFrom(graphics,barplot)
importFrom(graphics,hist)
importFrom(graphics,legend) importFrom(graphics,legend)
importFrom(graphics,mtext) importFrom(graphics,mtext)
importFrom(graphics,plot) importFrom(graphics,plot)
@ -316,8 +318,10 @@ importFrom(graphics,text)
importFrom(stats,complete.cases) importFrom(stats,complete.cases)
importFrom(stats,glm) importFrom(stats,glm)
importFrom(stats,lm) importFrom(stats,lm)
importFrom(stats,median)
importFrom(stats,pchisq) importFrom(stats,pchisq)
importFrom(stats,prcomp) importFrom(stats,prcomp)
importFrom(stats,predict) importFrom(stats,predict)
importFrom(stats,qchisq) importFrom(stats,qchisq)
importFrom(stats,quantile)
importFrom(stats,var) importFrom(stats,var)

View File

@ -1,4 +1,4 @@
# AMR 1.5.0.9033 # AMR 1.5.0.9034
## <small>Last updated: 7 March 2021</small> ## <small>Last updated: 7 March 2021</small>
### New ### New

42
R/mic.R
View File

@ -68,7 +68,7 @@
#' #> 10 16 A #' #> 10 16 A
#' ``` #' ```
#' #'
#' The following [generic functions][groupGeneric()] are implemented for the MIC class: `!`, `!=`, `%%`, `%/%`, `&`, `*`, `+`, `-`, `/`, `<`, `<=`, `==`, `>`, `>=`, `^`, `|`, [abs()], [acos()], [acosh()], [all()], [any()], [asin()], [asinh()], [atan()], [atanh()], [ceiling()], [cos()], [cosh()], [cospi()], [cummax()], [cummin()], [cumprod()], [cumsum()], [digamma()], [exp()], [expm1()], [floor()], [gamma()], [lgamma()], [log()], [log10()], [log1p()], [log2()], [max()], [mean()], [median()], [min()], [prod()], [quantile()], [range()], [round()], [sign()], [signif()], [sin()], [sinh()], [sinpi()], [sqrt()], [sum()], [tan()], [tanh()], [tanpi()], [trigamma()] and [trunc()]. #' The following [generic functions][groupGeneric()] are implemented for the MIC class: `!`, `!=`, `%%`, `%/%`, `&`, `*`, `+`, `-`, `/`, `<`, `<=`, `==`, `>`, `>=`, `^`, `|`, [abs()], [acos()], [acosh()], [all()], [any()], [asin()], [asinh()], [atan()], [atanh()], [ceiling()], [cos()], [cosh()], [cospi()], [cummax()], [cummin()], [cumprod()], [cumsum()], [digamma()], [exp()], [expm1()], [floor()], [gamma()], [lgamma()], [log()], [log1p()], [log2()], [log10()], [max()], [mean()], [min()], [prod()], [range()], [round()], [sign()], [signif()], [sin()], [sinh()], [sinpi()], [sqrt()], [sum()], [tan()], [tanh()], [tanpi()], [trigamma()] and [trunc()]. Some functions of the `stats` package are also implemented: [median()], [quantile()], [mad()], [IQR()], [fivenum()]. Also, [boxplot.stats()] is supported. Since [sd()] and [var()] are non-generic functions, these could not be extended. Use [mad()] as an alternative, or use e.g. `sd(as.numeric(x))` where `x` is your vector of MIC values.
#' @return Ordered [factor] with additional class [`mic`], that in mathematical operations acts as decimal numbers. Bare in mind that the outcome of any mathematical operation on MICs will return a numeric value. #' @return Ordered [factor] with additional class [`mic`], that in mathematical operations acts as decimal numbers. Bare in mind that the outcome of any mathematical operation on MICs will return a numeric value.
#' @aliases mic #' @aliases mic
#' @export #' @export
@ -118,29 +118,29 @@ as.mic <- function(x, na.rm = FALSE) {
x <- gsub("\u2264", "<=", x, fixed = TRUE) x <- gsub("\u2264", "<=", x, fixed = TRUE)
x <- gsub("\u2265", ">=", x, fixed = TRUE) x <- gsub("\u2265", ">=", x, fixed = TRUE)
# remove space between operator and number ("<= 0.002" -> "<=0.002") # remove space between operator and number ("<= 0.002" -> "<=0.002")
x <- gsub("(<|=|>) +", "\\1", x) x <- gsub("(<|=|>) +", "\\1", x, perl = TRUE)
# transform => to >= and =< to <= # transform => to >= and =< to <=
x <- gsub("=<", "<=", x, fixed = TRUE) x <- gsub("=<", "<=", x, fixed = TRUE)
x <- gsub("=>", ">=", x, fixed = TRUE) x <- gsub("=>", ">=", x, fixed = TRUE)
# dots without a leading zero must start with 0 # dots without a leading zero must start with 0
x <- gsub("([^0-9]|^)[.]", "\\10.", x) x <- gsub("([^0-9]|^)[.]", "\\10.", x, perl = TRUE)
# values like "<=0.2560.512" should be 0.512 # values like "<=0.2560.512" should be 0.512
x <- gsub(".*[.].*[.]", "0.", x) x <- gsub(".*[.].*[.]", "0.", x, perl = TRUE)
# remove ending .0 # remove ending .0
x <- gsub("[.]+0$", "", x) x <- gsub("[.]+0$", "", x, perl = TRUE)
# remove all after last digit # remove all after last digit
x <- gsub("[^0-9]+$", "", x) x <- gsub("[^0-9]+$", "", x, perl = TRUE)
# keep only one zero before dot # keep only one zero before dot
x <- gsub("0+[.]", "0.", x) x <- gsub("0+[.]", "0.", x, perl = TRUE)
# starting 00 is probably 0.0 if there's no dot yet # starting 00 is probably 0.0 if there's no dot yet
x[!x %like% "[.]"] <- gsub("^00", "0.0", x[!x %like% "[.]"]) x[!x %like% "[.]"] <- gsub("^00", "0.0", x[!x %like% "[.]"])
# remove last zeroes # remove last zeroes
x <- gsub("([.].?)0+$", "\\1", x) x <- gsub("([.].?)0+$", "\\1", x, perl = TRUE)
x <- gsub("(.*[.])0+$", "\\10", x) x <- gsub("(.*[.])0+$", "\\10", x, perl = TRUE)
# remove ending .0 again # remove ending .0 again
x[x %like% "[.]"] <- gsub("0+$", "", x[x %like% "[.]"]) x[x %like% "[.]"] <- gsub("0+$", "", x[x %like% "[.]"])
# never end with dot # never end with dot
x <- gsub("[.]$", "", x) x <- gsub("[.]$", "", x, perl = TRUE)
# force to be character # force to be character
x <- as.character(x) x <- as.character(x)
# trim it # trim it
@ -199,21 +199,21 @@ is.mic <- function(x) {
#' @export #' @export
#' @noRd #' @noRd
as.double.mic <- function(x, ...) { as.double.mic <- function(x, ...) {
as.double(gsub("[<=>]+", "", as.character(x))) as.double(gsub("[<=>]+", "", as.character(x), perl = TRUE))
} }
#' @method as.integer mic #' @method as.integer mic
#' @export #' @export
#' @noRd #' @noRd
as.integer.mic <- function(x, ...) { as.integer.mic <- function(x, ...) {
as.integer(gsub("[<=>]+", "", as.character(x))) as.integer(gsub("[<=>]+", "", as.character(x), perl = TRUE))
} }
#' @method as.numeric mic #' @method as.numeric mic
#' @export #' @export
#' @noRd #' @noRd
as.numeric.mic <- function(x, ...) { as.numeric.mic <- function(x, ...) {
as.numeric(gsub("[<=>]+", "", as.character(x))) as.numeric(gsub("[<=>]+", "", as.character(x), perl = TRUE))
} }
#' @method droplevels mic #' @method droplevels mic
@ -263,6 +263,13 @@ summary.mic <- function(object, ...) {
summary(as.double(object), ...) summary(as.double(object), ...)
} }
#' @method as.matrix mic
#' @export
#' @noRd
as.matrix.mic <- function(x, ...) {
as.matrix(as.double(x), ...)
}
#' @method [ mic #' @method [ mic
#' @export #' @export
#' @noRd #' @noRd
@ -328,10 +335,11 @@ sort.mic <- function(x, decreasing = FALSE, ...) {
} }
#' @method hist mic #' @method hist mic
#' @importFrom graphics hist
#' @export #' @export
#' @noRd #' @noRd
hist.mic <- function(x, ...) { hist.mic <- function(x, ...) {
warning_("Use `plot()` or `ggplot()` for plotting MIC values", call = FALSE) warning_("Use `plot()` or `ggplot()` for optimal plotting of MIC values", call = FALSE)
hist(log2(x)) hist(log2(x))
} }
@ -357,18 +365,20 @@ mean.mic <- function(x, trim = 0, na.rm = FALSE, ...) {
} }
#' @method median mic #' @method median mic
#' @importFrom stats median
#' @export #' @export
#' @noRd #' @noRd
median.mic <- function(x, na.rm = FALSE, ...) { median.mic <- function(x, na.rm = FALSE, ...) {
stats::median(as.double(x), na.rm = na.rm, ...) median(as.double(x), na.rm = na.rm, ...)
} }
#' @method quantile mic #' @method quantile mic
#' @importFrom stats quantile
#' @export #' @export
#' @noRd #' @noRd
quantile.mic <- function(x, probs = seq(0, 1, 0.25), na.rm = FALSE, quantile.mic <- function(x, probs = seq(0, 1, 0.25), na.rm = FALSE,
names = TRUE, type = 7, ...) { names = TRUE, type = 7, ...) {
stats::quantile(as.double(x), props = props, na.rm = na.rm, names = names, type = type, ...) quantile(as.double(x), probs = probs, na.rm = na.rm, names = names, type = type, ...)
} }
# Math (see ?groupGeneric) ---------------------------------------------- # Math (see ?groupGeneric) ----------------------------------------------

View File

@ -121,10 +121,10 @@ random_exec <- function(type, size, mo = NULL, ab = NULL) {
} }
out <- as.mic(sample(set_range, size = size, replace = TRUE)) out <- as.mic(sample(set_range, size = size, replace = TRUE))
# 50% chance that lowest will get <= and highest will get >= # 50% chance that lowest will get <= and highest will get >=
if (runif(1) > 0.5) { if (stats::runif(1) > 0.5) {
out[out == min(out)] <- paste0("<=", out[out == min(out)]) out[out == min(out)] <- paste0("<=", out[out == min(out)])
} }
if (runif(1) > 0.5) { if (stats::runif(1) > 0.5) {
out[out == max(out)] <- paste0(">=", out[out == max(out)]) out[out == max(out)] <- paste0(">=", out[out == max(out)])
} }
return(out) return(out)

Binary file not shown.

View File

@ -81,7 +81,7 @@
</button> </button>
<span class="navbar-brand"> <span class="navbar-brand">
<a class="navbar-link" href="https://msberends.github.io/AMR//index.html">AMR (for R)</a> <a class="navbar-link" href="https://msberends.github.io/AMR//index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9033</span> <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9034</span>
</span> </span>
</div> </div>

View File

@ -81,7 +81,7 @@
</button> </button>
<span class="navbar-brand"> <span class="navbar-brand">
<a class="navbar-link" href="index.html">AMR (for R)</a> <a class="navbar-link" href="index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9033</span> <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9034</span>
</span> </span>
</div> </div>

View File

@ -81,7 +81,7 @@
</button> </button>
<span class="navbar-brand"> <span class="navbar-brand">
<a class="navbar-link" href="../index.html">AMR (for R)</a> <a class="navbar-link" href="../index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9033</span> <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9034</span>
</span> </span>
</div> </div>

View File

@ -81,7 +81,7 @@
</button> </button>
<span class="navbar-brand"> <span class="navbar-brand">
<a class="navbar-link" href="index.html">AMR (for R)</a> <a class="navbar-link" href="index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9033</span> <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9034</span>
</span> </span>
</div> </div>

View File

@ -43,7 +43,7 @@
</button> </button>
<span class="navbar-brand"> <span class="navbar-brand">
<a class="navbar-link" href="index.html">AMR (for R)</a> <a class="navbar-link" href="index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9033</span> <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9034</span>
</span> </span>
</div> </div>

View File

@ -81,7 +81,7 @@
</button> </button>
<span class="navbar-brand"> <span class="navbar-brand">
<a class="navbar-link" href="../index.html">AMR (for R)</a> <a class="navbar-link" href="../index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9033</span> <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9034</span>
</span> </span>
</div> </div>
@ -236,9 +236,9 @@
<small>Source: <a href='https://github.com/msberends/AMR/blob/master/NEWS.md'><code>NEWS.md</code></a></small> <small>Source: <a href='https://github.com/msberends/AMR/blob/master/NEWS.md'><code>NEWS.md</code></a></small>
</div> </div>
<div id="amr-1509033" class="section level1"> <div id="amr-1509034" class="section level1">
<h1 class="page-header" data-toc-text="1.5.0.9033"> <h1 class="page-header" data-toc-text="1.5.0.9034">
<a href="#amr-1509033" class="anchor"></a>AMR 1.5.0.9033<small> Unreleased </small> <a href="#amr-1509034" class="anchor"></a>AMR 1.5.0.9034<small> Unreleased </small>
</h1> </h1>
<div id="last-updated-7-march-2021" class="section level2"> <div id="last-updated-7-march-2021" class="section level2">
<h2 class="hasAnchor"> <h2 class="hasAnchor">

View File

@ -12,7 +12,7 @@ articles:
datasets: datasets.html datasets: datasets.html
resistance_predict: resistance_predict.html resistance_predict: resistance_predict.html
welcome_to_AMR: welcome_to_AMR.html welcome_to_AMR: welcome_to_AMR.html
last_built: 2021-03-07T15:15Z last_built: 2021-03-07T19:41Z
urls: urls:
reference: https://msberends.github.io/AMR//reference reference: https://msberends.github.io/AMR//reference
article: https://msberends.github.io/AMR//articles article: https://msberends.github.io/AMR//articles

File diff suppressed because one or more lines are too long

View File

@ -81,7 +81,7 @@
</button> </button>
<span class="navbar-brand"> <span class="navbar-brand">
<a class="navbar-link" href="../index.html">AMR (for R)</a> <a class="navbar-link" href="../index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9033</span> <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9034</span>
</span> </span>
</div> </div>

View File

@ -81,7 +81,7 @@
</button> </button>
<span class="navbar-brand"> <span class="navbar-brand">
<a class="navbar-link" href="index.html">AMR (for R)</a> <a class="navbar-link" href="index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9033</span> <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.5.0.9034</span>
</span> </span>
</div> </div>

View File

@ -54,7 +54,7 @@ subset(df, x > 4) # or with dplyr: df \%>\% filter(x > 4)
#> 10 16 A #> 10 16 A
} }
The following \link[=groupGeneric]{generic functions} are implemented for the MIC class: \code{!}, \code{!=}, \code{\%\%}, \code{\%/\%}, \code{&}, \code{*}, \code{+}, \code{-}, \code{/}, \code{<}, \code{<=}, \code{==}, \code{>}, \code{>=}, \code{^}, \code{|}, \code{\link[=abs]{abs()}}, \code{\link[=acos]{acos()}}, \code{\link[=acosh]{acosh()}}, \code{\link[=all]{all()}}, \code{\link[=any]{any()}}, \code{\link[=asin]{asin()}}, \code{\link[=asinh]{asinh()}}, \code{\link[=atan]{atan()}}, \code{\link[=atanh]{atanh()}}, \code{\link[=ceiling]{ceiling()}}, \code{\link[=cos]{cos()}}, \code{\link[=cosh]{cosh()}}, \code{\link[=cospi]{cospi()}}, \code{\link[=cummax]{cummax()}}, \code{\link[=cummin]{cummin()}}, \code{\link[=cumprod]{cumprod()}}, \code{\link[=cumsum]{cumsum()}}, \code{\link[=digamma]{digamma()}}, \code{\link[=exp]{exp()}}, \code{\link[=expm1]{expm1()}}, \code{\link[=floor]{floor()}}, \code{\link[=gamma]{gamma()}}, \code{\link[=lgamma]{lgamma()}}, \code{\link[=log]{log()}}, \code{\link[=log10]{log10()}}, \code{\link[=log1p]{log1p()}}, \code{\link[=log2]{log2()}}, \code{\link[=max]{max()}}, \code{\link[=mean]{mean()}}, \code{\link[=median]{median()}}, \code{\link[=min]{min()}}, \code{\link[=prod]{prod()}}, \code{\link[=quantile]{quantile()}}, \code{\link[=range]{range()}}, \code{\link[=round]{round()}}, \code{\link[=sign]{sign()}}, \code{\link[=signif]{signif()}}, \code{\link[=sin]{sin()}}, \code{\link[=sinh]{sinh()}}, \code{\link[=sinpi]{sinpi()}}, \code{\link[=sqrt]{sqrt()}}, \code{\link[=sum]{sum()}}, \code{\link[=tan]{tan()}}, \code{\link[=tanh]{tanh()}}, \code{\link[=tanpi]{tanpi()}}, \code{\link[=trigamma]{trigamma()}} and \code{\link[=trunc]{trunc()}}. The following \link[=groupGeneric]{generic functions} are implemented for the MIC class: \code{!}, \code{!=}, \code{\%\%}, \code{\%/\%}, \code{&}, \code{*}, \code{+}, \code{-}, \code{/}, \code{<}, \code{<=}, \code{==}, \code{>}, \code{>=}, \code{^}, \code{|}, \code{\link[=abs]{abs()}}, \code{\link[=acos]{acos()}}, \code{\link[=acosh]{acosh()}}, \code{\link[=all]{all()}}, \code{\link[=any]{any()}}, \code{\link[=asin]{asin()}}, \code{\link[=asinh]{asinh()}}, \code{\link[=atan]{atan()}}, \code{\link[=atanh]{atanh()}}, \code{\link[=ceiling]{ceiling()}}, \code{\link[=cos]{cos()}}, \code{\link[=cosh]{cosh()}}, \code{\link[=cospi]{cospi()}}, \code{\link[=cummax]{cummax()}}, \code{\link[=cummin]{cummin()}}, \code{\link[=cumprod]{cumprod()}}, \code{\link[=cumsum]{cumsum()}}, \code{\link[=digamma]{digamma()}}, \code{\link[=exp]{exp()}}, \code{\link[=expm1]{expm1()}}, \code{\link[=floor]{floor()}}, \code{\link[=gamma]{gamma()}}, \code{\link[=lgamma]{lgamma()}}, \code{\link[=log]{log()}}, \code{\link[=log1p]{log1p()}}, \code{\link[=log2]{log2()}}, \code{\link[=log10]{log10()}}, \code{\link[=max]{max()}}, \code{\link[=mean]{mean()}}, \code{\link[=min]{min()}}, \code{\link[=prod]{prod()}}, \code{\link[=range]{range()}}, \code{\link[=round]{round()}}, \code{\link[=sign]{sign()}}, \code{\link[=signif]{signif()}}, \code{\link[=sin]{sin()}}, \code{\link[=sinh]{sinh()}}, \code{\link[=sinpi]{sinpi()}}, \code{\link[=sqrt]{sqrt()}}, \code{\link[=sum]{sum()}}, \code{\link[=tan]{tan()}}, \code{\link[=tanh]{tanh()}}, \code{\link[=tanpi]{tanpi()}}, \code{\link[=trigamma]{trigamma()}} and \code{\link[=trunc]{trunc()}}. Some functions of the \code{stats} package are also implemented: \code{\link[=median]{median()}}, \code{\link[=quantile]{quantile()}}, \code{\link[=mad]{mad()}}, \code{\link[=IQR]{IQR()}}, \code{\link[=fivenum]{fivenum()}}. Also, \code{\link[=boxplot.stats]{boxplot.stats()}} is supported. Since \code{\link[=sd]{sd()}} and \code{\link[=var]{var()}} are non-generic functions, these could not be extended. Use \code{\link[=mad]{mad()}} as an alternative, or use e.g. \code{sd(as.numeric(x))} where \code{x} is your vector of MIC values.
} }
\section{Stable Lifecycle}{ \section{Stable Lifecycle}{