From b0ca49d68da3cae40c3057757b82a890287f88d8 Mon Sep 17 00:00:00 2001 From: "Matthijs S. Berends" Date: Fri, 14 Sep 2018 11:54:01 +0200 Subject: [PATCH] small improvement for is.rsi.eligible, more unit tests --- NEWS.md | 19 ++++++++++--------- R/mo.R | 21 ++++----------------- R/rsi.R | 6 +++++- data/microorganisms.umcg.rda | Bin 6498 -> 6507 bytes tests/testthat/test-mdro.R | 7 ++++++- tests/testthat/test-mo.R | 7 ++++++- 6 files changed, 31 insertions(+), 29 deletions(-) diff --git a/NEWS.md b/NEWS.md index 16a66e62..684de83b 100755 --- a/NEWS.md +++ b/NEWS.md @@ -18,8 +18,8 @@ thousands_of_E_colis <- rep("E. coli", 25000) microbenchmark::microbenchmark(as.mo(thousands_of_E_colis), unit = "s") # Unit: seconds - # min median max neval - # 0.00861352 0.008774335 0.01952958 100 + # min median max neval + # 0.00861352 0.008774335 0.01952958 100 ``` * Renamed all previous references to `bactid` to `mo`, like: * Column names inputs of `EUCAST_rules`, `first_isolate` and `key_antibiotics` @@ -55,7 +55,8 @@ * For `first_isolate`, rows will be ignored when there's no species available * Function `ratio` is now deprecated and will be removed in a future release, as it is not really the scope of this package * Fix for `as.mic` for values ending in zeroes after a real number -* Tremendous speed improvement for `as.bactid` (now `as.mo`) +* Small fix where *B. fragilis* would not be found in the `microorganisms.umcg` data set +* Fix for `is.rsi.eligible`, now ignores reading marks * Added parameters `minimum` and `as_percent` to `portion_df` * Support for quasiquotation in the functions series `count_*` and `portions_*`, and `n_rsi`. This allows to check for more than 2 vectors or columns. ```r @@ -77,12 +78,12 @@ my_matrix = with(septic_patients, matrix(c(age, sex), ncol = 2)) freq(my_matrix) ``` - * Subsetting also possible for lists: - ```r - my_list = list(age = septic_patients$age, sex = septic_patients$sex) - my_list %>% freq(age) - my_list %>% freq(sex) - ``` + For lists, subsetting is possible: + ```r + my_list = list(age = septic_patients$age, sex = septic_patients$sex) + my_list %>% freq(age) + my_list %>% freq(sex) + ``` #### Other * More unit tests to ensure better integrity of functions diff --git a/R/mo.R b/R/mo.R index f4489d40..7aa4a13c 100644 --- a/R/mo.R +++ b/R/mo.R @@ -138,8 +138,6 @@ as.mo <- function(x, Becker = FALSE, Lancefield = FALSE) { # replace space by regex sign x_withspaces <- gsub(" ", ".* ", x, fixed = TRUE) x <- gsub(" ", ".*", x, fixed = TRUE) - # for species - x_species <- paste(x, 'species') # add start en stop regex x <- paste0('^', x, '$') x_withspaces_all <- x_withspaces @@ -228,12 +226,14 @@ as.mo <- function(x, Becker = FALSE, Lancefield = FALSE) { x[i] <- found[1L] next } + # try the same, now based on genus + species ---- found <- MOs[which(paste(MOs$genus, MOs$species) %like% x_withspaces[i]),]$mo if (length(found) > 0) { x[i] <- found[1L] next } + # try any match keeping spaces, not ending with $ ---- found <- MOs[which(MOs$fullname %like% x_withspaces_start[i]),]$mo if (length(found) > 0) { @@ -248,21 +248,6 @@ as.mo <- function(x, Becker = FALSE, Lancefield = FALSE) { next } - # try exact match of only genus, with 'species' attached ---- - # (this prevents Streptococcus from becoming Peptostreptococcus, since "p" < "s") - found <- MOs[which(MOs$fullname == x_species[i]),]$mo - if (length(found) > 0) { - x[i] <- found[1L] - next - } - - # try any match of only genus, with 'species' attached ---- - found <- MOs[which(MOs$fullname %like% x_species[i]),]$mo - if (length(found) > 0) { - x[i] <- found[1L] - next - } - # try fullname without start and stop regex, to also find subspecies ---- # like "K. pneu rhino" -> "Klebsiella pneumoniae (rhinoscleromatis)" = KLEPNERH found <- MOs[which(gsub("[\\(\\)]", "", MOs$fullname) %like% x_withspaces_all[i]),]$mo @@ -322,6 +307,8 @@ as.mo <- function(x, Becker = FALSE, Lancefield = FALSE) { x[x == "PASAER" & toupper(x_backup) != "PASAER" & !(x_backup %like% '^pas?' | x_backup %like% 'aero')] <- "PSEAER" # avoid detection of Legionella non pneumophila in case of Legionella pneumophila ---- x[x == "LEGNON" & toupper(x_backup) != "LEGNON" & !x_backup %like% 'non'] <- "LEGPNE" + # avoid detection of Streptobacillus in case of Streptococcus ---- + x[x == "STB" & toupper(x_backup) != "STB" & !x_backup %like% 'streptob'] <- "STC" failures <- failures[!failures %in% c(NA, NULL, NaN)] if (length(failures) > 0) { diff --git a/R/rsi.R b/R/rsi.R index db86965d..19017a85 100644 --- a/R/rsi.R +++ b/R/rsi.R @@ -99,10 +99,14 @@ is.rsi <- function(x) { #' @export #' @importFrom dplyr %>% is.rsi.eligible <- function(x) { - distinct_val <- x %>% unique() %>% sort() %>% as.character() + # remove all but a-z + distinct_val <- x %>% unique() %>% sort() %>% as.character() %>% gsub("(\\W|\\d)+", "", .) + # remove NAs and empty values distinct_val <- distinct_val[!is.na(distinct_val) & trimws(distinct_val) != ""] + # get RSI class distinct_val_rsi <- as.character(suppressWarnings(as.rsi(distinct_val))) + # is not empty and identical to new class length(distinct_val) > 0 & identical(distinct_val, distinct_val_rsi) } diff --git a/data/microorganisms.umcg.rda b/data/microorganisms.umcg.rda index c3258c19d11b8d6c37165c9fda1d228701fec3e3..9247cad6b6b7dd5511e6b666f9eb2d464aa76f6b 100755 GIT binary patch literal 6507 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 RNl`!I?ntK!5(MN+V}N=RTCxBD literal 6498 zcmV-o8J*@rT4*^jL0KkKS)b7}3jiu9|H%LHNB{rGMwtW(Pf|Td0000QXaF<~07xdO zv`hdAhK)2v0Ax>0lL$3DLK8rQ(Fspb00006fB-c=Q3MT5GHRPqlhaTD14fw!ho}Gv z5dky^L}^1L05o6&Mu-QfdYi~`yzX%j003d32oS%T`|&@g?fd`tgo`@<=l}pe7yn*y z!3iKj7lw?n009{K|EK)FC)c_#aPkDPEZIK+)t6B}nu8=gD@@jeK{*1@DD+4A)W1;uf?$A91kBIyjemIL{$Xz)8gr+7i9~o1{?zG1@ zW&~GHohxmpf)w#Si?Xo}13YaO$Fl*eKI%Hnfux)Ei`id`@yj_2kirOO7!G&EOo!}@ z>0>4vlg$&hmRH$qAiCQFaapb4L2E~Col}bCGZKvQsEU-ap3h~5ICN7P=^ghq>n4S+~wX#@{7Db`tGaFO8#giE$f?5 zlkp`KEf+WwOz~SBu(zOc*K13Y6!YB%u6wd7&XZbmPbJ3prtWs!TCF@5c!zw;Jdn~7 z9;WuDw_J8~uZCSclhKWk$4iXgmWC}QYJEup3)n&-t z4`s7;g`b1(j85UZUp%f%T#Ud=)>xF4@0jHjWv%A?lp$zmvN?FMyRY|WMyg2rpd)? zWpT^lS{;?@_Q`E<%dO7jR;OpWY@fVQz17OWuCFnh>x6TCsp&sb#^(tP9d}P;s1s#` zc;f5DmV4n@-P433XKP_8g+xjtnazE?w`b8N?KQl%X~OHg;FXPyVsx8t7UmJ_X;x^q z#aHf>_F{cvd(|&Ukz_F+ZmVYMDZ396<>Eba5mahEEfFGYIe zX=V{E|H1)`h&P`X8kjB zQLT!4CgwtRyVVGifew6IiGAOl_D8)8u|_pbo!C?kN@jNp%62JeA&!REdq`xIS*i7~ zQgKnhx|%c+L`G3MGT&u0!PkdGz+_Rjeie|=ADbBnG$w4Mz`rm~{=7;EL-V=LO`Fcp zyA~QIV8X_{Nxn!C9l0e%6jSt_{OWtqjtEx<7X7ql8X+z+H9i{>!$kxj(FPs;p17cj zGf(XLT5Vqrln&S)?F;1Jm=8W6JBI;{6a{!e zVU1hw2x)NEz*;O39i8^&0jjqx*WO)E!^il1N7G}HNzZi}%6$9jP265Q(kR~1@8t)C zh9;KWVq~<(wpIO|ZX9zNFHPd=s{HP}aBU`UzJG(4k^4yu-CvpjP+qFHuQNsGnkob~ z+3r?a1=}JpkX~s;A=#N}3nyVoC6MVfW>9Vz)aD3K{D2NHZ8$^`p`ZrLV5kAJoYYZ6 z5UD#`DyZ6o`*jCg=+_lRop-QJA!wcMP&wV)UA3*Vrc(+egrb#E24`&*)rrqGr9M}+ zX(?5UhppmWtOQeAR;-qS$b^emVSae3|GE`DRj+Kza7$mNmkKXK28dq{ zW+R4dY}E(Q#f!%~!a%Ilw657UwFw*fbu&!O#@fSG)J0)858^hG>8&*$ViO7;B8=J5 zl^JyM3{zXml9sJEX=CYot(MChMG()>(gHX2)_q#>_ff*YyBQk2+&i<0oWuZng=N zh?ppokA*Py^SN!JJQtZN&tBnVo!$Mx24rwX-=9aFJsJ00gzt%#V7N~7jhVhHRfa(Q zqcj&4tDz~!)%kunvC5HyBe`G5DgkLG_X@1yzA);X=)S92Yjf~h1iI?@JE06&H^4^Z zhmWECus_e5cqGS>E;q;KAa$O=y6QTafWtuufkc9o)e!AMM)e9`JHU1pATQ|NZXAG( zZh(jeFjO&zw6B<9KKO6~lO2}E1ddMUS0a@R49I{;7~d6BM38U@M}@QZF4~(pvit3{ zV*}m)9oJxw9sJDN1Sa4f@Bxe2d}^Z6WL<;gg-5r|8xS0X7W?ZZ?`w<_jq@{$64HjS zl?Jz=50s-B1spL*HL!jG%ycrix$*FyY*eNWdG)^a)H={RB~&>N$asNh2zO?$~<(Im>GyzXcRI-&0bI-3wMko0XB*n!_m zd8W}h&s5rOu7uid3GorABTf*507a1rj!G60;X#=}Ot^$mRwHebh->8$E0$;1Rt+#k zTfCxYw7L$2dRW#j*d31t#40e^#1P0J@uV7E&yH*>zf_E}jgb)zF%bEM-?($D6XV-_ zQq*U>!%E{mkunLR%%d?DeZ49W=_phH;27h<78C$rpV zzB$G$EUo~hd?l8Ft5VtrEw~JGc)aavTXG^0(XyLaZbr4LHHLtVr+0z1eCDfcCl*60KoCM7 z6~yNQ!8ePfx@w%1k#Ox;`k4(W%mS7nFl}pcK)aJhL+Runy;+$ z!C;mq0?~JWSpU zUN1vXa2Z8wkHmR6W13vyka|N|v{^jRV};U5F@X{pC7vH!#{yGp2{UK?XUb#d zQwsNBUAtH`PAGa~-eqx0T;?+qdzW(+Ya?LDwS<|z(_UM_iVwmpe4f*Q z2CHiby;oxhF+}CjWUmDM5uvfAZ^e7&g2e%voE=H(p9~?q>O$FHGibC^l;$qe;A|Vu zkGcVJ0-et(0&;RD*In-xLCX=G6*Xg3qD77(EqqiZv6l^uPf)7-;e;$Z9oGQN+QP#z z2QgvE*RdR>4U5s@W=?sk%M3o+vqQA&j%}`B$2vhar8VouJ2Uq8D4fIz zCsBqvrhIN!z0O?L(!!hW&m1oQcGkRbIIpZ;=V4N$RgL~m>p@CbEcliY3dY7^>eX;5 zUf;JDf$I^SpwSv`I>)Hu@mlMSH4l4|`LZ@9#>5av1SEkx8!AW=x!{3*HNO&f-YaR_ zd@=TicMfF)h^J->x-i)Ue+J5aUyNe)^yve6bGLrpwP;v}?mm370b1*n?G6}@RE_tm zQQ9s>9ECwLC6vgxUwLF5a*^=LYJ^(K1jDDYtyjXGzb_at!ns03;6+cxOcuA^m3>9T zeMQ(lQQo#VJ8B=kgvHjdG779K5Jnk>{7v$B_EjAn6Owptz`%(4yvKAE1jIQzime=s zgUm?gJPCx>`$D}n9*rI)V6(n@Ccjiuh;bd;nr-8BgZQC_SlDlCb2BiCu;a;sAWblI z8tSwQ$v;paT&uP!{cJuYb=J6cm3;X)r*f?+?+aMXs6@?XlKapty3TP3Xp)A!IPpHM zAo~w>#RT@5p=7vUY;X37F~s&{-h4%Ejgn`pP4435>N|uMG(e=~f)e^0#cRM|fs~Di zibBQS{%4LI<_-`h^qZSzLieRxZ%k3b3(EzdRjSryx6)EU=FNFQdETZ3KxV zf=bPGyuNvjyZG;-K{SzIqm|ZTj@xbZ#~@p?BrAy9CxO9`5Nm=~0F4P{v`{F)3xfvp zLa#{B%mi3#F#x#E*qWpUQY0p%`C_UaheTcM=4NAx_1Ci|l-cW!b;2{XbU-MK{DzGjyY+;y3M9-)dV**aW?Jc|JPZmI4w#B*Z{m52-<^oZ}sX+3PBHTOh_3@BjI-BJpxa!lm1$CP)JVr7 z>wNVWCuX0%S(z;-veJx+-QUV!OuS>rw8t=Y85^7&-Y01mY3v=t*B7!(vN zG+wm=7(YsJmMFJu5bT0GYgbh!=JHBT5G2f!i$yYti8dG_+O(ldgXa=+*RbLMMj=6WC^|n=tkkluLCL$#tg5Rb%L>X3AV&hwtSjP+F^_g zH3)4sCNKyj0u250tj6b)6sov+Hps$bhWa+zHBCIy+5QPgtUGO+^Ynk3l*qLrR-HT?c{ScLzVlCuP(8rn*AS5K8yVLxpY8T8*2;Q z;BLZ%0gw)!*KIgJY(gS+>5>nT=bH^XxHV`D9rY3OnCpL}LCOx$pp%`%^_QGi=anf0 zZ)`mi^0BrB>>{Q3t#G!etUt+nIgXhdE$|k|U(C%<+vny?EgV>i!`ht~bP+y5$yFg^ zrRdEVP`W5VNI{1g0^S3|T2wi#R1t_vMuI!Fb=p-Xu(}sb@2VB;@4u|%sGsq7BvXY6 I3H=i=uxPj|!vFvP diff --git a/tests/testthat/test-mdro.R b/tests/testthat/test-mdro.R index 68214b17..7e7e721f 100755 --- a/tests/testthat/test-mdro.R +++ b/tests/testthat/test-mdro.R @@ -4,7 +4,12 @@ context("mdro.R") test_that("MDRO works", { library(dplyr) - outcome <- suppressWarnings(MDRO(septic_patients, "EUCAST", info = TRUE)) + expect_error(suppressWarnings(MDRO(septic_patients, "invalid", col_bactid = "mo", info = TRUE))) + expect_error(suppressWarnings(MDRO(septic_patients, "fr", col_bactid = "mo", info = TRUE))) + expect_error(suppressWarnings(MDRO(septic_patients, country = c("de", "nl"), info = TRUE))) + expect_error(suppressWarnings(MDRO(septic_patients, col_mo = "invalid", info = TRUE))) + + outcome <- suppressWarnings(MDRO(septic_patients)) outcome <- suppressWarnings(EUCAST_exceptional_phenotypes(septic_patients, info = TRUE)) # check class expect_equal(outcome %>% class(), c('ordered', 'factor')) diff --git a/tests/testthat/test-mo.R b/tests/testthat/test-mo.R index b86ef467..fc1e3343 100644 --- a/tests/testthat/test-mo.R +++ b/tests/testthat/test-mo.R @@ -22,6 +22,11 @@ test_that("as.mo works", { expect_equal(as.character(as.mo("L. pneumophila")), "LEGPNE") expect_equal(as.character(as.mo("L. non pneumophila")), "LEGNON") expect_equal(as.character(as.mo("S. beta-haemolytic")), "STCHAE") + expect_equal(as.character(as.mo("Strepto")), "STC") # not Streptobacillus + expect_equal(as.character(as.mo("Streptococcus")), "STC") # not Peptostreptoccus + + expect_equal(as.character(as.mo(c("GAS", "GBS"))), c("STCGRA", "STCGRB")) + expect_equal(as.character(as.mo("S. pyo")), "STCPYO") # not Actinomyces pyogenes @@ -31,7 +36,7 @@ test_that("as.mo works", { expect_equal(as.character(as.mo("Gram negative rods")), "GNR") # GLIMS - expect_equal(as.character(as.mo("shiboy")), "SHIBOY") + expect_equal(as.character(as.mo("bctfgr")), "BACFRA") expect_equal(as.character(as.mo("MRSE")), "STAEPI") expect_equal(as.character(as.mo("VRE")), "ENC")