1
0
mirror of https://github.com/msberends/AMR.git synced 2026-04-28 09:03:51 +02:00
Matthijs Berends 8261b91b24 Fix custom reference_data support in as.sir() (#239) (PR #279)
* Fix custom reference_data support in as.sir() (#239)

- custom guideline names now correctly classify values as R: CLSI convention
  (>= breakpoint_R for MIC, <= for disk) applies only when guideline contains
  "CLSI"; all other guidelines including custom ones use the EUCAST convention
  (> breakpoint_R for MIC, < for disk)
- guideline argument is now optional when reference_data is manually set: if
  omitted or if its value does not match any row in the custom data, all rows
  in reference_data are used; if set to a value present in the data, only
  matching rows are filtered — useful for multi-guideline custom tables
- host = NA in custom reference_data now acts as a host-agnostic fallback
  when no host-specific breakpoint row exists for the current animal species
- updated reference_data argument documentation to explain these conventions

https://claude.ai/code/session_01Q8KtFFGG9qrjAgLJBbxG2U

* Refactor R-classification logic using custom_breakpoints_set flag

Introduce custom_breakpoints_set <- !identical(reference_data, AMR::clinical_breakpoints)
at the top of as_sir_method() and replace all identical() calls inside that
function with this variable.

In the case_when_AMR interpretation blocks (MIC and disk), the R-classification
now has three explicit arms:
- !custom_breakpoints_set & EUCAST guideline -> open interval (> / <)
- !custom_breakpoints_set & CLSI guideline  -> closed interval (>= / <=)
- custom_breakpoints_set                    -> open interval (> / <), always,
  regardless of the guideline name in the custom data (e.g. "CLSI_custom"
  must not accidentally trigger CLSI convention)

https://claude.ai/code/session_01Q8KtFFGG9qrjAgLJBbxG2U

* Fix unit tests for custom reference_data (#239)

- Do not override my_bp$mo / my_bp$ab in tests: assigning plain character
  strips the <mo>/<ab> class, which check_reference_data() rejects. Use the
  mo/ab values already present in the source row instead.
- Use NA_character_ instead of NA for my_bp$host so the host column keeps
  its character class.
- Pass breakpoint_type = "animal" explicitly in the host-fallback test since
  the custom reference_data only contains animal-type breakpoints.

https://claude.ai/code/session_01Q8KtFFGG9qrjAgLJBbxG2U

* Add coerce_reference_data_columns() for lenient reference_data validation

check_reference_data() now returns the (possibly coerced) reference_data and
the call site captures the result so downstream code sees the fixed columns.

A new coerce_reference_data_columns() helper is called before the strict class
check inside check_reference_data(). It coerces columns to the expected types:
- mo  -> as.mo() if not already <mo> class
- ab  -> as.ab() if not already <ab> class
- character columns -> as.character() (e.g. host = NA becomes NA_character_)
- numeric columns  -> as.double()
- logical columns  -> as.logical()

This allows users to build a custom reference_data from a plain data.frame
without having to pre-apply as.mo()/as.ab() or worry about NA column types.

Updated the reference_data roxygen argument to document the auto-coercion and
restored the tests to the simpler form that uses plain character assignments,
relying on the new coercion instead of workarounds.

https://claude.ai/code/session_01Q8KtFFGG9qrjAgLJBbxG2U

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-25 14:38:01 +02:00
2026-04-22 08:16:44 +02:00
2026-04-22 08:16:44 +02:00
2025-01-27 21:43:10 +01:00
2026-04-22 08:16:44 +02:00
2026-03-11 16:07:31 +01:00
2025-09-11 14:41:28 +02:00
2025-04-12 11:46:42 +02:00
2025-09-20 17:14:07 +01:00
2026-03-30 10:01:49 +02:00
2025-07-18 15:57:48 +02:00
2019-08-30 14:50:56 +02:00
2024-09-30 18:46:55 +02:00
2026-03-11 16:07:31 +01:00
2026-03-30 10:01:49 +02:00
2025-09-04 14:40:24 +02:00

The AMR Package for R

Please visit our comprehensive package website https://amr-for-r.org to read more about this package, including many examples and tutorials.

Overview:

  • Provides an all-in-one solution for antimicrobial resistance (AMR) data analysis in a One Health approach
  • Peer-reviewed, used in over 175 countries, available in 28 languages
  • Generates antibiograms - traditional, combined, syndromic, and even WISCA
  • Provides the full microbiological taxonomy of ~79 000 distinct species and extensive info of ~620 antimicrobial drugs
  • Applies CLSI 2011-2026 and EUCAST 2011-2026 clinical and veterinary breakpoints, and ECOFFs, for MIC and disk zone interpretation
  • Corrects for duplicate isolates, calculates and predicts AMR per antimicrobial class
  • Integrates with WHONET, ATC, EARS-Net, PubChem, LOINC, SNOMED CT, and NCBI
  • 100% free of costs and dependencies, highly suitable for places with limited resources

The AMR package is a peer-reviewed, free and open-source R package with zero dependencies to simplify the analysis and prediction of Antimicrobial Resistance (AMR) and to work with microbial and antimicrobial data and properties, by using evidence-based methods. Our aim is to provide a standard for clean and reproducible AMR data analysis, that can therefore empower epidemiological analyses to continuously enable surveillance and treatment evaluation in any setting.

The AMR package supports and can read any data format, including WHONET data. This package works on Windows, macOS and Linux with all versions of R since R-3.0 (April 2013). It was designed to work in any setting, including those with very limited resources. It was created for both routine data analysis and academic research at the Faculty of Medical Sciences of the University of Groningen and the University Medical Center Groningen.


How to get this package

To install the latest release version from CRAN:

install.packages("AMR")

To install the latest beta version:

install.packages("AMR", repos = "beta.amr-for-r.org")

If this does not work, try to install directly from GitHub using the remotes package:

remotes::install_github("msberends/AMR")

This AMR package for R is free, open-source software and licensed under the GNU General Public License v2.0 (GPL-2). These requirements are consequently legally binding: modifications must be released under the same license when distributing the package, changes made to the code must be documented, source code must be made available when the package is distributed, and a copy of the license and copyright notice must be included with the package.

Description
Languages
SAS 97.1%
R 2.8%