mirror of
https://github.com/msberends/AMR.git
synced 2024-12-26 17:26:12 +01:00
(v1.2.0.9033) speed improvement mdro(), filter_ab_class()
This commit is contained in:
parent
1d66b5c43c
commit
c0cf7ab02b
1
.lintr
1
.lintr
@ -1 +0,0 @@
|
|||||||
linters: with_defaults(line_length_linter = NULL, trailing_whitespace_linter = NULL, object_name_linter = NULL, cyclocomp_linter = NULL, object_usage_linter = NULL, object_length_linter(length = 50L))
|
|
@ -1,6 +1,6 @@
|
|||||||
Package: AMR
|
Package: AMR
|
||||||
Version: 1.2.0.9032
|
Version: 1.2.0.9033
|
||||||
Date: 2020-07-09
|
Date: 2020-07-12
|
||||||
Title: Antimicrobial Resistance Analysis
|
Title: Antimicrobial Resistance Analysis
|
||||||
Authors@R: c(
|
Authors@R: c(
|
||||||
person(role = c("aut", "cre"),
|
person(role = c("aut", "cre"),
|
||||||
|
5
NEWS.md
5
NEWS.md
@ -1,5 +1,5 @@
|
|||||||
# AMR 1.2.0.9032
|
# AMR 1.2.0.9033
|
||||||
## <small>Last updated: 09-Jul-2020</small>
|
## <small>Last updated: 12-Jul-2020</small>
|
||||||
|
|
||||||
### New
|
### New
|
||||||
* Function `ab_from_text()` to retrieve antimicrobial drug names, doses and forms of administration from clinical texts in e.g. health care records, which also corrects for misspelling since it uses `as.ab()` internally
|
* Function `ab_from_text()` to retrieve antimicrobial drug names, doses and forms of administration from clinical texts in e.g. health care records, which also corrects for misspelling since it uses `as.ab()` internally
|
||||||
@ -36,6 +36,7 @@
|
|||||||
* Changed the summary for class `<mo>`, to highlight the %SI vs. %R
|
* Changed the summary for class `<mo>`, to highlight the %SI vs. %R
|
||||||
* Improved error handling, giving more useful info when functions return an error
|
* Improved error handling, giving more useful info when functions return an error
|
||||||
* Any progress bar will now only show in interactive mode (i.e. not in R Markdown)
|
* Any progress bar will now only show in interactive mode (i.e. not in R Markdown)
|
||||||
|
* Speed improvement for `mdro()` and `filter_ab_class()`
|
||||||
|
|
||||||
### Other
|
### Other
|
||||||
* Moved primary location of this project from GitLab to [GitHub](https://github.com/msberends/AMR), giving us native support for automated syntax checking without being dependent on external services such as AppVeyor and Travis CI.
|
* Moved primary location of this project from GitLab to [GitHub](https://github.com/msberends/AMR), giving us native support for automated syntax checking without being dependent on external services such as AppVeyor and Travis CI.
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#' @param ab_class an antimicrobial class, like `"carbapenems"`. The columns `group`, `atc_group1` and `atc_group2` of the [antibiotics] data set will be searched (case-insensitive) for this value.
|
#' @param ab_class an antimicrobial class, like `"carbapenems"`. The columns `group`, `atc_group1` and `atc_group2` of the [antibiotics] data set will be searched (case-insensitive) for this value.
|
||||||
#' @param result an antibiotic result: S, I or R (or a combination of more of them)
|
#' @param result an antibiotic result: S, I or R (or a combination of more of them)
|
||||||
#' @param scope the scope to check which variables to check, can be `"any"` (default) or `"all"`
|
#' @param scope the scope to check which variables to check, can be `"any"` (default) or `"all"`
|
||||||
#' @param ... parameters passed on to `filter_at` from the `dplyr` package
|
#' @param ... previously used when this package still depended on the `dplyr` package, now ignored
|
||||||
#' @details All columns of `x` will be searched for known antibiotic names, abbreviations, brand names and codes (ATC, EARS-Net, WHO, etc.). This means that a filter function like e.g. [filter_aminoglycosides()] will include column names like 'gen', 'genta', 'J01GB03', 'tobra', 'Tobracin', etc.
|
#' @details All columns of `x` will be searched for known antibiotic names, abbreviations, brand names and codes (ATC, EARS-Net, WHO, etc.). This means that a filter function like e.g. [filter_aminoglycosides()] will include column names like 'gen', 'genta', 'J01GB03', 'tobra', 'Tobracin', etc.
|
||||||
#' @rdname filter_ab_class
|
#' @rdname filter_ab_class
|
||||||
#' @seealso [antibiotic_class_selectors()] for the `select()` equivalent.
|
#' @seealso [antibiotic_class_selectors()] for the `select()` equivalent.
|
||||||
@ -85,13 +85,13 @@ filter_ab_class <- function(x,
|
|||||||
# make result = "SI" works too:
|
# make result = "SI" works too:
|
||||||
result <- unlist(strsplit(result, ""))
|
result <- unlist(strsplit(result, ""))
|
||||||
|
|
||||||
stop_ifnot(all(result %in% c("S", "I", "R")), "`result` must be one or more of: S, I, R")
|
stop_ifnot(all(result %in% c("S", "I", "R")), "`result` must be one or more of: 'S', 'I', 'R'")
|
||||||
stop_ifnot(all(scope %in% c("any", "all")), "`scope` must be one of: any, all")
|
stop_ifnot(all(scope %in% c("any", "all")), "`scope` must be one of: 'any', 'all'")
|
||||||
|
|
||||||
# get all columns in data with names that resemble antibiotics
|
# get all columns in data with names that resemble antibiotics
|
||||||
ab_in_data <- suppressMessages(get_column_abx(x))
|
ab_in_data <- suppressMessages(get_column_abx(x))
|
||||||
if (length(ab_in_data) == 0) {
|
if (length(ab_in_data) == 0) {
|
||||||
message(font_blue("NOTE: no antimicrobial agents found, data left unchanged."))
|
message(font_blue("NOTE: no columns with class <rsi> found (see ?as.rsi), data left unchanged."))
|
||||||
return(x.bak)
|
return(x.bak)
|
||||||
}
|
}
|
||||||
# get reference data
|
# get reference data
|
||||||
@ -146,8 +146,8 @@ filter_ab_class <- function(x,
|
|||||||
"` (", ab_name(names(agents), tolower = TRUE, language = NULL), ")"),
|
"` (", ab_name(names(agents), tolower = TRUE, language = NULL), ")"),
|
||||||
collapse = scope_txt),
|
collapse = scope_txt),
|
||||||
operator, toString(result))))
|
operator, toString(result))))
|
||||||
filtered <- as.logical(by(x, seq_len(nrow(x)),
|
x_transposed <- as.list(as.data.frame(t(x[, agents, drop = FALSE])))
|
||||||
function(row) scope_fn(unlist(row[, agents]) %in% result, na.rm = TRUE)))
|
filtered <- sapply(x_transposed, function(y) scope_fn(y %in% result, na.rm = TRUE))
|
||||||
x <- x[which(filtered), , drop = FALSE]
|
x <- x[which(filtered), , drop = FALSE]
|
||||||
class(x) <- x_class
|
class(x) <- x_class
|
||||||
x
|
x
|
||||||
|
10
R/mdro.R
10
R/mdro.R
@ -468,9 +468,8 @@ mdro <- function(x,
|
|||||||
} else if (any_all == "all") {
|
} else if (any_all == "all") {
|
||||||
search_function <- all
|
search_function <- all
|
||||||
}
|
}
|
||||||
row_filter <- as.logical(by(x,
|
x_transposed <- as.list(as.data.frame(t(x[, cols, drop = FALSE])))
|
||||||
seq_len(nrow(x)),
|
row_filter <- sapply(x_transposed, function(y) search_function(y %in% search_result, na.rm = TRUE))
|
||||||
function(row) search_function(unlist(row[, cols]) %in% search_result, na.rm = TRUE)))
|
|
||||||
row_filter <- x[row_filter, "row_number", drop = TRUE]
|
row_filter <- x[row_filter, "row_number", drop = TRUE]
|
||||||
rows <- rows[rows %in% row_filter]
|
rows <- rows[rows %in% row_filter]
|
||||||
x[rows, "MDRO"] <<- to
|
x[rows, "MDRO"] <<- to
|
||||||
@ -507,9 +506,8 @@ mdro <- function(x,
|
|||||||
na.rm = TRUE)
|
na.rm = TRUE)
|
||||||
})
|
})
|
||||||
# for PDR; all agents are R (or I if combine_SI = FALSE)
|
# for PDR; all agents are R (or I if combine_SI = FALSE)
|
||||||
row_filter <- as.logical(by(x[rows, ],
|
x_transposed <- as.list(as.data.frame(t(x[rows, lst_vector, drop = FALSE])))
|
||||||
seq_len(nrow(x[rows, ])),
|
row_filter <- sapply(x_transposed, function(y) all(y %in% search_result, na.rm = TRUE))
|
||||||
function(row) all(unlist(row[, lst_vector]) %in% search_result, na.rm = TRUE)))
|
|
||||||
x[row_filter, "classes_affected"] <<- 999
|
x[row_filter, "classes_affected"] <<- 999
|
||||||
}
|
}
|
||||||
|
|
||||||
|
34
codecov.yml
Normal file
34
codecov.yml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# ==================================================================== #
|
||||||
|
# TITLE #
|
||||||
|
# Antimicrobial Resistance (AMR) Analysis #
|
||||||
|
# #
|
||||||
|
# SOURCE #
|
||||||
|
# https://github.com/msberends/AMR #
|
||||||
|
# #
|
||||||
|
# LICENCE #
|
||||||
|
# (c) 2018-2020 Berends MS, Luz CF et al. #
|
||||||
|
# #
|
||||||
|
# This R package is free software; you can freely use and distribute #
|
||||||
|
# it for both personal and commercial purposes under the terms of the #
|
||||||
|
# GNU General Public License version 2.0 (GNU GPL-2), as published by #
|
||||||
|
# the Free Software Foundation. #
|
||||||
|
# #
|
||||||
|
# We created this package for both routine data analysis and academic #
|
||||||
|
# research and it was publicly released in the hope that it will be #
|
||||||
|
# useful, but it comes WITHOUT ANY WARRANTY OR LIABILITY. #
|
||||||
|
# Visit our website for more info: https://msberends.github.io/AMR. #
|
||||||
|
# ==================================================================== #
|
||||||
|
|
||||||
|
codecov:
|
||||||
|
require_ci_to_pass: no # allow fail
|
||||||
|
|
||||||
|
comment: no
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
precision: 1
|
||||||
|
round: up
|
||||||
|
range: "0...100"
|
||||||
|
status:
|
||||||
|
project: no
|
||||||
|
patch: no
|
||||||
|
changes: no
|
@ -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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -39,7 +39,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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -186,7 +186,7 @@
|
|||||||
<h1 data-toc-skip>How to work with WHONET data</h1>
|
<h1 data-toc-skip>How to work with WHONET data</h1>
|
||||||
<h4 class="author">Matthijs S. Berends</h4>
|
<h4 class="author">Matthijs S. Berends</h4>
|
||||||
|
|
||||||
<h4 class="date">09 July 2020</h4>
|
<h4 class="date">12 July 2020</h4>
|
||||||
|
|
||||||
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/master/vignettes/WHONET.Rmd"><code>vignettes/WHONET.Rmd</code></a></small>
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/master/vignettes/WHONET.Rmd"><code>vignettes/WHONET.Rmd</code></a></small>
|
||||||
<div class="hidden name"><code>WHONET.Rmd</code></div>
|
<div class="hidden name"><code>WHONET.Rmd</code></div>
|
||||||
|
@ -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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -229,13 +229,13 @@
|
|||||||
<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-1209032" class="section level1">
|
<div id="amr-1209033" class="section level1">
|
||||||
<h1 class="page-header" data-toc-text="1.2.0.9032">
|
<h1 class="page-header" data-toc-text="1.2.0.9033">
|
||||||
<a href="#amr-1209032" class="anchor"></a>AMR 1.2.0.9032<small> Unreleased </small>
|
<a href="#amr-1209033" class="anchor"></a>AMR 1.2.0.9033<small> Unreleased </small>
|
||||||
</h1>
|
</h1>
|
||||||
<div id="last-updated-09-jul-2020" class="section level2">
|
<div id="last-updated-12-jul-2020" class="section level2">
|
||||||
<h2 class="hasAnchor">
|
<h2 class="hasAnchor">
|
||||||
<a href="#last-updated-09-jul-2020" class="anchor"></a><small>Last updated: 09-Jul-2020</small>
|
<a href="#last-updated-12-jul-2020" class="anchor"></a><small>Last updated: 12-Jul-2020</small>
|
||||||
</h2>
|
</h2>
|
||||||
<div id="new" class="section level3">
|
<div id="new" class="section level3">
|
||||||
<h3 class="hasAnchor">
|
<h3 class="hasAnchor">
|
||||||
@ -286,6 +286,8 @@
|
|||||||
<li>Changed the summary for class <code><mo></code>, to highlight the %SI vs. %R</li>
|
<li>Changed the summary for class <code><mo></code>, to highlight the %SI vs. %R</li>
|
||||||
<li>Improved error handling, giving more useful info when functions return an error</li>
|
<li>Improved error handling, giving more useful info when functions return an error</li>
|
||||||
<li>Any progress bar will now only show in interactive mode (i.e. not in R Markdown)</li>
|
<li>Any progress bar will now only show in interactive mode (i.e. not in R Markdown)</li>
|
||||||
|
<li>Speed improvement for <code><a href="../reference/mdro.html">mdro()</a></code> and <code><a href="../reference/filter_ab_class.html">filter_ab_class()</a></code>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="other" class="section level3">
|
<div id="other" class="section level3">
|
||||||
|
@ -10,7 +10,7 @@ articles:
|
|||||||
WHONET: WHONET.html
|
WHONET: WHONET.html
|
||||||
benchmarks: benchmarks.html
|
benchmarks: benchmarks.html
|
||||||
resistance_predict: resistance_predict.html
|
resistance_predict: resistance_predict.html
|
||||||
last_built: 2020-07-09T18:06Z
|
last_built: 2020-07-12T09:42Z
|
||||||
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
|
||||||
|
@ -82,7 +82,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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -284,7 +284,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>...</th>
|
<th>...</th>
|
||||||
<td><p>parameters passed on to <code>filter_at</code> from the <code>dplyr</code> package</p></td>
|
<td><p>previously used when this package still depended on the <code>dplyr</code> package, now ignored</p></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@ -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.2.0.9032</span>
|
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">1.2.0.9033</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ filter_tetracyclines(x, result = NULL, scope = "any", ...)
|
|||||||
|
|
||||||
\item{scope}{the scope to check which variables to check, can be \code{"any"} (default) or \code{"all"}}
|
\item{scope}{the scope to check which variables to check, can be \code{"any"} (default) or \code{"all"}}
|
||||||
|
|
||||||
\item{...}{parameters passed on to \code{filter_at} from the \code{dplyr} package}
|
\item{...}{previously used when this package still depended on the \code{dplyr} package, now ignored}
|
||||||
}
|
}
|
||||||
\description{
|
\description{
|
||||||
Filter isolates on results in specific antimicrobial classes. This makes it easy to filter on isolates that were tested for e.g. any aminoglycoside, or to filter on carbapenem-resistant isolates without the need to specify the drugs.
|
Filter isolates on results in specific antimicrobial classes. This makes it easy to filter on isolates that were tested for e.g. any aminoglycoside, or to filter on carbapenem-resistant isolates without the need to specify the drugs.
|
||||||
|
Loading…
Reference in New Issue
Block a user