From 22afd918e605eabde6f2c9532431dcdbd261920f Mon Sep 17 00:00:00 2001 From: Matthijs Berends Date: Fri, 31 Jan 2025 16:01:52 +0100 Subject: [PATCH] (v2.1.1.9136) console colours, updated Suggests, added `as.ab()` improvement --- DESCRIPTION | 8 +- NEWS.md | 3 +- PythonPackage/AMR/AMR.egg-info/PKG-INFO | 2 +- ...ny.whl => AMR-2.1.1.9136-py3-none-any.whl} | Bin 10168 -> 10168 bytes PythonPackage/AMR/dist/amr-2.1.1.9135.tar.gz | Bin 10027 -> 0 bytes PythonPackage/AMR/dist/amr-2.1.1.9136.tar.gz | Bin 0 -> 10012 bytes PythonPackage/AMR/setup.py | 2 +- R/aa_helper_functions.R | 49 +-------- R/ab.R | 38 ++++++- R/mo.R | 6 +- R/zzz.R | 12 +-- ....txt => gpt_training_text_v2.1.1.9136.txt} | 2 +- tests/testthat/test-zzz.R | 93 +++++++++++------- 13 files changed, 114 insertions(+), 101 deletions(-) rename PythonPackage/AMR/dist/{AMR-2.1.1.9135-py3-none-any.whl => AMR-2.1.1.9136-py3-none-any.whl} (85%) delete mode 100644 PythonPackage/AMR/dist/amr-2.1.1.9135.tar.gz create mode 100644 PythonPackage/AMR/dist/amr-2.1.1.9136.tar.gz rename data-raw/{gpt_training_text_v2.1.1.9135.txt => gpt_training_text_v2.1.1.9136.txt} (99%) diff --git a/DESCRIPTION b/DESCRIPTION index 93e73e484..47a4da664 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AMR -Version: 2.1.1.9135 -Date: 2025-01-28 +Version: 2.1.1.9136 +Date: 2025-01-31 Title: Antimicrobial Resistance Data Analysis Description: Functions to simplify and standardise antimicrobial resistance (AMR) data analysis and to work with microbial and antimicrobial properties by @@ -36,14 +36,18 @@ Depends: R (>= 3.0.0) Suggests: cleaner, cli, + crayon, curl, data.table, dplyr, ggplot2, knitr, + openxlsx, + pillar, progress, readxl, rmarkdown, + rstudioapi, rvest, skimr, testthat, diff --git a/NEWS.md b/NEWS.md index b1a111e44..bc38b64dd 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# AMR 2.1.1.9135 +# AMR 2.1.1.9136 *(this beta version will eventually become v3.0. We're happy to reach a new major milestone soon, which will be all about the new One Health support! Install this beta using [the instructions here](https://msberends.github.io/AMR/#latest-development-version).)* @@ -85,6 +85,7 @@ This package now supports not only tools for AMR data analysis in clinical setti * MDRO determination (using `mdro()`) * Implemented the new Dutch national MDRO guideline (SRI-richtlijn BRMO, Nov 2024) * Added arguments `esbl`, `carbapenemase`, `mecA`, `mecC`, `vanA`, `vanB` to denote column names or logical values indicating presence of these genes (or production of their proteins) +* Added console colours support of `sir` class for Positron ## Other * Added Dr. Larisse Bolton as contributor for her fantastic implementation of WISCA in a mathematically solid way diff --git a/PythonPackage/AMR/AMR.egg-info/PKG-INFO b/PythonPackage/AMR/AMR.egg-info/PKG-INFO index 40d884a21..7fcd186cd 100644 --- a/PythonPackage/AMR/AMR.egg-info/PKG-INFO +++ b/PythonPackage/AMR/AMR.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.2 Name: AMR -Version: 2.1.1.9135 +Version: 2.1.1.9136 Summary: A Python wrapper for the AMR R package Home-page: https://github.com/msberends/AMR Author: Matthijs Berends diff --git a/PythonPackage/AMR/dist/AMR-2.1.1.9135-py3-none-any.whl b/PythonPackage/AMR/dist/AMR-2.1.1.9136-py3-none-any.whl similarity index 85% rename from PythonPackage/AMR/dist/AMR-2.1.1.9135-py3-none-any.whl rename to PythonPackage/AMR/dist/AMR-2.1.1.9136-py3-none-any.whl index 5e634cf797226c3b1e0430e7f8954ea603d154d0..a3d1b1be3d4f166bff1ca7cc61695071ab8c0172 100644 GIT binary patch delta 678 zcmdntzr&w5z?+#xgn@y9gTcSTej{%fD>IPZoW?4`0%p{5F6LGWsIZUnxVmxoO?B&nSi5V7>Ah--OtJ zdRTy14O6eJy2NBI6@hw?HAPchSP~h5&S7F;kjGG}my%grqMMnQmaiY=>g*rnQhV-n z(QE?-hl{oQTrKvfOm!9OI%vq4rLeAf^FQDN|Mkmr%8y$K*MGd^@qJNOW|E3zcSXc;!?w6mzSArT8L!Kq zTz=@YF>u94{pXe2<`|Upnq6C@ac;roQwk4r70kLH&M2L-W7@3Tr}?XxW_XnUvv|5y zJLGEle+PYa-{rZLibBSg8}0^m3NbyABVrOO1#J{?bK24J!_|tT`>>$ z+6vQpt+lUC{j>Y@?TBi1(cb^OP<7uhiWU0bMb_oWJbwd)#BoyK`Q( znL&x{?fA>rk3Y0V^|ANxyYStXE6f(I=OIPZoW?4`0%p{5F6LG;F0zT@QExkNlb3-Z zN}Yj05vbnLH%Qk=&kzVL4UJ7FJBd~?+HT$}TFuK0R6W^RS&q?ka+GozSg*XsHz78l z9u^>0!_;f5E-{%)MW7yJ&7HPG=Mou#&S7F;kjGG}my%grqMMnQmaiY=>g*rnQhUy~ zc##1^!^7%&?+q-Tn=HQ^;M&F&+5DBc`ecBR*8Pwq?mxdutsnb*Pk6r9{hd=e{>Yp4dLpNNQ`|9Ae?#gKl+_S%&_B>y@ zX!Ejv{8e^R%T`>PJbAK3{^N~*HvIYd;N{lOVb7LumX}OC`h4CBwi_IZpZty1aPDz= zDB_!Ptv*wE_2p;tDy5H?nw^{4_pQyex^>FlmfYek+ph}UJUVT@(p~-Vpj#V4qEG7- zow?6o;+u4T*?0eW;xTt!eV@;^-}~ssm)E`@e|Xw)$LRia|e$QL<8+$%Es~Kw9^gK6dn8a~M{XzS~ zt>)2dV;SE4V+!zQWD;S9r;*8fRjoitWAZO3ZLVg`0ZSp1tJKt$O_8F>*EPh^#WBPY o*$_|yIijWmOducCWWdQqKpn)hRaXHU1WE&wGu73BLKD^10VDDV?f?J) diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9135.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9135.tar.gz deleted file mode 100644 index 467a2814025f284b96b6b31b44592876e727de58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10027 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 literal 0 HcmV?d00001 diff --git a/PythonPackage/AMR/setup.py b/PythonPackage/AMR/setup.py index 2a7dc80e5..b3be73311 100644 --- a/PythonPackage/AMR/setup.py +++ b/PythonPackage/AMR/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name='AMR', - version='2.1.1.9135', + version='2.1.1.9136', packages=find_packages(), install_requires=[ 'rpy2', diff --git a/R/aa_helper_functions.R b/R/aa_helper_functions.R index 360083878..b32954fe4 100644 --- a/R/aa_helper_functions.R +++ b/R/aa_helper_functions.R @@ -1169,57 +1169,12 @@ message_not_thrown_before <- function(fn, ..., entire_session = FALSE) { } has_colour <- function() { - # this is a base R version of crayon::has_color, but disables colours on emacs - if (Sys.getenv("EMACS") != "" || Sys.getenv("INSIDE_EMACS") != "") { # disable on emacs, which only supports 8 colours return(FALSE) } - enabled <- getOption("crayon.enabled") - if (!is.null(enabled)) { - return(isTRUE(enabled)) - } - rstudio_with_ansi_support <- function(x) { - if (Sys.getenv("RSTUDIO", "") == "") { - return(FALSE) - } - if ((cols <- Sys.getenv("RSTUDIO_CONSOLE_COLOR", "")) != "" && !is.na(as.double(cols))) { - return(TRUE) - } - tryCatch(getExportedValue("isAvailable", ns = asNamespace("rstudioapi"))(), error = function(e) { - return(FALSE) - }) && - tryCatch(getExportedValue("hasFun", ns = asNamespace("rstudioapi"))("getConsoleHasColor"), error = function(e) { - return(FALSE) - }) - } - if (rstudio_with_ansi_support() && sink.number() == 0) { - return(TRUE) - } - if (!isatty(stdout())) { - return(FALSE) - } - if (tolower(Sys.info()["sysname"]) == "windows") { - if (Sys.getenv("ConEmuANSI") == "ON") { - return(TRUE) - } - if (Sys.getenv("CMDER_ROOT") != "") { - return(TRUE) - } - return(FALSE) - } - if ("COLORTERM" %in% names(Sys.getenv())) { - return(TRUE) - } - if (Sys.getenv("TERM") == "dumb") { - return(FALSE) - } - grepl( - pattern = "^screen|^xterm|^vt100|color|ansi|cygwin|linux", - x = Sys.getenv("TERM"), - ignore.case = TRUE, - perl = TRUE - ) + has_color <- import_fn("has_color", "crayon") + !is.null(has_color) && isTRUE(has_color()) } # set colours if console has_colour() diff --git a/R/ab.R b/R/ab.R index e043d6371..7f4d83aff 100755 --- a/R/ab.R +++ b/R/ab.R @@ -324,7 +324,7 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { # INITIAL SEARCH - More uncertain results ---- if (loop_time <= 2 && fast_mode == FALSE) { # only run on first and second try - + # try by removing all spaces if (x[i] %like% " ") { found <- suppressWarnings(as.ab(gsub(" +", "", x[i], perl = TRUE), loop_time = loop_time + 2)) @@ -333,7 +333,7 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { next } } - + # try by removing all spaces and numbers if (x[i] %like% " " || x[i] %like% "[0-9]") { found <- suppressWarnings(as.ab(gsub("[ 0-9]", "", x[i], perl = TRUE), loop_time = loop_time + 2)) @@ -342,6 +342,40 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { next } } + + # reverse a combination, e.g. clavulanic acid/amoxicillin + if (x[i] %like% " ") { + split <- strsplit(x[i], " ")[[1]] + permute <- function(x) { + if (length(x) == 1) return(list(x)) + result <- vector("list", factorial(length(x))) + index <- 1 + for (i in seq_along(x)) { + sub_perms <- permute(x[-i]) # Recursively get permutations of remaining elements + for (sub in sub_perms) { + result[[index]] <- c(x[i], sub) + index <- index + 1 + } + } + return(result) + } + permutations <- permute(split) + found_perms <- character(length(permutations)) + for (s in seq_len(length(permutations))) { + concat <- paste0(permutations[[s]], collapse = " ") + if (concat %in% AMR_env$AB_lookup$generalised_name) { + found_perms[s] <- AMR_env$AB_lookup[which(AMR_env$AB_lookup$generalised_name == concat), "ab", drop = TRUE] + } else { + found_perms[s] <- suppressWarnings(as.ab(concat, loop_time = loop_time + 2)) + } + } + found_perms <- found_perms[!is.na(found_perms)] + if (length(found_perms) > 0) { + found <- found_perms[order(nchar(found_perms), decreasing = TRUE)][1] + x_new[i] <- note_if_more_than_one_found(found, i, from_text) + next + } + } # transform back from other languages and try again x_translated <- paste( diff --git a/R/mo.R b/R/mo.R index 5acf84219..4e5cf1eab 100755 --- a/R/mo.R +++ b/R/mo.R @@ -340,17 +340,17 @@ as.mo <- function(x, filtr <- which(MO_lookup_current$full_first %like_case% first_chars) } else if (nchar(x_out) == 3) { # no space and 3 characters - probably a code such as SAU or ECO - msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", totitle(substr(x_out, 1, 1)), AMR_env$dots, " ", substr(x_out, 2, 3), AMR_env$dots, "\"")) + msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", totitle(substr(x_out, 1, 1)), AMR_env$ellipsis_icon, " ", substr(x_out, 2, 3), AMR_env$ellipsis_icon, "\"")) filtr <- which(MO_lookup_current$fullname_lower %like_case% paste0("(^| )", substr(x_out, 1, 1), ".* ", substr(x_out, 2, 3))) } else if (nchar(x_out) == 4) { # no space and 4 characters - probably a code such as STAU or ESCO - msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", totitle(substr(x_out, 1, 2)), AMR_env$dots, " ", substr(x_out, 3, 4), AMR_env$dots, "\"")) + msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", totitle(substr(x_out, 1, 2)), AMR_env$ellipsis_icon, " ", substr(x_out, 3, 4), AMR_env$ellipsis_icon, "\"")) filtr <- which(MO_lookup_current$fullname_lower %like_case% paste0("(^| )", substr(x_out, 1, 2), ".* ", substr(x_out, 3, 4))) } else if (nchar(x_out) <= 6) { # no space and 5-6 characters - probably a code such as STAAUR or ESCCOL first_part <- paste0(substr(x_out, 1, 2), "[a-z]*", substr(x_out, 3, 3)) second_part <- substr(x_out, 4, nchar(x_out)) - msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", gsub("[a-z]*", AMR_env$dots, totitle(first_part), fixed = TRUE), " ", second_part, AMR_env$dots, "\"")) + msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", gsub("[a-z]*", AMR_env$ellipsis_icon, totitle(first_part), fixed = TRUE), " ", second_part, AMR_env$ellipsis_icon, "\"")) filtr <- which(MO_lookup_current$fullname_lower %like_case% paste0("(^| )", first_part, ".* ", second_part)) } else { # for genus or species or subspecies diff --git a/R/zzz.R b/R/zzz.R index 820f663c8..bf7136b6c 100755 --- a/R/zzz.R +++ b/R/zzz.R @@ -82,15 +82,15 @@ AMR_env$chmatch <- import_fn("chmatch", "data.table", error_on_fail = FALSE) AMR_env$chin <- import_fn("%chin%", "data.table", error_on_fail = FALSE) # take cli symbols and error function if available -AMR_env$info_icon <- import_fn("symbol", "cli", error_on_fail = FALSE)$info %or% "i" -AMR_env$bullet_icon <- import_fn("symbol", "cli", error_on_fail = FALSE)$bullet %or% "*" +AMR_env$bullet_icon <- import_fn("symbol", "cli", error_on_fail = FALSE)$bullet %or% "*" +AMR_env$ellipsis_icon <- import_fn("symbol", "cli", error_on_fail = FALSE)$ellipsis %or% "..." +AMR_env$info_icon <- import_fn("symbol", "cli", error_on_fail = FALSE)$info %or% "i" +AMR_env$sup_1_icon <- import_fn("symbol", "cli", error_on_fail = FALSE)$sup_1 %or% "*" + +AMR_env$cli_abort <- import_fn("cli_abort", "cli", error_on_fail = FALSE) AMR_env$cross_icon <- if (isTRUE(base::l10n_info()$`UTF-8`)) "\u00d7" else "x" -AMR_env$dots <- import_fn("symbol", "cli", error_on_fail = FALSE)$ellipsis %or% "..." -AMR_env$sup_1_icon <- import_fn("symbol", "cli", error_on_fail = FALSE)$sup_1 %or% "*" -AMR_env$cli_abort <- import_fn("cli_abort", "cli", error_on_fail = FALSE) - .onLoad <- function(lib, pkg) { # Support for tibble headers (type_sum) and tibble columns content (pillar_shaft) # without the need to depend on other packages. This was suggested by the diff --git a/data-raw/gpt_training_text_v2.1.1.9135.txt b/data-raw/gpt_training_text_v2.1.1.9136.txt similarity index 99% rename from data-raw/gpt_training_text_v2.1.1.9135.txt rename to data-raw/gpt_training_text_v2.1.1.9136.txt index 179669b9b..8b7775c20 100644 --- a/data-raw/gpt_training_text_v2.1.1.9135.txt +++ b/data-raw/gpt_training_text_v2.1.1.9136.txt @@ -1,6 +1,6 @@ This knowledge base contains all context you must know about the AMR package for R. You are a GPT trained to be an assistant for the AMR package in R. You are an incredible R specialist, especially trained in this package and in the tidyverse. -First and foremost, you are trained on version 2.1.1.9135. Remember this whenever someone asks which AMR package version you’re at. +First and foremost, you are trained on version 2.1.1.9136. Remember this whenever someone asks which AMR package version you’re at. Below are the contents of the file, the file, and all the files (documentation) in the package. Every file content is split using 100 hypens. ---------------------------------------------------------------------------------------------------- diff --git a/tests/testthat/test-zzz.R b/tests/testthat/test-zzz.R index 314b06623..ba7fa255f 100644 --- a/tests/testthat/test-zzz.R +++ b/tests/testthat/test-zzz.R @@ -34,10 +34,17 @@ import_functions <- c( "%chin%" = "data.table", "anti_join" = "dplyr", + "as.data.table" = "data.table", + "as_tibble" = "tibble", "chmatch" = "data.table", "cli_abort" = "cli", "cur_column" = "dplyr", + "cur_group" = "dplyr", + "document_position" = "rstudioapi", + "document_range" = "rstudioapi", "full_join" = "dplyr", + "getActiveDocumentContext" = "rstudioapi", + "has_color" = "crayon", "has_internet" = "curl", "html_attr" = "rvest", "html_children" = "rvest", @@ -48,26 +55,28 @@ import_functions <- c( "inner_join" = "dplyr", "insertText" = "rstudioapi", "left_join" = "dplyr", + "modifyRange" = "rstudioapi", "new_pillar_shaft_simple" = "pillar", "progress_bar" = "progress", "read_html" = "xml2", "right_join" = "dplyr", "semi_join" = "dplyr", - "showQuestion" = "rstudioapi" + "showQuestion" = "rstudioapi", + "symbol" = "cli", + "tibble" = "tibble", + "write.xlsx" = "openxlsx" ) # functions that are called directly with :: call_functions <- c( # cleaner + "freq" = "cleaner", "freq.default" = "cleaner", + "percentage" = "cleaner", # cli "symbol" = "cli", - "ansi_has_hyperlink_support" = "cli", - # rstudioapi (RStudio) - "isAvailable" = "rstudioapi", - "versionInfo" = "rstudioapi", - # readxl - "read_excel" = "readxl", + # curl + "has_internet" = "curl", # ggplot2 "aes" = "ggplot2", "arrow" = "ggplot2", @@ -77,6 +86,8 @@ call_functions <- c( "element_text" = "ggplot2", "expand_limits" = "ggplot2", "facet_wrap" = "ggplot2", + "fortify" = "ggplot2", + "geom_col" = "ggplot2", "geom_errorbar" = "ggplot2", "geom_path" = "ggplot2", "geom_point" = "ggplot2", @@ -85,10 +96,10 @@ call_functions <- c( "geom_text" = "ggplot2", "ggplot" = "ggplot2", "labs" = "ggplot2", - "layer" = "ggplot2", "position_dodge2" = "ggplot2", "position_fill" = "ggplot2", "scale_colour_discrete" = "ggplot2", + "scale_discrete_manual" = "ggplot2", "scale_fill_discrete" = "ggplot2", "scale_fill_manual" = "ggplot2", "scale_x_discrete" = "ggplot2", @@ -99,51 +110,61 @@ call_functions <- c( "unit" = "ggplot2", "xlab" = "ggplot2", "ylab" = "ggplot2", - "vec_arith" = "vctrs" -) -if (AMR:::pkg_is_available("skimr", min_version = "2.0.0")) { - call_functions <- c(call_functions, - # skimr - "inline_hist" = "skimr", - "sfl" = "skimr" - ) -} - -extended_functions <- c( - "freq" = "cleaner", - "autoplot" = "ggplot2", + # knitr + "asis_output" = "knitr", + "kable" = "knitr", + "knit_print" = "knitr", + "opts_chunk" = "knitr", + "rmarkdown" = "knitr", + # pillar "pillar_shaft" = "pillar", - "get_skimmers" = "skimr", + "tbl_format_footer" = "pillar", + "tbl_sum" = "pillar", "type_sum" = "pillar", + # readxl + "read_excel" = "readxl", + # rmarkdown + "html_vignette" = "rmarkdown", + # skimr + "get_skimmers" = "skimr", + "inline_hist" = "skimr", + "sfl" = "skimr", + # tibble + "tibble" = "tibble", + # vctrs + "vec_arith" = "vctrs", "vec_cast" = "vctrs", "vec_math" = "vctrs", - "vec_ptype2" = "vctrs" + "vec_ptype2" = "vctrs", + "vec_ptype_abbr" = "vctrs", + "vec_ptype_full" = "vctrs" ) -import_functions <- c(import_functions, call_functions, extended_functions) +import_functions <- c(import_functions, call_functions) +suggests <- desc::desc(".")$get_deps() +suggests <- suggests[which(suggests$type == "Suggests"), ]$package for (i in seq_len(length(import_functions))) { fn <- names(import_functions)[i] pkg <- unname(import_functions[i]) + expect_true(pkg %in% suggests, + info = paste0("package `", pkg, "` is not in Suggests")) # function should exist in foreign pkg namespace if (AMR:::pkg_is_available(pkg, - also_load = FALSE, - min_version = if (pkg == "dplyr") "1.0.0" else NULL + also_load = FALSE, + min_version = if (pkg == "dplyr") "1.0.0" else NULL )) { expect_true(!is.null(AMR:::import_fn(name = fn, pkg = pkg, error_on_fail = FALSE)), - info = paste0("does not exist (anymore): function `", pkg, "::", fn, "()`") - ) + info = paste0("Function does not exist (anymore): function `", pkg, "::", fn, "()`")) } else if (pkg != "rstudioapi") { - warning("Package '", pkg, "' does not exist anymore") + warning("Package '", pkg, "' not available") } } if (AMR:::pkg_is_available("cli")) { - expect_true(!is.null(cli::symbol$info)) -} -if (AMR:::pkg_is_available("cli")) { -} -if (AMR:::pkg_is_available("cli")) { - expect_true(!is.null(cli::symbol$ellipsis)) + expect_true(!is.null(cli::symbol$bullet) && is.character(cli::symbol$bullet) && length(cli::symbol$bullet) == 1) + expect_true(!is.null(cli::symbol$ellipsis) && is.character(cli::symbol$ellipsis) && length(cli::symbol$ellipsis) == 1) + expect_true(!is.null(cli::symbol$info) && is.character(cli::symbol$info) && length(cli::symbol$info) == 1) + expect_true(!is.null(cli::symbol$sup_1) && is.character(cli::symbol$sup_1) && length(cli::symbol$sup_1) == 1) } if (AMR:::pkg_is_available("ggplot2")) { # the scale_*_mic() functions rely on these @@ -152,5 +173,3 @@ if (AMR:::pkg_is_available("ggplot2")) { expect_true(is.function(ggplot2::scale_colour_discrete()$transform)) expect_true(is.function(ggplot2::scale_fill_discrete()$transform)) } - -