Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f17152b9da | ||
|
|
a7dc3ed0d7 | ||
|
|
ebfb414ab1 | ||
|
|
3a960de6ea | ||
|
|
d5b7929b36 | ||
|
|
3802119599 | ||
|
|
8f9d658c13 | ||
|
|
99f55f2ec2 | ||
|
|
c89dafb556 | ||
|
|
b3b6a798ae | ||
|
|
2a7bfb9ffb | ||
|
|
9447e0f2c2 | ||
|
|
6fbd9e4b9f | ||
|
|
3a3027f171 | ||
|
|
425f4ad827 | ||
|
|
e12355b4a8 | ||
|
|
cc4e9bab4b | ||
|
|
fdef91486c | ||
|
|
5dec3cfd25 | ||
|
|
86b5ebf61f | ||
|
|
f2e56dbc61 | ||
|
|
6d9934ac04 | ||
|
|
59b2ce5621 | ||
|
|
d0fd6aa2cc | ||
|
|
d6c59896e9 | ||
|
|
d55d073ae9 | ||
|
|
330f1a9dfe | ||
|
|
c95646d39c | ||
|
|
3560dfd611 | ||
|
|
ba003f3e23 | ||
|
|
33e262ed9b | ||
|
|
86a53a0901 | ||
|
|
e7e8aa636e | ||
|
|
1e81c2a013 | ||
|
|
ab5ce59112 | ||
|
|
599302f0bd | ||
|
|
acc807a02c | ||
|
|
3c74d99480 | ||
|
|
6f0dc96d0d | ||
|
|
f0ec851466 | ||
|
|
c149bb1f65 | ||
|
|
8b71d0eb99 | ||
|
|
0551ea51cb | ||
|
|
86f19c7576 | ||
|
|
39894d56c9 | ||
|
|
a4edc69618 | ||
|
|
e2ba695c2c | ||
|
|
bb2e68890c | ||
|
|
70d4d19168 | ||
|
|
46858ec0a2 | ||
|
|
01880ee020 | ||
|
|
1227e2c60c | ||
|
|
7c8d0f82f9 | ||
|
|
141fc468f8 | ||
|
|
7d16891987 | ||
|
|
0d195202fd | ||
|
|
2d20ac1a7d | ||
|
|
dc9493d2d8 | ||
|
|
a33b95eb3d | ||
|
|
f4ce3570ff | ||
|
|
32361053f1 | ||
|
|
660bcf00e5 | ||
|
|
cf182a28f1 | ||
|
|
ccfe6caf58 | ||
|
|
be9c71b572 | ||
|
|
d1f9877a8e | ||
|
|
75b8c2485a | ||
|
|
43285cb936 | ||
|
|
4542802e26 | ||
|
|
e8a82b62b7 | ||
|
|
501395d46e | ||
|
|
a09b81fb58 | ||
|
|
3be689a8db | ||
|
|
7f9aacb56b | ||
|
|
5791bfb45d | ||
|
|
b993fdd12f | ||
|
|
eb889b5de5 | ||
|
|
7d4c4ecffc | ||
|
|
758fc341e8 | ||
|
|
07bc8c2004 | ||
|
|
bf7668e26f | ||
|
|
327130f5b6 | ||
|
|
b2cbb64ac9 | ||
|
|
af466f6f80 | ||
|
|
30a07c0128 | ||
|
|
e128e9cb57 | ||
|
|
02d1b619ce | ||
|
|
37856aa66f | ||
|
|
384690a1d1 | ||
|
|
6a46452c67 | ||
|
|
9084efe334 | ||
|
|
9f654e4c24 | ||
|
|
a7bbc3ea9c | ||
|
|
11b4f3ac31 | ||
|
|
da2f868615 | ||
|
|
16aa35c2cd | ||
|
|
2266fa7c29 | ||
|
|
2118d4ea5f | ||
|
|
0f8fdaa2cb | ||
|
|
8ca7c05e80 | ||
|
|
bb8c39a64e | ||
|
|
12070624fb | ||
|
|
ac714f6778 | ||
|
|
dd091f606e | ||
|
|
0f3f86c0e0 | ||
|
|
eb5d938435 | ||
|
|
b2e33669e6 | ||
|
|
2b01809862 | ||
|
|
6e63d9fa4f | ||
|
|
b72df4d23d | ||
|
|
e9c6e5e2e9 | ||
|
|
8817a4bbb4 | ||
|
|
9481aa9987 | ||
|
|
6f158d57f9 | ||
|
|
409fe1d197 | ||
|
|
f12cfeeac0 | ||
|
|
4733a75b8c | ||
|
|
cf40234c88 | ||
|
|
1edc1c4b4f | ||
|
|
1e0f9662a5 | ||
|
|
b3ff0d9941 | ||
|
|
1f5b2f341f | ||
|
|
80b584cd20 | ||
|
|
cfc9269348 | ||
|
|
1c78ad4a99 | ||
|
|
349e224e07 | ||
|
|
1428bda0ea | ||
|
|
70d680994f | ||
|
|
db3c671dde | ||
|
|
159bbecc7f | ||
|
|
6535e981d8 | ||
|
|
62e8b90f69 | ||
|
|
763def34da | ||
|
|
35badd628d | ||
|
|
d91fe18ca5 | ||
|
|
3545229978 | ||
|
|
5b2e2c9477 | ||
|
|
4dfe96b8ed | ||
|
|
09d9ab0bce | ||
|
|
1b88841880 | ||
|
|
5c912497a1 | ||
|
|
d2f56c540f | ||
|
|
fbf5e7fed3 | ||
|
|
7b50a54fd5 | ||
|
|
fdab4a7cc4 | ||
|
|
61c6f7a130 | ||
|
|
c02bb6e324 | ||
|
|
ba9682adf4 | ||
|
|
9f1de52753 | ||
|
|
78fcd845f5 | ||
|
|
af8fd79274 | ||
|
|
edf94d29e6 | ||
|
|
581f2e05ab | ||
|
|
95135f6352 | ||
|
|
ab52cfcb22 | ||
|
|
57dca59004 | ||
|
|
a57178bf4d | ||
|
|
793bb176ef | ||
|
|
b923119b5c | ||
|
|
7260225470 | ||
|
|
61dbb43388 | ||
|
|
c1d512a0a8 | ||
|
|
11522b294c | ||
|
|
040af225ad | ||
|
|
03c11fc829 | ||
|
|
1a2e318d5f | ||
|
|
302f4aa3b4 | ||
|
|
d6c2f972b0 | ||
|
|
740a04330a | ||
|
|
2eb7407a4b | ||
|
|
8a29e934c9 | ||
|
|
a4384adaa6 | ||
|
|
1db1147c91 | ||
|
|
0aa031ce16 | ||
|
|
225c17677d | ||
|
|
e31adf4b92 | ||
|
|
0a7c89fb0b | ||
|
|
b4135f3f76 | ||
|
|
7ef2312236 | ||
|
|
bc66bdfd98 | ||
|
|
ea26e87acb | ||
|
|
07ef22c924 | ||
|
|
20f99d2b5c | ||
|
|
573ad78d64 | ||
|
|
b3c44cbc69 | ||
|
|
7bdc3e8702 | ||
|
|
6b6bfdb736 | ||
|
|
8a9facd800 | ||
|
|
a76fb41a53 | ||
|
|
a38d79b77b | ||
|
|
3616ac49c3 | ||
|
|
df4b0e7e48 | ||
|
|
892b43a567 | ||
|
|
026593f316 | ||
|
|
e672d889c9 | ||
|
|
9694bcf9b0 | ||
|
|
31e255491c | ||
|
|
db65f851b3 | ||
|
|
eb5d5ad09f | ||
|
|
dc8269dad0 | ||
|
|
6d225ab56e | ||
|
|
97df961c58 | ||
|
|
32399fd133 | ||
|
|
bc6e17ff98 | ||
|
|
3301f9a98a | ||
|
|
41c3e0d687 | ||
|
|
93d36df3a8 | ||
|
|
af2c21b5fa | ||
|
|
49c61d7fd3 | ||
|
|
033d6fe9df | ||
|
|
9c6ec954fa | ||
|
|
15660eb423 | ||
|
|
cf81d59a10 | ||
|
|
20c26cd21b | ||
|
|
be20858eae | ||
|
|
20d0d4d3e5 | ||
|
|
322b29a823 | ||
|
|
c3f2517428 | ||
|
|
71ff130527 | ||
|
|
a49e633c9c | ||
|
|
e0542b9b1c | ||
|
|
62b90c777c | ||
|
|
fa577c3071 | ||
|
|
367c8e38b7 | ||
|
|
9a8d9ff1f2 | ||
|
|
350e6e4c50 | ||
|
|
5def32a932 | ||
|
|
95b6c9295f | ||
|
|
8a7fcc217d | ||
|
|
0d24681106 | ||
|
|
d63b10a2a7 | ||
|
|
94ecdb9614 | ||
|
|
ec77702529 | ||
|
|
19d75dd4e4 | ||
|
|
4c4a60b950 | ||
|
|
31a5475cc7 | ||
|
|
37cf2f059d | ||
|
|
a7d458e21d | ||
|
|
05af6888f2 | ||
|
|
943ca7c7de | ||
|
|
8cca90250b | ||
|
|
4ddb872f23 | ||
|
|
a9017a57bd | ||
|
|
ee18760cfa | ||
|
|
c26c85c21a | ||
|
|
74bb1abb0c | ||
|
|
4762d07c22 | ||
|
|
c99168b4a6 | ||
|
|
75d3c3aadc | ||
|
|
1f01704397 | ||
|
|
2550023f81 | ||
|
|
1c32c669a0 | ||
|
|
62f6837a98 | ||
|
|
f769324f08 | ||
|
|
2f239e59c4 | ||
|
|
fd917ad2bb | ||
|
|
230bbd3722 | ||
|
|
1ffdce6eeb | ||
|
|
dba1186b76 | ||
|
|
3c6ea5dbb1 | ||
|
|
7b8d4eee83 | ||
|
|
12a9c6f82c | ||
|
|
67acf7984e | ||
|
|
06dde43311 | ||
|
|
74e5d17657 | ||
|
|
72f312843f | ||
|
|
de6c43b84a | ||
|
|
fa715b9e44 | ||
|
|
236ec09721 | ||
|
|
51f4d0e546 | ||
|
|
8e108a2243 | ||
|
|
122d0c536c | ||
|
|
a96b1c7684 | ||
|
|
79ff526e9c | ||
|
|
98c6dedd1c | ||
|
|
271ab5b1ae | ||
|
|
374627273f | ||
|
|
062a7eba40 | ||
|
|
83fdd7b9a0 | ||
|
|
0f7643dd96 | ||
|
|
0182344680 | ||
|
|
82ec49a31f | ||
|
|
0b0a4b6a51 | ||
|
|
704eb041fa | ||
|
|
bb51c7b8b3 | ||
|
|
fad0489eed | ||
|
|
eb326fa2fa | ||
|
|
25024fa1d8 | ||
|
|
6eb417125c | ||
|
|
158b328929 | ||
|
|
62d8ae3b8a | ||
|
|
d1a90f83ff | ||
|
|
d6ec56c776 | ||
|
|
9b631f2607 | ||
|
|
cd0d80903b | ||
|
|
0b8e89c845 | ||
|
|
ab367558fe | ||
|
|
d707152fc2 | ||
|
|
430d460276 | ||
|
|
8611815e20 | ||
|
|
1460fadf40 | ||
|
|
4720b842e6 | ||
|
|
d65eb144db | ||
|
|
09881c5781 | ||
|
|
3440c43dc4 | ||
|
|
3c05a8bfc8 | ||
|
|
8fe9437f7c | ||
|
|
d7a1dbb2b9 | ||
|
|
8c3ab46914 | ||
|
|
9f32027abc | ||
|
|
bc0fb5bd03 | ||
|
|
faed08a2c9 | ||
|
|
7e5894fcd4 | ||
|
|
9bc1b49ea6 | ||
|
|
be8832a827 | ||
|
|
822244837d | ||
|
|
645974fb29 | ||
|
|
363db948a2 | ||
|
|
619bcd7ee9 | ||
|
|
b5e161a822 | ||
|
|
be187041ab | ||
|
|
c04e1e825d | ||
|
|
3d586f1328 | ||
|
|
a617bbf941 | ||
|
|
d8d9452d24 | ||
|
|
97037aa011 | ||
|
|
958f761af3 | ||
|
|
967c45ea9f | ||
|
|
f566ec1603 | ||
|
|
9fabe8ad02 | ||
|
|
a061a2a482 | ||
|
|
53b7f76c86 | ||
|
|
19c2925a0a | ||
|
|
e0222b5d61 | ||
|
|
0470e7935b | ||
|
|
37a66e6447 | ||
|
|
3bfb473562 | ||
|
|
c08773dd0b | ||
|
|
456f60ceaa | ||
|
|
9c8a5eae2c | ||
|
|
b7bbc5c384 | ||
|
|
dd75cf872c | ||
|
|
9d1e78f897 | ||
|
|
e382efa66b | ||
|
|
5491fb7088 | ||
|
|
cc245a41a0 | ||
|
|
4f0b1843a3 | ||
|
|
bd4f12016d | ||
|
|
f56524ba9c | ||
|
|
e72c161f5f | ||
|
|
cb279602b6 | ||
|
|
2f947f2a87 | ||
|
|
cf002cfefa | ||
|
|
7cc570249b | ||
|
|
7f1c20a0e8 | ||
|
|
0484d7ab4d | ||
|
|
0be2d50036 | ||
|
|
074df34e9a | ||
|
|
9857914f74 | ||
|
|
82ad5d095f | ||
|
|
09b3187184 | ||
|
|
fefbb46ec6 | ||
|
|
705ab0e847 | ||
|
|
1fe0350d15 | ||
|
|
69dc8795ae | ||
|
|
8685119254 | ||
|
|
cdada2f940 | ||
|
|
2183549fea | ||
|
|
550fd47250 | ||
|
|
dee759ef9c | ||
|
|
259fe07455 | ||
|
|
d5f778add6 | ||
|
|
7d4de8eb35 | ||
|
|
e0b5911d41 | ||
|
|
39d838ee3d | ||
|
|
a15da467b3 | ||
|
|
7c0ad08c8a | ||
|
|
48896ee426 | ||
|
|
31fd5db33b | ||
|
|
62f3d29455 | ||
|
|
d6a21b332a | ||
|
|
769ace0b66 | ||
|
|
c43e91eaee | ||
|
|
f31bb7259e | ||
|
|
21650ffec3 | ||
|
|
93271b2c07 | ||
|
|
59c39dc5d1 | ||
|
|
9950851ea8 | ||
|
|
a7dcf5719c | ||
|
|
e289d2568d | ||
|
|
d18dc71c10 | ||
|
|
2b13d43a3f | ||
|
|
deed569722 | ||
|
|
805dcaf92e | ||
|
|
d37dc49b96 | ||
|
|
32eee46345 | ||
|
|
84a6877c99 | ||
|
|
6151d3f729 | ||
|
|
32bfbe9286 | ||
|
|
3feb675608 | ||
|
|
e96db55bc2 | ||
|
|
49cc52e916 | ||
|
|
e665f73c92 | ||
|
|
72f176330e | ||
|
|
8ae4799471 | ||
|
|
784ee0812f | ||
|
|
d3e437e13a | ||
|
|
ec8f871100 | ||
|
|
6a000be49b | ||
|
|
d81e09bddd | ||
|
|
2c1a204ab6 | ||
|
|
e731388cb5 | ||
|
|
b3effa8a4e | ||
|
|
e81f9bcf5e | ||
|
|
8cd53d7ba4 | ||
|
|
fe6945bfad | ||
|
|
c5a5383b7b | ||
|
|
29c310e535 | ||
|
|
d247365476 | ||
|
|
64384886d7 | ||
|
|
7b50c6e9f7 | ||
|
|
100f3d6fe0 | ||
|
|
4dff2dbe6b | ||
|
|
09ffdc91e6 | ||
|
|
d6a732817a | ||
|
|
a153eb2626 | ||
|
|
0bc2afafe9 | ||
|
|
8c6795ca53 | ||
|
|
a994768452 | ||
|
|
4b476d056c | ||
|
|
eb998f6989 | ||
|
|
bdc43910ae | ||
|
|
6fd5ff2a24 | ||
|
|
68a0b3f94a | ||
|
|
d31b599825 | ||
|
|
7fe29a8401 | ||
|
|
f74da6c86a | ||
|
|
863a83ee08 | ||
|
|
b248bcc62a | ||
|
|
40b8ed3a1a | ||
|
|
90b951a48a | ||
|
|
05ea686a1e | ||
|
|
ec6f7db383 | ||
|
|
0d936e8905 | ||
|
|
f988c3273a | ||
|
|
9a91fdfb99 | ||
|
|
8438e68df5 | ||
|
|
8211647fb0 | ||
|
|
560396124f | ||
|
|
b45431b86c | ||
|
|
9667f42d3b | ||
|
|
49a3324340 | ||
|
|
ca3fb70197 | ||
|
|
f137d1a9e0 | ||
|
|
e2e3fa9184 | ||
|
|
205bfb053c | ||
|
|
553d074b96 | ||
|
|
4cc1967eab | ||
|
|
491cd94189 | ||
|
|
976d5292c7 | ||
|
|
1a10d0f4ee | ||
|
|
a1d8ec7d4a | ||
|
|
4f02b97c70 | ||
|
|
fee4bb45b1 | ||
|
|
2d869c2796 | ||
|
|
d2ff8027d1 | ||
|
|
cfc4fd0c0c | ||
|
|
f3f4586286 | ||
|
|
3f99e4a668 | ||
|
|
97c789d01f | ||
|
|
ac481f348b | ||
|
|
50592d10f1 | ||
|
|
a62a35d91d | ||
|
|
44b99f8875 | ||
|
|
964b71aedb | ||
|
|
f08c645b0c | ||
|
|
bcd6e333f0 | ||
|
|
cb53936bd3 | ||
|
|
37f397b1f3 |
@@ -0,0 +1,104 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Page not found (404) • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="https://amr-for-r.org/favicon-96x96.png">
|
||||||
|
<link rel="icon" type="”image/svg+xml”" href="https://amr-for-r.org/favicon.svg">
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="https://amr-for-r.org/apple-touch-icon.png">
|
||||||
|
<link rel="icon" sizes="any" href="https://amr-for-r.org/favicon.ico">
|
||||||
|
<link rel="manifest" href="https://amr-for-r.org/site.webmanifest">
|
||||||
|
<script src="https://amr-for-r.org/deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link href="https://amr-for-r.org/deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="https://amr-for-r.org/deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="https://amr-for-r.org/deps/Lato-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="https://amr-for-r.org/deps/Fira_Code-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="https://amr-for-r.org/deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
|
||||||
|
<link href="https://amr-for-r.org/deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
|
||||||
|
<script src="https://amr-for-r.org/deps/headroom-0.11.0/headroom.min.js"></script><script src="https://amr-for-r.org/deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="https://amr-for-r.org/deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="https://amr-for-r.org/deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="https://amr-for-r.org/deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="https://amr-for-r.org/deps/search-1.0.0/fuse.min.js"></script><script src="https://amr-for-r.org/deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="https://amr-for-r.org/pkgdown.js"></script><link href="https://amr-for-r.org/extra.css" rel="stylesheet">
|
||||||
|
<script src="https://amr-for-r.org/extra.js"></script><meta property="og:title" content="Page not found (404)">
|
||||||
|
<meta property="og:image" content="https://amr-for-r.org/logo.svg">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="https://amr-for-r.org/#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="https://amr-for-r.org/index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto">
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to">
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://amr-for-r.org/reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="https://amr-for-r.org/articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="https://amr-for-r.org/reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="https://amr-for-r.org/authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="search.json">
|
||||||
|
</form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="https://amr-for-r.org/news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-title-body">
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="https://amr-for-r.org/logo.svg" class="logo" alt=""><h1>Page not found (404)</h1>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Content not found. Please use links in the navbar.
|
||||||
|
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
Content not found. Please use links in the navbar.
|
||||||
|
|
||||||
|
# Page not found (404)
|
||||||
@@ -1,254 +0,0 @@
|
|||||||
Metadata-Version: 2.4
|
|
||||||
Name: AMR
|
|
||||||
Version: 3.0.1.9091
|
|
||||||
Summary: A Python wrapper for the AMR R package
|
|
||||||
Home-page: https://github.com/msberends/AMR
|
|
||||||
Author: Matthijs Berends
|
|
||||||
Author-email: m.s.berends@umcg.nl
|
|
||||||
License: GPL 2
|
|
||||||
Project-URL: Bug Tracker, https://github.com/msberends/AMR/issues
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Operating System :: OS Independent
|
|
||||||
Requires-Python: >=3.6
|
|
||||||
Description-Content-Type: text/markdown
|
|
||||||
Requires-Dist: rpy2
|
|
||||||
Requires-Dist: numpy
|
|
||||||
Requires-Dist: pandas
|
|
||||||
Dynamic: author
|
|
||||||
Dynamic: author-email
|
|
||||||
Dynamic: classifier
|
|
||||||
Dynamic: description
|
|
||||||
Dynamic: description-content-type
|
|
||||||
Dynamic: home-page
|
|
||||||
Dynamic: license
|
|
||||||
Dynamic: project-url
|
|
||||||
Dynamic: requires-dist
|
|
||||||
Dynamic: requires-python
|
|
||||||
Dynamic: summary
|
|
||||||
|
|
||||||
|
|
||||||
The `AMR` package for R is a powerful tool for antimicrobial resistance (AMR) analysis. It provides extensive features for handling microbial and antimicrobial data. However, for those who work primarily in Python, we now have a more intuitive option available: the [`AMR` Python package](https://pypi.org/project/AMR/).
|
|
||||||
|
|
||||||
This Python package is a wrapper around the `AMR` R package. It uses the `rpy2` package internally. Despite the need to have R installed, Python users can now easily work with AMR data directly through Python code.
|
|
||||||
|
|
||||||
# Prerequisites
|
|
||||||
|
|
||||||
This package was only tested with a [virtual environment (venv)](https://docs.python.org/3/library/venv.html). You can set up such an environment by running:
|
|
||||||
|
|
||||||
```python
|
|
||||||
# linux and macOS:
|
|
||||||
python -m venv /path/to/new/virtual/environment
|
|
||||||
|
|
||||||
# Windows:
|
|
||||||
python -m venv C:\path\to\new\virtual\environment
|
|
||||||
```
|
|
||||||
|
|
||||||
Then you can [activate the environment](https://docs.python.org/3/library/venv.html#how-venvs-work), after which the venv is ready to work with.
|
|
||||||
|
|
||||||
# Install AMR
|
|
||||||
|
|
||||||
1. Since the Python package is available on the official [Python Package Index](https://pypi.org/project/AMR/), you can just run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install AMR
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Make sure you have R installed. There is **no need to install the `AMR` R package**, as it will be installed automatically.
|
|
||||||
|
|
||||||
For Linux:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Ubuntu / Debian
|
|
||||||
sudo apt install r-base
|
|
||||||
# Fedora:
|
|
||||||
sudo dnf install R
|
|
||||||
# CentOS/RHEL
|
|
||||||
sudo yum install R
|
|
||||||
```
|
|
||||||
|
|
||||||
For macOS (using [Homebrew](https://brew.sh)):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
brew install r
|
|
||||||
```
|
|
||||||
|
|
||||||
For Windows, visit the [CRAN download page](https://cran.r-project.org) to download and install R.
|
|
||||||
|
|
||||||
# Examples of Usage
|
|
||||||
|
|
||||||
## Cleaning Taxonomy
|
|
||||||
|
|
||||||
Here’s an example that demonstrates how to clean microorganism and drug names using the `AMR` Python package:
|
|
||||||
|
|
||||||
```python
|
|
||||||
import pandas as pd
|
|
||||||
import AMR
|
|
||||||
|
|
||||||
# Sample data
|
|
||||||
data = {
|
|
||||||
"MOs": ['E. coli', 'ESCCOL', 'esco', 'Esche coli'],
|
|
||||||
"Drug": ['Cipro', 'CIP', 'J01MA02', 'Ciproxin']
|
|
||||||
}
|
|
||||||
df = pd.DataFrame(data)
|
|
||||||
|
|
||||||
# Use AMR functions to clean microorganism and drug names
|
|
||||||
df['MO_clean'] = AMR.mo_name(df['MOs'])
|
|
||||||
df['Drug_clean'] = AMR.ab_name(df['Drug'])
|
|
||||||
|
|
||||||
# Display the results
|
|
||||||
print(df)
|
|
||||||
```
|
|
||||||
|
|
||||||
| MOs | Drug | MO_clean | Drug_clean |
|
|
||||||
|-------------|-----------|--------------------|---------------|
|
|
||||||
| E. coli | Cipro | Escherichia coli | Ciprofloxacin |
|
|
||||||
| ESCCOL | CIP | Escherichia coli | Ciprofloxacin |
|
|
||||||
| esco | J01MA02 | Escherichia coli | Ciprofloxacin |
|
|
||||||
| Esche coli | Ciproxin | Escherichia coli | Ciprofloxacin |
|
|
||||||
|
|
||||||
### Explanation
|
|
||||||
|
|
||||||
* **mo_name:** This function standardises microorganism names. Here, different variations of *Escherichia coli* (such as "E. coli", "ESCCOL", "esco", and "Esche coli") are all converted into the correct, standardised form, "Escherichia coli".
|
|
||||||
|
|
||||||
* **ab_name**: Similarly, this function standardises antimicrobial names. The different representations of ciprofloxacin (e.g., "Cipro", "CIP", "J01MA02", and "Ciproxin") are all converted to the standard name, "Ciprofloxacin".
|
|
||||||
|
|
||||||
## Calculating AMR
|
|
||||||
|
|
||||||
```python
|
|
||||||
import AMR
|
|
||||||
import pandas as pd
|
|
||||||
|
|
||||||
df = AMR.example_isolates
|
|
||||||
result = AMR.resistance(df["AMX"])
|
|
||||||
print(result)
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
[0.59555556]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Generating Antibiograms
|
|
||||||
|
|
||||||
One of the core functions of the `AMR` package is generating an antibiogram, a table that summarises the antimicrobial susceptibility of bacterial isolates. Here’s how you can generate an antibiogram from Python:
|
|
||||||
|
|
||||||
```python
|
|
||||||
result2a = AMR.antibiogram(df[["mo", "AMX", "CIP", "TZP"]])
|
|
||||||
print(result2a)
|
|
||||||
```
|
|
||||||
|
|
||||||
| Pathogen | Amoxicillin | Ciprofloxacin | Piperacillin/tazobactam |
|
|
||||||
|-----------------|-----------------|-----------------|--------------------------|
|
|
||||||
| CoNS | 7% (10/142) | 73% (183/252) | 30% (10/33) |
|
|
||||||
| E. coli | 50% (196/392) | 88% (399/456) | 94% (393/416) |
|
|
||||||
| K. pneumoniae | 0% (0/58) | 96% (53/55) | 89% (47/53) |
|
|
||||||
| P. aeruginosa | 0% (0/30) | 100% (30/30) | None |
|
|
||||||
| P. mirabilis | None | 94% (34/36) | None |
|
|
||||||
| S. aureus | 6% (8/131) | 90% (171/191) | None |
|
|
||||||
| S. epidermidis | 1% (1/91) | 64% (87/136) | None |
|
|
||||||
| S. hominis | None | 80% (56/70) | None |
|
|
||||||
| S. pneumoniae | 100% (112/112) | None | 100% (112/112) |
|
|
||||||
|
|
||||||
|
|
||||||
```python
|
|
||||||
result2b = AMR.antibiogram(df[["mo", "AMX", "CIP", "TZP"]], mo_transform = "gramstain")
|
|
||||||
print(result2b)
|
|
||||||
```
|
|
||||||
|
|
||||||
| Pathogen | Amoxicillin | Ciprofloxacin | Piperacillin/tazobactam |
|
|
||||||
|----------------|-----------------|------------------|--------------------------|
|
|
||||||
| Gram-negative | 36% (226/631) | 91% (621/684) | 88% (565/641) |
|
|
||||||
| Gram-positive | 43% (305/703) | 77% (560/724) | 86% (296/345) |
|
|
||||||
|
|
||||||
|
|
||||||
In this example, we generate an antibiogram by selecting various antibiotics.
|
|
||||||
|
|
||||||
## Taxonomic Data Sets Now in Python!
|
|
||||||
|
|
||||||
As a Python user, you might like that the most important data sets of the `AMR` R package, `microorganisms`, `antimicrobials`, `clinical_breakpoints`, and `example_isolates`, are now available as regular Python data frames:
|
|
||||||
|
|
||||||
```python
|
|
||||||
AMR.microorganisms
|
|
||||||
```
|
|
||||||
|
|
||||||
| mo | fullname | status | kingdom | gbif | gbif_parent | gbif_renamed_to | prevalence |
|
|
||||||
|--------------|------------------------------------|----------|----------|-----------|-------------|-----------------|------------|
|
|
||||||
| B_GRAMN | (unknown Gram-negatives) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_GRAMP | (unknown Gram-positives) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_ANAER-NEG | (unknown anaerobic Gram-negatives) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_ANAER-POS | (unknown anaerobic Gram-positives) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_ANAER | (unknown anaerobic bacteria) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| ... | ... | ... | ... | ... | ... | ... | ... |
|
|
||||||
| B_ZYMMN_POMC | Zymomonas pomaceae | accepted | Bacteria | 10744418 | 3221412 | None | 2.0 |
|
|
||||||
| B_ZYMPH | Zymophilus | synonym | Bacteria | None | 9475166 | None | 2.0 |
|
|
||||||
| B_ZYMPH_PCVR | Zymophilus paucivorans | synonym | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_ZYMPH_RFFN | Zymophilus raffinosivorans | synonym | Bacteria | None | None | None | 2.0 |
|
|
||||||
| F_ZYZYG | Zyzygomyces | unknown | Fungi | None | 7581 | None | 2.0 |
|
|
||||||
|
|
||||||
```python
|
|
||||||
AMR.antimicrobials
|
|
||||||
```
|
|
||||||
|
|
||||||
| ab | cid | name | group | oral_ddd | oral_units | iv_ddd | iv_units |
|
|
||||||
|-----|-------------|----------------------|----------------------------|----------|------------|--------|----------|
|
|
||||||
| AMA | 4649.0 | 4-aminosalicylic acid| Antimycobacterials | 12.00 | g | NaN | None |
|
|
||||||
| ACM | 6450012.0 | Acetylmidecamycin | Macrolides/lincosamides | NaN | None | NaN | None |
|
|
||||||
| ASP | 49787020.0 | Acetylspiramycin | Macrolides/lincosamides | NaN | None | NaN | None |
|
|
||||||
| ALS | 8954.0 | Aldesulfone sodium | Other antibacterials | 0.33 | g | NaN | None |
|
|
||||||
| AMK | 37768.0 | Amikacin | Aminoglycosides | NaN | None | 1.0 | g |
|
|
||||||
| ... | ... | ... | ... | ... | ... | ... | ... |
|
|
||||||
| VIR | 11979535.0 | Virginiamycine | Other antibacterials | NaN | None | NaN | None |
|
|
||||||
| VOR | 71616.0 | Voriconazole | Antifungals/antimycotics | 0.40 | g | 0.4 | g |
|
|
||||||
| XBR | 72144.0 | Xibornol | Other antibacterials | NaN | None | NaN | None |
|
|
||||||
| ZID | 77846445.0 | Zidebactam | Other antibacterials | NaN | None | NaN | None |
|
|
||||||
| ZFD | NaN | Zoliflodacin | None | NaN | None | NaN | None |
|
|
||||||
|
|
||||||
|
|
||||||
# Installation Channels
|
|
||||||
|
|
||||||
## Stable Release (CRAN)
|
|
||||||
|
|
||||||
The default `AMR` Python package uses the latest stable version of the `AMR` R package, published on CRAN. After running `pip install AMR`, import it as usual:
|
|
||||||
|
|
||||||
```python
|
|
||||||
import AMR
|
|
||||||
|
|
||||||
AMR.example_isolates
|
|
||||||
```
|
|
||||||
|
|
||||||
## Development Version (GitHub)
|
|
||||||
|
|
||||||
To use the latest development version of the `AMR` R package (sourced directly from GitHub), import the `beta` sub-package and alias it as `AMR`:
|
|
||||||
|
|
||||||
```python
|
|
||||||
import AMR.beta as AMR
|
|
||||||
|
|
||||||
AMR.example_isolates
|
|
||||||
```
|
|
||||||
|
|
||||||
Aliasing with `as AMR` keeps all downstream code identical to the stable import. Switching between the stable release and the development version requires changing only the import line — nothing else in your script needs to change.
|
|
||||||
|
|
||||||
# SIR Classification with `as_sir()`
|
|
||||||
|
|
||||||
## Using `enforce_method`
|
|
||||||
|
|
||||||
The `as_sir()` function in R uses S3 method dispatch to select the correct calculation method based on the input class: `<mic>` for MIC values and `<disk>` for disk diffusion values. Because Python objects do not carry R class attributes through the `rpy2` bridge, this automatic dispatch may not resolve correctly.
|
|
||||||
|
|
||||||
To explicitly specify the input type, use the `enforce_method` argument:
|
|
||||||
|
|
||||||
```python
|
|
||||||
# Treat the column as MIC values — maps to R's as.sir.mic()
|
|
||||||
AMR.as_sir(df["MIC_col"], mo="E. coli", ab="AMX", guideline="EUCAST", enforce_method="mic")
|
|
||||||
|
|
||||||
# Treat the column as disk diffusion values — maps to R's as.sir.disk()
|
|
||||||
AMR.as_sir(df["disk_col"], mo="E. coli", ab="AMX", guideline="EUCAST", enforce_method="disk")
|
|
||||||
```
|
|
||||||
|
|
||||||
Without `enforce_method`, R falls back to class-based dispatch on the raw Python input, which may fail or return unexpected results. Always supply `enforce_method` when calling `as_sir()` from Python.
|
|
||||||
|
|
||||||
# Conclusion
|
|
||||||
|
|
||||||
With the `AMR` Python package, Python users can now effortlessly call R functions from the `AMR` R package. This eliminates the need for complex `rpy2` configurations and provides a clean, easy-to-use interface for antimicrobial resistance analysis. The examples provided above demonstrate how this can be applied to typical workflows, such as standardising microorganism and antimicrobial names or calculating resistance.
|
|
||||||
|
|
||||||
By just running `import AMR`, users can seamlessly integrate the robust features of the R `AMR` package into Python workflows.
|
|
||||||
|
|
||||||
Whether you're cleaning data or analysing resistance patterns, the `AMR` Python package makes it easy to work with AMR data in Python.
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
README.md
|
|
||||||
setup.py
|
|
||||||
AMR/__init__.py
|
|
||||||
AMR/_engine.py
|
|
||||||
AMR/beta.py
|
|
||||||
AMR/datasets.py
|
|
||||||
AMR/functions.py
|
|
||||||
AMR.egg-info/PKG-INFO
|
|
||||||
AMR.egg-info/SOURCES.txt
|
|
||||||
AMR.egg-info/dependency_links.txt
|
|
||||||
AMR.egg-info/requires.txt
|
|
||||||
AMR.egg-info/top_level.txt
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
rpy2
|
|
||||||
numpy
|
|
||||||
pandas
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
AMR
|
|
||||||
@@ -1,249 +0,0 @@
|
|||||||
import sys
|
|
||||||
|
|
||||||
_DATASETS = frozenset({
|
|
||||||
'example_isolates', 'microorganisms',
|
|
||||||
'antimicrobials', 'clinical_breakpoints'
|
|
||||||
})
|
|
||||||
|
|
||||||
class _AMRModule(type(sys.modules[__name__])):
|
|
||||||
"""Lazy-loading module: nothing runs until an attribute is accessed."""
|
|
||||||
|
|
||||||
def __getattr__(self, name):
|
|
||||||
if name in _DATASETS:
|
|
||||||
from .datasets import get
|
|
||||||
return get(name, source="cran")
|
|
||||||
try:
|
|
||||||
from . import functions
|
|
||||||
return getattr(functions, name)
|
|
||||||
except AttributeError:
|
|
||||||
raise AttributeError(
|
|
||||||
f"module 'AMR' has no attribute '{name}'")
|
|
||||||
|
|
||||||
sys.modules[__name__].__class__ = _AMRModule
|
|
||||||
from .functions import custom_eucast_rules
|
|
||||||
from .functions import ab_class
|
|
||||||
from .functions import ab_selector
|
|
||||||
from .functions import ab_from_text
|
|
||||||
from .functions import ab_name
|
|
||||||
from .functions import ab_cid
|
|
||||||
from .functions import ab_synonyms
|
|
||||||
from .functions import ab_tradenames
|
|
||||||
from .functions import ab_group
|
|
||||||
from .functions import ab_atc
|
|
||||||
from .functions import ab_atc_group1
|
|
||||||
from .functions import ab_atc_group2
|
|
||||||
from .functions import ab_loinc
|
|
||||||
from .functions import ab_ddd
|
|
||||||
from .functions import ab_ddd_units
|
|
||||||
from .functions import ab_info
|
|
||||||
from .functions import ab_url
|
|
||||||
from .functions import ab_property
|
|
||||||
from .functions import add_custom_antimicrobials
|
|
||||||
from .functions import clear_custom_antimicrobials
|
|
||||||
from .functions import add_custom_microorganisms
|
|
||||||
from .functions import clear_custom_microorganisms
|
|
||||||
from .functions import age
|
|
||||||
from .functions import age_groups
|
|
||||||
from .functions import all_sir
|
|
||||||
from .functions import all_sir_predictors
|
|
||||||
from .functions import all_mic
|
|
||||||
from .functions import all_mic_predictors
|
|
||||||
from .functions import all_disk
|
|
||||||
from .functions import all_disk_predictors
|
|
||||||
from .functions import step_mic_log2
|
|
||||||
from .functions import step_sir_numeric
|
|
||||||
from .functions import amr_course
|
|
||||||
from .functions import wisca
|
|
||||||
from .functions import antibiogram
|
|
||||||
from .functions import retrieve_wisca_parameters
|
|
||||||
from .functions import wisca_plot
|
|
||||||
from .functions import aminoglycosides
|
|
||||||
from .functions import aminopenicillins
|
|
||||||
from .functions import antifungals
|
|
||||||
from .functions import antimycobacterials
|
|
||||||
from .functions import betalactams
|
|
||||||
from .functions import betalactams_with_inhibitor
|
|
||||||
from .functions import carbapenems
|
|
||||||
from .functions import cephalosporins
|
|
||||||
from .functions import cephalosporins_1st
|
|
||||||
from .functions import cephalosporins_2nd
|
|
||||||
from .functions import cephalosporins_3rd
|
|
||||||
from .functions import cephalosporins_4th
|
|
||||||
from .functions import cephalosporins_5th
|
|
||||||
from .functions import fluoroquinolones
|
|
||||||
from .functions import glycopeptides
|
|
||||||
from .functions import ionophores
|
|
||||||
from .functions import isoxazolylpenicillins
|
|
||||||
from .functions import lincosamides
|
|
||||||
from .functions import lipoglycopeptides
|
|
||||||
from .functions import macrolides
|
|
||||||
from .functions import monobactams
|
|
||||||
from .functions import nitrofurans
|
|
||||||
from .functions import oxazolidinones
|
|
||||||
from .functions import penicillins
|
|
||||||
from .functions import peptides
|
|
||||||
from .functions import phenicols
|
|
||||||
from .functions import phosphonics
|
|
||||||
from .functions import polymyxins
|
|
||||||
from .functions import quinolones
|
|
||||||
from .functions import rifamycins
|
|
||||||
from .functions import spiropyrimidinetriones
|
|
||||||
from .functions import streptogramins
|
|
||||||
from .functions import sulfonamides
|
|
||||||
from .functions import tetracyclines
|
|
||||||
from .functions import trimethoprims
|
|
||||||
from .functions import ureidopenicillins
|
|
||||||
from .functions import amr_class
|
|
||||||
from .functions import amr_selector
|
|
||||||
from .functions import administrable_per_os
|
|
||||||
from .functions import administrable_iv
|
|
||||||
from .functions import not_intrinsic_resistant
|
|
||||||
from .functions import as_ab
|
|
||||||
from .functions import is_ab
|
|
||||||
from .functions import ab_reset_session
|
|
||||||
from .functions import as_av
|
|
||||||
from .functions import is_av
|
|
||||||
from .functions import as_disk
|
|
||||||
from .functions import is_disk
|
|
||||||
from .functions import as_mic
|
|
||||||
from .functions import is_mic
|
|
||||||
from .functions import rescale_mic
|
|
||||||
from .functions import mic_p50
|
|
||||||
from .functions import mic_p90
|
|
||||||
from .functions import as_mo
|
|
||||||
from .functions import is_mo
|
|
||||||
from .functions import mo_uncertainties
|
|
||||||
from .functions import mo_renamed
|
|
||||||
from .functions import mo_failures
|
|
||||||
from .functions import mo_reset_session
|
|
||||||
from .functions import mo_cleaning_regex
|
|
||||||
from .functions import as_sir
|
|
||||||
from .functions import is_sir
|
|
||||||
from .functions import is_sir_eligible
|
|
||||||
from .functions import sir_interpretation_history
|
|
||||||
from .functions import atc_online_property
|
|
||||||
from .functions import atc_online_groups
|
|
||||||
from .functions import atc_online_ddd
|
|
||||||
from .functions import atc_online_ddd_units
|
|
||||||
from .functions import av_from_text
|
|
||||||
from .functions import av_name
|
|
||||||
from .functions import av_cid
|
|
||||||
from .functions import av_synonyms
|
|
||||||
from .functions import av_tradenames
|
|
||||||
from .functions import av_group
|
|
||||||
from .functions import av_atc
|
|
||||||
from .functions import av_loinc
|
|
||||||
from .functions import av_ddd
|
|
||||||
from .functions import av_ddd_units
|
|
||||||
from .functions import av_info
|
|
||||||
from .functions import av_url
|
|
||||||
from .functions import av_property
|
|
||||||
from .functions import availability
|
|
||||||
from .functions import bug_drug_combinations
|
|
||||||
from .functions import count_resistant
|
|
||||||
from .functions import count_susceptible
|
|
||||||
from .functions import count_S
|
|
||||||
from .functions import count_SI
|
|
||||||
from .functions import count_I
|
|
||||||
from .functions import count_IR
|
|
||||||
from .functions import count_R
|
|
||||||
from .functions import count_all
|
|
||||||
from .functions import n_sir
|
|
||||||
from .functions import count_df
|
|
||||||
from .functions import custom_interpretive_rules
|
|
||||||
from .functions import custom_mdro_guideline
|
|
||||||
from .functions import export_ncbi_biosample
|
|
||||||
from .functions import first_isolate
|
|
||||||
from .functions import filter_first_isolate
|
|
||||||
from .functions import g_test
|
|
||||||
from .functions import is_new_episode
|
|
||||||
from .functions import ggplot_pca
|
|
||||||
from .functions import ggplot_sir
|
|
||||||
from .functions import geom_sir
|
|
||||||
from .functions import guess_ab_col
|
|
||||||
from .functions import interpretive_rules
|
|
||||||
from .functions import eucast_rules
|
|
||||||
from .functions import clsi_rules
|
|
||||||
from .functions import eucast_dosage
|
|
||||||
from .functions import italicise_taxonomy
|
|
||||||
from .functions import italicize_taxonomy
|
|
||||||
from .functions import inner_join_microorganisms
|
|
||||||
from .functions import left_join_microorganisms
|
|
||||||
from .functions import right_join_microorganisms
|
|
||||||
from .functions import full_join_microorganisms
|
|
||||||
from .functions import semi_join_microorganisms
|
|
||||||
from .functions import anti_join_microorganisms
|
|
||||||
from .functions import key_antimicrobials
|
|
||||||
from .functions import all_antimicrobials
|
|
||||||
from .functions import kurtosis
|
|
||||||
from .functions import like
|
|
||||||
from .functions import mdro
|
|
||||||
from .functions import brmo
|
|
||||||
from .functions import mrgn
|
|
||||||
from .functions import mdr_tb
|
|
||||||
from .functions import mdr_cmi2012
|
|
||||||
from .functions import eucast_exceptional_phenotypes
|
|
||||||
from .functions import mean_amr_distance
|
|
||||||
from .functions import amr_distance_from_row
|
|
||||||
from .functions import mo_matching_score
|
|
||||||
from .functions import mo_name
|
|
||||||
from .functions import mo_fullname
|
|
||||||
from .functions import mo_shortname
|
|
||||||
from .functions import mo_subspecies
|
|
||||||
from .functions import mo_species
|
|
||||||
from .functions import mo_genus
|
|
||||||
from .functions import mo_family
|
|
||||||
from .functions import mo_order
|
|
||||||
from .functions import mo_class
|
|
||||||
from .functions import mo_phylum
|
|
||||||
from .functions import mo_kingdom
|
|
||||||
from .functions import mo_domain
|
|
||||||
from .functions import mo_type
|
|
||||||
from .functions import mo_status
|
|
||||||
from .functions import mo_pathogenicity
|
|
||||||
from .functions import mo_gramstain
|
|
||||||
from .functions import mo_is_gram_negative
|
|
||||||
from .functions import mo_is_gram_positive
|
|
||||||
from .functions import mo_is_yeast
|
|
||||||
from .functions import mo_is_intrinsic_resistant
|
|
||||||
from .functions import mo_oxygen_tolerance
|
|
||||||
from .functions import mo_is_anaerobic
|
|
||||||
from .functions import mo_morphology
|
|
||||||
from .functions import mo_snomed
|
|
||||||
from .functions import mo_ref
|
|
||||||
from .functions import mo_authors
|
|
||||||
from .functions import mo_year
|
|
||||||
from .functions import mo_lpsn
|
|
||||||
from .functions import mo_mycobank
|
|
||||||
from .functions import mo_gbif
|
|
||||||
from .functions import mo_rank
|
|
||||||
from .functions import mo_taxonomy
|
|
||||||
from .functions import mo_synonyms
|
|
||||||
from .functions import mo_current
|
|
||||||
from .functions import mo_group_members
|
|
||||||
from .functions import mo_info
|
|
||||||
from .functions import mo_url
|
|
||||||
from .functions import mo_property
|
|
||||||
from .functions import pca
|
|
||||||
from .functions import theme_sir
|
|
||||||
from .functions import labels_sir_count
|
|
||||||
from .functions import resistance
|
|
||||||
from .functions import susceptibility
|
|
||||||
from .functions import sir_confidence_interval
|
|
||||||
from .functions import proportion_R
|
|
||||||
from .functions import proportion_IR
|
|
||||||
from .functions import proportion_I
|
|
||||||
from .functions import proportion_SI
|
|
||||||
from .functions import proportion_S
|
|
||||||
from .functions import proportion_df
|
|
||||||
from .functions import sir_df
|
|
||||||
from .functions import random_mic
|
|
||||||
from .functions import random_disk
|
|
||||||
from .functions import random_sir
|
|
||||||
from .functions import resistance_predict
|
|
||||||
from .functions import sir_predict
|
|
||||||
from .functions import ggplot_sir_predict
|
|
||||||
from .functions import skewness
|
|
||||||
from .functions import top_n_microorganisms
|
|
||||||
from .functions import reset_AMR_locale
|
|
||||||
from .functions import translate_AMR
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
import os
|
|
||||||
import sys
|
|
||||||
import importlib.metadata as metadata
|
|
||||||
|
|
||||||
# Get the path to the virtual environment
|
|
||||||
venv_path = sys.prefix
|
|
||||||
r_lib_path = os.path.join(venv_path, "R_libs")
|
|
||||||
os.makedirs(r_lib_path, exist_ok=True)
|
|
||||||
|
|
||||||
# Set environment variable before importing rpy2
|
|
||||||
os.environ['R_LIBS_SITE'] = r_lib_path
|
|
||||||
|
|
||||||
from rpy2 import robjects
|
|
||||||
from rpy2.robjects.vectors import StrVector
|
|
||||||
from rpy2.robjects.packages import importr, isinstalled
|
|
||||||
|
|
||||||
# Import base and utils once
|
|
||||||
base = importr('base')
|
|
||||||
utils = importr('utils')
|
|
||||||
|
|
||||||
# Silence R console output entirely
|
|
||||||
robjects.r('suppressMessages(suppressWarnings(sink(tempfile())))')
|
|
||||||
base._libPaths(r_lib_path)
|
|
||||||
|
|
||||||
_installed_source = None
|
|
||||||
|
|
||||||
def _r_version():
|
|
||||||
"""Return the currently installed AMR R package version, or None."""
|
|
||||||
try:
|
|
||||||
return str(robjects.r(
|
|
||||||
f'as.character(packageVersion("AMR", lib.loc = "{r_lib_path}"))')[0])
|
|
||||||
except Exception:
|
|
||||||
return None
|
|
||||||
|
|
||||||
def _py_version():
|
|
||||||
"""Return the Python AMR package version from metadata, or empty string."""
|
|
||||||
try:
|
|
||||||
return str(metadata.version('AMR'))
|
|
||||||
except metadata.PackageNotFoundError:
|
|
||||||
return ''
|
|
||||||
|
|
||||||
def _install_cran():
|
|
||||||
"""Install AMR from CRAN into the isolated library."""
|
|
||||||
print("AMR: Installing from CRAN...", flush=True)
|
|
||||||
utils.install_packages(
|
|
||||||
'AMR',
|
|
||||||
repos='https://cloud.r-project.org',
|
|
||||||
lib=r_lib_path,
|
|
||||||
quiet=True
|
|
||||||
)
|
|
||||||
|
|
||||||
def _install_github():
|
|
||||||
"""Install AMR development version from GitHub into the isolated library."""
|
|
||||||
print("AMR: Installing development version from GitHub...", flush=True)
|
|
||||||
utils.install_packages(
|
|
||||||
StrVector(['remotes', 'desc']),
|
|
||||||
repos='https://cloud.r-project.org',
|
|
||||||
lib=r_lib_path,
|
|
||||||
quiet=True
|
|
||||||
)
|
|
||||||
remotes = importr('remotes', lib_loc=r_lib_path)
|
|
||||||
remotes.install_github('msberends/AMR', lib=r_lib_path, quiet=True)
|
|
||||||
|
|
||||||
def ensure_amr(source="cran"):
|
|
||||||
"""Ensure AMR is installed from the requested source. Idempotent per source."""
|
|
||||||
global _installed_source
|
|
||||||
|
|
||||||
if _installed_source == source:
|
|
||||||
return
|
|
||||||
|
|
||||||
install_fn = _install_github if source == "github" else _install_cran
|
|
||||||
|
|
||||||
if not isinstalled('AMR', lib_loc=r_lib_path):
|
|
||||||
install_fn()
|
|
||||||
else:
|
|
||||||
# Check for version mismatch and update if needed
|
|
||||||
r_ver = _r_version()
|
|
||||||
py_ver = _py_version()
|
|
||||||
if r_ver != py_ver:
|
|
||||||
try:
|
|
||||||
install_fn()
|
|
||||||
except Exception as e:
|
|
||||||
print(f"AMR: Could not update ({e})", flush=True)
|
|
||||||
|
|
||||||
print(f"AMR: R package version {_r_version()} ready.", flush=True)
|
|
||||||
_installed_source = source
|
|
||||||
|
|
||||||
def restore_sink():
|
|
||||||
"""Restore R console output after setup is complete."""
|
|
||||||
try:
|
|
||||||
robjects.r('sink()')
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import sys
|
|
||||||
|
|
||||||
_DATASETS = frozenset({
|
|
||||||
'example_isolates', 'microorganisms',
|
|
||||||
'antimicrobials', 'clinical_breakpoints'
|
|
||||||
})
|
|
||||||
|
|
||||||
class _BetaModule(type(sys.modules[__name__])):
|
|
||||||
"""Lazy-loading module: installs AMR from GitHub on first access."""
|
|
||||||
|
|
||||||
def __getattr__(self, name):
|
|
||||||
if name in _DATASETS:
|
|
||||||
from .datasets import get
|
|
||||||
return get(name, source="github")
|
|
||||||
try:
|
|
||||||
from . import functions
|
|
||||||
return getattr(functions, name)
|
|
||||||
except AttributeError:
|
|
||||||
raise AttributeError(
|
|
||||||
f"module 'AMR.beta' has no attribute '{name}'")
|
|
||||||
|
|
||||||
sys.modules[__name__].__class__ = _BetaModule
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
import pandas as pd
|
|
||||||
from rpy2 import robjects
|
|
||||||
from rpy2.robjects.conversion import localconverter
|
|
||||||
from rpy2.robjects import default_converter, numpy2ri, pandas2ri
|
|
||||||
|
|
||||||
from ._engine import ensure_amr, restore_sink
|
|
||||||
|
|
||||||
_cache = {}
|
|
||||||
_loaded_source = None
|
|
||||||
|
|
||||||
def _load_datasets(source="cran"):
|
|
||||||
"""Load all AMR datasets into the module cache."""
|
|
||||||
global _loaded_source
|
|
||||||
|
|
||||||
if _cache and _loaded_source == source:
|
|
||||||
return
|
|
||||||
|
|
||||||
if _cache and _loaded_source != source:
|
|
||||||
_cache.clear()
|
|
||||||
|
|
||||||
ensure_amr(source)
|
|
||||||
|
|
||||||
with localconverter(default_converter + numpy2ri.converter + pandas2ri.converter):
|
|
||||||
_cache['example_isolates'] = _load_example_isolates()
|
|
||||||
_cache['microorganisms'] = robjects.r(
|
|
||||||
'AMR::microorganisms[, !sapply(AMR::microorganisms, is.list)]')
|
|
||||||
_cache['antimicrobials'] = robjects.r(
|
|
||||||
'AMR::antimicrobials[, !sapply(AMR::antimicrobials, is.list)]')
|
|
||||||
_cache['clinical_breakpoints'] = robjects.r(
|
|
||||||
'AMR::clinical_breakpoints[, !sapply(AMR::clinical_breakpoints, is.list)]')
|
|
||||||
|
|
||||||
restore_sink()
|
|
||||||
_loaded_source = source
|
|
||||||
|
|
||||||
def _load_example_isolates():
|
|
||||||
df = robjects.r('''
|
|
||||||
df <- AMR::example_isolates
|
|
||||||
df[] <- lapply(df, function(x) {
|
|
||||||
if (inherits(x, c("Date", "POSIXt", "factor"))) {
|
|
||||||
as.character(x)
|
|
||||||
} else {
|
|
||||||
x
|
|
||||||
}
|
|
||||||
})
|
|
||||||
df <- df[, !sapply(df, is.list)]
|
|
||||||
df
|
|
||||||
''')
|
|
||||||
df['date'] = pd.to_datetime(df['date'])
|
|
||||||
return df
|
|
||||||
|
|
||||||
def get(name, source="cran"):
|
|
||||||
"""Retrieve a dataset by name, installing AMR if needed."""
|
|
||||||
_load_datasets(source)
|
|
||||||
return _cache[name]
|
|
||||||
@@ -1,984 +0,0 @@
|
|||||||
import functools
|
|
||||||
import rpy2.robjects as robjects
|
|
||||||
from rpy2.robjects.packages import importr
|
|
||||||
from rpy2.robjects.vectors import StrVector, FactorVector, IntVector, FloatVector, DataFrame
|
|
||||||
from rpy2.robjects.conversion import localconverter
|
|
||||||
from rpy2.robjects import default_converter, numpy2ri, pandas2ri
|
|
||||||
import pandas as pd
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
from ._engine import ensure_amr
|
|
||||||
|
|
||||||
# Ensure AMR is available before importing it in R
|
|
||||||
ensure_amr("cran")
|
|
||||||
amr_r = importr('AMR')
|
|
||||||
|
|
||||||
def convert_to_r(value):
|
|
||||||
"""Convert Python lists/tuples to typed R vectors.
|
|
||||||
|
|
||||||
rpy2's default_converter passes Python lists to R as R lists, not as
|
|
||||||
character/numeric vectors. This causes element-wise type-check functions
|
|
||||||
such as is.mic(), is.sir(), and is.disk() to return a logical vector
|
|
||||||
rather than a single logical, breaking R's scalar && operator.
|
|
||||||
|
|
||||||
This helper converts Python lists and tuples to the appropriate R vector
|
|
||||||
type based on the element types, so R always receives a proper vector."""
|
|
||||||
if isinstance(value, (list, tuple)):
|
|
||||||
if len(value) == 0:
|
|
||||||
return StrVector([])
|
|
||||||
# bool must be checked before int because bool is a subclass of int
|
|
||||||
if all(isinstance(v, bool) for v in value):
|
|
||||||
return robjects.vectors.BoolVector(value)
|
|
||||||
if all(isinstance(v, int) for v in value):
|
|
||||||
return IntVector(value)
|
|
||||||
if all(isinstance(v, float) for v in value):
|
|
||||||
return FloatVector(value)
|
|
||||||
if all(isinstance(v, str) for v in value):
|
|
||||||
return StrVector(value)
|
|
||||||
# Mixed types: coerce all to string
|
|
||||||
return StrVector([str(v) for v in value])
|
|
||||||
return value
|
|
||||||
|
|
||||||
def convert_to_python(r_output):
|
|
||||||
# Check if it's a StrVector (R character vector)
|
|
||||||
if isinstance(r_output, StrVector):
|
|
||||||
return list(r_output) # Convert to a Python list of strings
|
|
||||||
|
|
||||||
# Check if it's a FactorVector (R factor)
|
|
||||||
elif isinstance(r_output, FactorVector):
|
|
||||||
return list(r_output) # Convert to a list of integers (factor levels)
|
|
||||||
|
|
||||||
# Check if it's an IntVector or FloatVector (numeric R vectors)
|
|
||||||
elif isinstance(r_output, (IntVector, FloatVector)):
|
|
||||||
return list(r_output) # Convert to a Python list of integers or floats
|
|
||||||
|
|
||||||
# Check if it's a pandas-compatible R data frame
|
|
||||||
elif isinstance(r_output, (pd.DataFrame, DataFrame)):
|
|
||||||
return r_output # Return as pandas DataFrame (already converted by pandas2ri)
|
|
||||||
|
|
||||||
# Check if the input is a NumPy array and has a string data type
|
|
||||||
if isinstance(r_output, np.ndarray) and np.issubdtype(r_output.dtype, np.str_):
|
|
||||||
return r_output.tolist() # Convert to a regular Python list
|
|
||||||
|
|
||||||
# Fall-back
|
|
||||||
return r_output
|
|
||||||
|
|
||||||
def r_to_python(r_func):
|
|
||||||
"""Decorator that converts Python list/tuple inputs to typed R vectors,
|
|
||||||
runs the rpy2 function under a localconverter, and converts the output
|
|
||||||
to a Python type."""
|
|
||||||
@functools.wraps(r_func)
|
|
||||||
def wrapper(*args, **kwargs):
|
|
||||||
args = tuple(convert_to_r(a) for a in args)
|
|
||||||
kwargs = {k: convert_to_r(v) for k, v in kwargs.items()}
|
|
||||||
with localconverter(default_converter + numpy2ri.converter + pandas2ri.converter):
|
|
||||||
return convert_to_python(r_func(*args, **kwargs))
|
|
||||||
return wrapper
|
|
||||||
@r_to_python
|
|
||||||
def custom_eucast_rules(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.custom_eucast_rules(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_class(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_class(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_selector(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_selector(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_from_text(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_from_text(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_name(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_name(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_cid(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_cid(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_synonyms(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_synonyms(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_tradenames(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_tradenames(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_group(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_group(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_atc(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_atc(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_atc_group1(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_atc_group1(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_atc_group2(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_atc_group2(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_loinc(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_loinc(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_ddd(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_ddd(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_ddd_units(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_ddd_units(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_info(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_info(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_url(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_url(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ab_property(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_property(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def add_custom_antimicrobials(x):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.add_custom_antimicrobials(x)
|
|
||||||
@r_to_python
|
|
||||||
def clear_custom_antimicrobials(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.clear_custom_antimicrobials(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def add_custom_microorganisms(x):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.add_custom_microorganisms(x)
|
|
||||||
@r_to_python
|
|
||||||
def clear_custom_microorganisms(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.clear_custom_microorganisms(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def age(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.age(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def age_groups(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.age_groups(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def all_sir(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.all_sir(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def all_sir_predictors(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.all_sir_predictors(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def all_mic(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.all_mic(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def all_mic_predictors(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.all_mic_predictors(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def all_disk(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.all_disk(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def all_disk_predictors(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.all_disk_predictors(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def step_mic_log2(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.step_mic_log2(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def step_sir_numeric(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.step_sir_numeric(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def amr_course(github_repo, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.amr_course(github_repo, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def wisca(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.wisca(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def antibiogram(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.antibiogram(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def retrieve_wisca_parameters(wisca_model, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.retrieve_wisca_parameters(wisca_model, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def wisca_plot(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.wisca_plot(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def aminoglycosides(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.aminoglycosides(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def aminopenicillins(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.aminopenicillins(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def antifungals(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.antifungals(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def antimycobacterials(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.antimycobacterials(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def betalactams(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.betalactams(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def betalactams_with_inhibitor(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.betalactams_with_inhibitor(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def carbapenems(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.carbapenems(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def cephalosporins(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.cephalosporins(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def cephalosporins_1st(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.cephalosporins_1st(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def cephalosporins_2nd(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.cephalosporins_2nd(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def cephalosporins_3rd(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.cephalosporins_3rd(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def cephalosporins_4th(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.cephalosporins_4th(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def cephalosporins_5th(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.cephalosporins_5th(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def fluoroquinolones(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.fluoroquinolones(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def glycopeptides(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.glycopeptides(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ionophores(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ionophores(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def isoxazolylpenicillins(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.isoxazolylpenicillins(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def lincosamides(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.lincosamides(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def lipoglycopeptides(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.lipoglycopeptides(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def macrolides(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.macrolides(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def monobactams(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.monobactams(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def nitrofurans(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.nitrofurans(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def oxazolidinones(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.oxazolidinones(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def penicillins(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.penicillins(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def peptides(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.peptides(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def phenicols(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.phenicols(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def phosphonics(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.phosphonics(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def polymyxins(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.polymyxins(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def quinolones(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.quinolones(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def rifamycins(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.rifamycins(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def spiropyrimidinetriones(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.spiropyrimidinetriones(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def streptogramins(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.streptogramins(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def sulfonamides(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.sulfonamides(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def tetracyclines(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.tetracyclines(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def trimethoprims(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.trimethoprims(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ureidopenicillins(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ureidopenicillins(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def amr_class(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.amr_class(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def amr_selector(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.amr_selector(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def administrable_per_os(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.administrable_per_os(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def administrable_iv(only_sir_columns = False, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.administrable_iv(only_sir_columns = False, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def not_intrinsic_resistant(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.not_intrinsic_resistant(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def as_ab(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.as_ab(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def is_ab(x):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.is_ab(x)
|
|
||||||
@r_to_python
|
|
||||||
def ab_reset_session(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ab_reset_session(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def as_av(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.as_av(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def is_av(x):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.is_av(x)
|
|
||||||
@r_to_python
|
|
||||||
def as_disk(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.as_disk(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def is_disk(x):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.is_disk(x)
|
|
||||||
@r_to_python
|
|
||||||
def as_mic(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.as_mic(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def is_mic(x):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.is_mic(x)
|
|
||||||
@r_to_python
|
|
||||||
def rescale_mic(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.rescale_mic(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mic_p50(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mic_p50(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mic_p90(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mic_p90(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def as_mo(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.as_mo(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def is_mo(x):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.is_mo(x)
|
|
||||||
@r_to_python
|
|
||||||
def mo_uncertainties(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_uncertainties(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_renamed(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_renamed(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_failures(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_failures(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_reset_session(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_reset_session(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_cleaning_regex(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_cleaning_regex(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def as_sir(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.as_sir(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def is_sir(x):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.is_sir(x)
|
|
||||||
@r_to_python
|
|
||||||
def is_sir_eligible(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.is_sir_eligible(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def sir_interpretation_history(clean):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.sir_interpretation_history(clean)
|
|
||||||
@r_to_python
|
|
||||||
def atc_online_property(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.atc_online_property(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def atc_online_groups(atc_code, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.atc_online_groups(atc_code, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def atc_online_ddd(atc_code, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.atc_online_ddd(atc_code, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def atc_online_ddd_units(atc_code, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.atc_online_ddd_units(atc_code, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_from_text(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_from_text(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_name(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_name(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_cid(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_cid(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_synonyms(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_synonyms(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_tradenames(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_tradenames(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_group(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_group(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_atc(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_atc(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_loinc(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_loinc(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_ddd(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_ddd(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_ddd_units(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_ddd_units(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_info(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_info(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_url(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_url(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def av_property(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.av_property(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def availability(tbl, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.availability(tbl, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def bug_drug_combinations(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.bug_drug_combinations(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_resistant(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_resistant(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_susceptible(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_susceptible(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_S(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_S(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_SI(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_SI(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_I(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_I(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_IR(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_IR(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_R(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_R(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_all(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_all(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def n_sir(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.n_sir(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def count_df(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.count_df(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def custom_interpretive_rules(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.custom_interpretive_rules(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def custom_mdro_guideline(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.custom_mdro_guideline(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def export_ncbi_biosample(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.export_ncbi_biosample(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def first_isolate(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.first_isolate(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def filter_first_isolate(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.filter_first_isolate(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def g_test(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.g_test(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def is_new_episode(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.is_new_episode(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ggplot_pca(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ggplot_pca(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ggplot_sir(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ggplot_sir(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def geom_sir(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.geom_sir(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def guess_ab_col(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.guess_ab_col(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def interpretive_rules(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.interpretive_rules(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def eucast_rules(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.eucast_rules(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def clsi_rules(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.clsi_rules(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def eucast_dosage(ab, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.eucast_dosage(ab, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def italicise_taxonomy(string, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.italicise_taxonomy(string, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def italicize_taxonomy(string, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.italicize_taxonomy(string, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def inner_join_microorganisms(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.inner_join_microorganisms(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def left_join_microorganisms(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.left_join_microorganisms(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def right_join_microorganisms(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.right_join_microorganisms(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def full_join_microorganisms(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.full_join_microorganisms(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def semi_join_microorganisms(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.semi_join_microorganisms(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def anti_join_microorganisms(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.anti_join_microorganisms(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def key_antimicrobials(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.key_antimicrobials(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def all_antimicrobials(x = None, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.all_antimicrobials(x = None, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def kurtosis(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.kurtosis(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def like(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.like(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mdro(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mdro(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def brmo(x = None, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.brmo(x = None, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mrgn(x = None, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mrgn(x = None, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mdr_tb(x = None, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mdr_tb(x = None, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mdr_cmi2012(x = None, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mdr_cmi2012(x = None, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def eucast_exceptional_phenotypes(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.eucast_exceptional_phenotypes(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mean_amr_distance(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mean_amr_distance(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def amr_distance_from_row(amr_distance, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.amr_distance_from_row(amr_distance, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_matching_score(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_matching_score(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_name(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_name(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_fullname(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_fullname(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_shortname(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_shortname(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_subspecies(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_subspecies(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_species(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_species(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_genus(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_genus(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_family(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_family(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_order(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_order(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_class(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_class(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_phylum(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_phylum(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_kingdom(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_kingdom(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_domain(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_domain(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_type(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_type(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_status(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_status(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_pathogenicity(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_pathogenicity(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_gramstain(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_gramstain(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_is_gram_negative(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_is_gram_negative(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_is_gram_positive(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_is_gram_positive(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_is_yeast(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_is_yeast(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_is_intrinsic_resistant(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_is_intrinsic_resistant(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_oxygen_tolerance(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_oxygen_tolerance(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_is_anaerobic(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_is_anaerobic(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_morphology(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_morphology(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_snomed(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_snomed(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_ref(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_ref(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_authors(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_authors(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_year(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_year(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_lpsn(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_lpsn(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_mycobank(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_mycobank(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_gbif(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_gbif(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_rank(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_rank(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_taxonomy(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_taxonomy(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_synonyms(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_synonyms(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_current(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_current(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_group_members(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_group_members(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_info(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_info(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_url(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_url(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def mo_property(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.mo_property(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def pca(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.pca(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def theme_sir(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.theme_sir(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def labels_sir_count(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.labels_sir_count(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def resistance(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.resistance(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def susceptibility(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.susceptibility(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def sir_confidence_interval(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.sir_confidence_interval(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def proportion_R(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.proportion_R(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def proportion_IR(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.proportion_IR(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def proportion_I(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.proportion_I(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def proportion_SI(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.proportion_SI(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def proportion_S(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.proportion_S(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def proportion_df(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.proportion_df(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def sir_df(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.sir_df(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def random_mic(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.random_mic(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def random_disk(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.random_disk(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def random_sir(size = None, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.random_sir(size = None, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def resistance_predict(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.resistance_predict(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def sir_predict(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.sir_predict(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def ggplot_sir_predict(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.ggplot_sir_predict(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def skewness(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.skewness(x, *args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def top_n_microorganisms(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.top_n_microorganisms(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def reset_AMR_locale(*args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.reset_AMR_locale(*args, **kwargs)
|
|
||||||
@r_to_python
|
|
||||||
def translate_AMR(x, *args, **kwargs):
|
|
||||||
"""Please see our website of the R package for the full manual: https://amr-for-r.org"""
|
|
||||||
return amr_r.translate_AMR(x, *args, **kwargs)
|
|
||||||
|
After Width: | Height: | Size: 296 KiB |
|
After Width: | Height: | Size: 296 KiB |
@@ -0,0 +1,280 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>CLAUDE.md — AMR R Package • AMR (for R)</title><!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="favicon-96x96.png"><link rel="icon" type="”image/svg+xml”" href="favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png"><link rel="icon" sizes="any" href="favicon.ico"><link rel="manifest" href="site.webmanifest"><script src="deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet"><script src="deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="deps/Lato-0.4.10/font.css" rel="stylesheet"><link href="deps/Fira_Code-0.4.10/font.css" rel="stylesheet"><link href="deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="deps/headroom-0.11.0/headroom.min.js"></script><script src="deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="deps/search-1.0.0/fuse.min.js"></script><script src="deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="pkgdown.js"></script><link href="extra.css" rel="stylesheet"><script src="extra.js"></script><meta property="og:title" content="CLAUDE.md — AMR R Package"><meta property="og:image" content="https://amr-for-r.org/logo.svg"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script></head><body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto"><li class="nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to"><li><a class="dropdown-item" href="articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="search.json"></form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul></div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-title-body">
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="logo.svg" class="logo" alt=""><h1>CLAUDE.md — AMR R Package</h1>
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/CLAUDE.md" class="external-link"><code>CLAUDE.md</code></a></small>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="claudemd--amr-r-package" class="section level1">
|
||||||
|
|
||||||
|
<p>This file provides context for Claude Code when working in this repository.</p>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="project-overview">Project Overview<a class="anchor" aria-label="anchor" href="#project-overview"></a></h2>
|
||||||
|
<p><strong>AMR</strong> is a zero-dependency R package for antimicrobial resistance (AMR) data analysis using a One Health approach. It is peer-reviewed, used in 175+ countries, and supports 28 languages.</p>
|
||||||
|
<p>Key capabilities: - SIR (Susceptible/Intermediate/Resistant) classification using EUCAST 2011–2025 and CLSI 2011–2025 breakpoints - Antibiogram generation: traditional, combined, syndromic, and WISCA - Microorganism taxonomy database (~79,000 species) - Antimicrobial drug database (~620 drugs) - Multi-drug resistant organism (MDRO) classification - First-isolate identification - Minimum Inhibitory Concentration (MIC) and disk diffusion handling - Multilingual output (28 languages)</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="common-commands">Common Commands<a class="anchor" aria-label="anchor" href="#common-commands"></a></h2>
|
||||||
|
<p>All commands run inside an R session:</p>
|
||||||
|
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Rebuild documentation (roxygen2 → .Rd files + NAMESPACE)</span></span>
|
||||||
|
<span><span class="fu">devtools</span><span class="fu">::</span><span class="fu">document</span><span class="op">(</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Run all tests</span></span>
|
||||||
|
<span><span class="fu">devtools</span><span class="fu">::</span><span class="fu">test</span><span class="op">(</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Full package check (CRAN-level: docs + tests + checks)</span></span>
|
||||||
|
<span><span class="fu">devtools</span><span class="fu">::</span><span class="fu">check</span><span class="op">(</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Build pkgdown website locally</span></span>
|
||||||
|
<span><span class="fu">pkgdown</span><span class="fu">::</span><span class="fu"><a href="https://pkgdown.r-lib.org/reference/build_site.html" class="external-link">build_site</a></span><span class="op">(</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Code coverage report</span></span>
|
||||||
|
<span><span class="fu">covr</span><span class="fu">::</span><span class="fu"><a href="http://covr.r-lib.org/reference/package_coverage.html" class="external-link">package_coverage</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p>From the shell:</p>
|
||||||
|
<div class="sourceCode" id="cb2"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a><span class="co"># CRAN check from parent directory</span></span>
|
||||||
|
<span id="cb2-2"><a href="#cb2-2" tabindex="-1"></a><span class="ex">R</span> CMD check AMR</span></code></pre></div>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="repository-structure">Repository Structure<a class="anchor" aria-label="anchor" href="#repository-structure"></a></h2>
|
||||||
|
<pre><code>R/ # All R source files (62 files, ~28,000 lines)
|
||||||
|
man/ # Auto-generated .Rd documentation (do not edit manually)
|
||||||
|
tests/testthat/ # testthat test files (test-*.R) and helper-functions.R
|
||||||
|
data/ # Pre-compiled .rda datasets
|
||||||
|
data-raw/ # Scripts used to generate data/ files
|
||||||
|
vignettes/ # Rmd vignette articles
|
||||||
|
inst/ # Installed files (translations, etc.)
|
||||||
|
_pkgdown.yml # pkgdown website configuration</code></pre>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="r-source-file-conventions">R Source File Conventions<a class="anchor" aria-label="anchor" href="#r-source-file-conventions"></a></h2>
|
||||||
|
<p><strong>Naming conventions in <code>R/</code>:</strong></p>
|
||||||
|
<table class="table"><thead><tr><th>Prefix/Name</th>
|
||||||
|
<th>Purpose</th>
|
||||||
|
</tr></thead><tbody><tr><td><code>aa_*.R</code></td>
|
||||||
|
<td>Loaded first (helpers, globals, options, package docs)</td>
|
||||||
|
</tr><tr><td><code>zz_deprecated.R</code></td>
|
||||||
|
<td>Deprecated function wrappers</td>
|
||||||
|
</tr><tr><td><code>zzz.R</code></td>
|
||||||
|
<td>
|
||||||
|
<code>.onLoad</code> / <code>.onAttach</code> initialization</td>
|
||||||
|
</tr></tbody></table><p><strong>Key source files:</strong></p>
|
||||||
|
<ul><li>
|
||||||
|
<code>aa_helper_functions.R</code> / <code>aa_helper_pm_functions.R</code> — internal utility functions (large; ~63 KB and ~37 KB)</li>
|
||||||
|
<li>
|
||||||
|
<code>aa_globals.R</code> — global constants and breakpoint lookup structures</li>
|
||||||
|
<li>
|
||||||
|
<code>aa_options.R</code> — <code>amr_options()</code> / <code>get_AMR_option()</code> system</li>
|
||||||
|
<li>
|
||||||
|
<code>mo.R</code> / <code>mo_property.R</code> — microorganism lookup and properties</li>
|
||||||
|
<li>
|
||||||
|
<code>ab.R</code> / <code>ab_property.R</code> — antimicrobial drug functions</li>
|
||||||
|
<li>
|
||||||
|
<code>av.R</code> / <code>av_property.R</code> — antiviral drug functions</li>
|
||||||
|
<li>
|
||||||
|
<code>sir.R</code> / <code>sir_calc.R</code> / <code>sir_df.R</code> — SIR classification engine</li>
|
||||||
|
<li>
|
||||||
|
<code>mic.R</code> / <code>disk.R</code> — MIC and disk diffusion classes</li>
|
||||||
|
<li>
|
||||||
|
<code>antibiogram.R</code> — antibiogram generation (traditional, combined, syndromic, WISCA)</li>
|
||||||
|
<li>
|
||||||
|
<code>first_isolate.R</code> — first-isolate identification algorithms</li>
|
||||||
|
<li>
|
||||||
|
<code>mdro.R</code> — MDRO classification (EUCAST, CLSI, CDC, custom guidelines)</li>
|
||||||
|
<li>
|
||||||
|
<code>amr_selectors.R</code> — tidyselect helpers for selecting AMR columns</li>
|
||||||
|
<li>
|
||||||
|
<code>interpretive_rules.R</code> / <code>custom_eucast_rules.R</code> — clinical interpretation rules</li>
|
||||||
|
<li>
|
||||||
|
<code>translate.R</code> — 28-language translation system</li>
|
||||||
|
<li>
|
||||||
|
<code>ggplot_sir.R</code> / <code>ggplot_pca.R</code> / <code>plotting.R</code> — visualisation functions</li>
|
||||||
|
</ul></div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="custom-s3-classes">Custom S3 Classes<a class="anchor" aria-label="anchor" href="#custom-s3-classes"></a></h2>
|
||||||
|
<p>The package defines five S3 classes with full print/format/plot/vctrs support:</p>
|
||||||
|
<table class="table"><thead><tr><th>Class</th>
|
||||||
|
<th>Created by</th>
|
||||||
|
<th>Represents</th>
|
||||||
|
</tr></thead><tbody><tr><td><code><mo></code></td>
|
||||||
|
<td><code><a href="reference/as.mo.html">as.mo()</a></code></td>
|
||||||
|
<td>Microorganism code</td>
|
||||||
|
</tr><tr><td><code><ab></code></td>
|
||||||
|
<td><code><a href="reference/as.ab.html">as.ab()</a></code></td>
|
||||||
|
<td>Antimicrobial drug code</td>
|
||||||
|
</tr><tr><td><code><av></code></td>
|
||||||
|
<td><code><a href="reference/as.av.html">as.av()</a></code></td>
|
||||||
|
<td>Antiviral drug code</td>
|
||||||
|
</tr><tr><td><code><sir></code></td>
|
||||||
|
<td><code><a href="reference/as.sir.html">as.sir()</a></code></td>
|
||||||
|
<td>SIR value (S/I/R/SDD)</td>
|
||||||
|
</tr><tr><td><code><mic></code></td>
|
||||||
|
<td><code><a href="reference/as.mic.html">as.mic()</a></code></td>
|
||||||
|
<td>Minimum inhibitory concentration</td>
|
||||||
|
</tr><tr><td><code><disk></code></td>
|
||||||
|
<td><code><a href="reference/as.disk.html">as.disk()</a></code></td>
|
||||||
|
<td>Disk diffusion diameter</td>
|
||||||
|
</tr></tbody></table></div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="data-files">Data Files<a class="anchor" aria-label="anchor" href="#data-files"></a></h2>
|
||||||
|
<p>Pre-compiled in <code>data/</code> (do not edit directly; regenerate via <code>data-raw/</code> scripts):</p>
|
||||||
|
<table class="table"><colgroup><col width="50%"><col width="50%"></colgroup><thead><tr><th>File</th>
|
||||||
|
<th>Contents</th>
|
||||||
|
</tr></thead><tbody><tr><td><code>microorganisms.rda</code></td>
|
||||||
|
<td>~79,000 microbial species with full taxonomy</td>
|
||||||
|
</tr><tr><td><code>antimicrobials.rda</code></td>
|
||||||
|
<td>~620 antimicrobial drugs with ATC codes</td>
|
||||||
|
</tr><tr><td><code>antivirals.rda</code></td>
|
||||||
|
<td>Antiviral drugs</td>
|
||||||
|
</tr><tr><td><code>clinical_breakpoints.rda</code></td>
|
||||||
|
<td>EUCAST + CLSI breakpoints (2011–2025)</td>
|
||||||
|
</tr><tr><td><code>intrinsic_resistant.rda</code></td>
|
||||||
|
<td>Intrinsic resistance patterns</td>
|
||||||
|
</tr><tr><td><code>example_isolates.rda</code></td>
|
||||||
|
<td>Example AMR dataset for documentation/testing</td>
|
||||||
|
</tr><tr><td><code>WHONET.rda</code></td>
|
||||||
|
<td>Example WHONET-format dataset</td>
|
||||||
|
</tr></tbody></table></div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="zero-dependency-design">Zero-Dependency Design<a class="anchor" aria-label="anchor" href="#zero-dependency-design"></a></h2>
|
||||||
|
<p>The package has <strong>no <code>Imports</code></strong> in <code>DESCRIPTION</code>. All optional integrations (ggplot2, dplyr, data.table, tidymodels, cli, crayon, etc.) are listed in <code>Suggests</code> and guarded with:</p>
|
||||||
|
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="kw">if</span> <span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/ns-load.html" class="external-link">requireNamespace</a></span><span class="op">(</span><span class="st">"pkg"</span>, quietly <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span> <span class="op">{</span> <span class="va">...</span> <span class="op">}</span></span></code></pre></div>
|
||||||
|
<p>Never add packages to <code>Imports</code>. If new functionality requires an external package, add it to <code>Suggests</code> and guard usage appropriately.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="testing">Testing<a class="anchor" aria-label="anchor" href="#testing"></a></h2>
|
||||||
|
<ul><li>
|
||||||
|
<strong>Framework:</strong> <code>testthat</code> (R ≥ 3.1); legacy <code>tinytest</code> used for R 3.0–3.6 CI</li>
|
||||||
|
<li>
|
||||||
|
<strong>Test files:</strong> <code>tests/testthat/test-*.R</code>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Helpers:</strong> <code>tests/testthat/helper-functions.R</code>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>CI matrix:</strong> GitHub Actions across Windows / macOS / Linux × R devel / release / oldrel-1 through oldrel-4</li>
|
||||||
|
<li>
|
||||||
|
<strong>Coverage:</strong> <code>covr</code> (some files excluded: <code>atc_online.R</code>, <code>mo_source.R</code>, <code>translate.R</code>, <code>resistance_predict.R</code>, <code>zz_deprecated.R</code>, helper files, <code>zzz.R</code>)</li>
|
||||||
|
</ul></div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="documentation">Documentation<a class="anchor" aria-label="anchor" href="#documentation"></a></h2>
|
||||||
|
<ul><li>All exported functions use <strong>roxygen2</strong> blocks (<code>RoxygenNote: 7.3.3</code>, markdown enabled)</li>
|
||||||
|
<li>Run <code>devtools::document()</code> after any change to roxygen comments</li>
|
||||||
|
<li>Never edit files in <code>man/</code> directly — they are auto-generated</li>
|
||||||
|
<li>Vignettes live in <code>vignettes/</code> as <code>.Rmd</code> files</li>
|
||||||
|
<li>The pkgdown website is configured in <code>_pkgdown.yml</code>
|
||||||
|
</li>
|
||||||
|
</ul></div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="versioning">Versioning<a class="anchor" aria-label="anchor" href="#versioning"></a></h2>
|
||||||
|
<p>Version format: <code>major.minor.patch.dev</code> (e.g., <code>3.0.1.9021</code>)</p>
|
||||||
|
<ul><li>Development versions use a <code>.9xxx</code> suffix</li>
|
||||||
|
<li>Stable CRAN releases drop the dev suffix (e.g., <code>3.0.1</code>)</li>
|
||||||
|
<li>
|
||||||
|
<code>NEWS.md</code> uses sections <strong>New</strong>, <strong>Fixes</strong>, <strong>Updates</strong> with GitHub issue references (<code>#NNN</code>)</li>
|
||||||
|
</ul><div class="section level3">
|
||||||
|
<h3 id="version-and-date-bump-required-for-every-pr">Version and date bump required for every PR<a class="anchor" aria-label="anchor" href="#version-and-date-bump-required-for-every-pr"></a></h3>
|
||||||
|
<p>All PRs are <strong>squash-merged</strong>, so each PR lands as exactly <strong>one commit</strong> on the default branch. Version numbers are kept in sync with the cumulative commit count since the last released tag. Therefore <strong>exactly one version bump is allowed per PR</strong>, regardless of how many intermediate commits are made on the branch.</p>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="computing-the-correct-version-number">Computing the correct version number<a class="anchor" aria-label="anchor" href="#computing-the-correct-version-number"></a></h4>
|
||||||
|
<p><strong>First, ensure <code>git</code> and <code>gh</code> are installed</strong> — both are required for the version computation and for pushing changes. Install them if missing before doing anything else:</p>
|
||||||
|
<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" tabindex="-1"></a><span class="fu">which</span> git <span class="kw">||</span> <span class="ex">apt-get</span> install <span class="at">-y</span> git</span>
|
||||||
|
<span id="cb5-2"><a href="#cb5-2" tabindex="-1"></a><span class="fu">which</span> gh <span class="kw">||</span> <span class="ex">apt-get</span> install <span class="at">-y</span> gh</span>
|
||||||
|
<span id="cb5-3"><a href="#cb5-3" tabindex="-1"></a><span class="co"># Also ensure all tags are fetched so git describe works</span></span>
|
||||||
|
<span id="cb5-4"><a href="#cb5-4" tabindex="-1"></a><span class="fu">git</span> fetch <span class="at">--tags</span></span></code></pre></div>
|
||||||
|
<p>Then run the following from the repo root to determine the version string to use:</p>
|
||||||
|
<div class="sourceCode" id="cb6"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" tabindex="-1"></a><span class="va">currenttag</span><span class="op">=</span><span class="va">$(</span><span class="fu">git</span> describe <span class="at">--tags</span> <span class="at">--abbrev</span><span class="op">=</span>0 <span class="kw">|</span> <span class="fu">sed</span> <span class="st">'s/v//'</span><span class="va">)</span></span>
|
||||||
|
<span id="cb6-2"><a href="#cb6-2" tabindex="-1"></a><span class="va">currenttagfull</span><span class="op">=</span><span class="va">$(</span><span class="fu">git</span> describe <span class="at">--tags</span> <span class="at">--abbrev</span><span class="op">=</span>0<span class="va">)</span></span>
|
||||||
|
<span id="cb6-3"><a href="#cb6-3" tabindex="-1"></a><span class="va">defaultbranch</span><span class="op">=</span><span class="va">$(</span><span class="fu">git</span> branch <span class="kw">|</span> <span class="fu">cut</span> <span class="at">-c</span> 3- <span class="kw">|</span> <span class="fu">grep</span> <span class="at">-E</span> <span class="st">'^master$|^main$'</span><span class="va">)</span></span>
|
||||||
|
<span id="cb6-4"><a href="#cb6-4" tabindex="-1"></a><span class="fu">git</span> fetch origin <span class="va">${defaultbranch}</span> <span class="at">--quiet</span></span>
|
||||||
|
<span id="cb6-5"><a href="#cb6-5" tabindex="-1"></a><span class="va">currentcommit</span><span class="op">=</span><span class="va">$(</span><span class="fu">git</span> rev-list <span class="at">--count</span> <span class="va">${currenttagfull}</span>..origin/<span class="va">${defaultbranch})</span></span>
|
||||||
|
<span id="cb6-6"><a href="#cb6-6" tabindex="-1"></a><span class="va">currentversion</span><span class="op">=</span><span class="st">"</span><span class="va">${currenttag}</span><span class="st">.</span><span class="va">$((currentcommit</span> <span class="op">+</span> <span class="dv">9001</span> <span class="op">+</span> <span class="dv">1</span><span class="va">))</span><span class="st">"</span></span>
|
||||||
|
<span id="cb6-7"><a href="#cb6-7" tabindex="-1"></a><span class="bu">echo</span> <span class="st">"</span><span class="va">$currentversion</span><span class="st">"</span></span></code></pre></div>
|
||||||
|
<p>The <code>+ 1</code> accounts for the fact that this PR’s squash commit is not yet on the default branch. Set <strong>both</strong> of these files to the resulting version string (and only once per PR, even across multiple commits):</p>
|
||||||
|
<ol style="list-style-type: decimal"><li><p><strong><code>DESCRIPTION</code></strong> — the <code>Version:</code> field</p></li>
|
||||||
|
<li>
|
||||||
|
<p><strong><code>NEWS.md</code></strong> — <strong>only replace line 1</strong> (the <code># AMR <version></code> heading) with the new version number; do <strong>not</strong> create a new section. <code>NEWS.md</code> is a <strong>continuous log</strong> for the entire current <code>x.y.z.9nnn</code> development series: all changes since the last stable release accumulate under that single heading. After updating line 1, append the new change as a bullet under the appropriate sub-heading (<code>### New</code>, <code>### Fixes</code>, or <code>### Updates</code>).</p>
|
||||||
|
<p>Style rules for <code>NEWS.md</code> entries:</p>
|
||||||
|
<ul><li>Be <strong>extremely concise</strong> — one short line per item</li>
|
||||||
|
<li>Do <strong>not</strong> end with a full stop (period)</li>
|
||||||
|
<li>No verbose explanations; just the essential fact</li>
|
||||||
|
</ul></li>
|
||||||
|
</ol><p>If <code>git describe</code> fails (e.g. no tags exist in the environment), fall back to reading the current version from <code>DESCRIPTION</code> and adding 1 to the last numeric component — but only if no bump has already been made in this PR.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="date-field">Date field<a class="anchor" aria-label="anchor" href="#date-field"></a></h4>
|
||||||
|
<p>The <code>Date:</code> field in <code>DESCRIPTION</code> must reflect the date of the <strong>last commit to the PR</strong> (not the first), in ISO format. Update it with every commit so it is always current:</p>
|
||||||
|
<pre><code><span><span class="va">Date</span><span class="op">:</span> <span class="fl">2026</span><span class="op">-</span><span class="fl">03</span><span class="op">-</span><span class="fl">07</span></span></code></pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="internal-state">Internal State<a class="anchor" aria-label="anchor" href="#internal-state"></a></h2>
|
||||||
|
<p>The package uses a private <code>AMR_env</code> environment (created in <code>aa_globals.R</code>) for caching expensive lookups (e.g., microorganism matching scores, breakpoint tables). This avoids re-computation within a session.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
|
||||||
|
</nav></aside></div>
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
@@ -0,0 +1,238 @@
|
|||||||
|
# CLAUDE.md — AMR R Package
|
||||||
|
|
||||||
|
This file provides context for Claude Code when working in this
|
||||||
|
repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
**AMR** is a zero-dependency R package for antimicrobial resistance
|
||||||
|
(AMR) data analysis using a One Health approach. It is peer-reviewed,
|
||||||
|
used in 175+ countries, and supports 28 languages.
|
||||||
|
|
||||||
|
Key capabilities: - SIR (Susceptible/Intermediate/Resistant)
|
||||||
|
classification using EUCAST 2011–2025 and CLSI 2011–2025 breakpoints -
|
||||||
|
Antibiogram generation: traditional, combined, syndromic, and WISCA -
|
||||||
|
Microorganism taxonomy database (~79,000 species) - Antimicrobial drug
|
||||||
|
database (~620 drugs) - Multi-drug resistant organism (MDRO)
|
||||||
|
classification - First-isolate identification - Minimum Inhibitory
|
||||||
|
Concentration (MIC) and disk diffusion handling - Multilingual output
|
||||||
|
(28 languages)
|
||||||
|
|
||||||
|
## Common Commands
|
||||||
|
|
||||||
|
All commands run inside an R session:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Rebuild documentation (roxygen2 → .Rd files + NAMESPACE)
|
||||||
|
devtools::document()
|
||||||
|
|
||||||
|
# Run all tests
|
||||||
|
devtools::test()
|
||||||
|
|
||||||
|
# Full package check (CRAN-level: docs + tests + checks)
|
||||||
|
devtools::check()
|
||||||
|
|
||||||
|
# Build pkgdown website locally
|
||||||
|
pkgdown::build_site()
|
||||||
|
|
||||||
|
# Code coverage report
|
||||||
|
covr::package_coverage()
|
||||||
|
```
|
||||||
|
|
||||||
|
From the shell:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
# CRAN check from parent directory
|
||||||
|
R CMD check AMR
|
||||||
|
```
|
||||||
|
|
||||||
|
## Repository Structure
|
||||||
|
|
||||||
|
R/ # All R source files (62 files, ~28,000 lines)
|
||||||
|
man/ # Auto-generated .Rd documentation (do not edit manually)
|
||||||
|
tests/testthat/ # testthat test files (test-*.R) and helper-functions.R
|
||||||
|
data/ # Pre-compiled .rda datasets
|
||||||
|
data-raw/ # Scripts used to generate data/ files
|
||||||
|
vignettes/ # Rmd vignette articles
|
||||||
|
inst/ # Installed files (translations, etc.)
|
||||||
|
_pkgdown.yml # pkgdown website configuration
|
||||||
|
|
||||||
|
## R Source File Conventions
|
||||||
|
|
||||||
|
**Naming conventions in `R/`:**
|
||||||
|
|
||||||
|
| Prefix/Name | Purpose |
|
||||||
|
|-------------------|--------------------------------------------------------|
|
||||||
|
| `aa_*.R` | Loaded first (helpers, globals, options, package docs) |
|
||||||
|
| `zz_deprecated.R` | Deprecated function wrappers |
|
||||||
|
| `zzz.R` | `.onLoad` / `.onAttach` initialization |
|
||||||
|
|
||||||
|
**Key source files:**
|
||||||
|
|
||||||
|
- `aa_helper_functions.R` / `aa_helper_pm_functions.R` — internal
|
||||||
|
utility functions (large; ~63 KB and ~37 KB)
|
||||||
|
- `aa_globals.R` — global constants and breakpoint lookup structures
|
||||||
|
- `aa_options.R` — `amr_options()` / `get_AMR_option()` system
|
||||||
|
- `mo.R` / `mo_property.R` — microorganism lookup and properties
|
||||||
|
- `ab.R` / `ab_property.R` — antimicrobial drug functions
|
||||||
|
- `av.R` / `av_property.R` — antiviral drug functions
|
||||||
|
- `sir.R` / `sir_calc.R` / `sir_df.R` — SIR classification engine
|
||||||
|
- `mic.R` / `disk.R` — MIC and disk diffusion classes
|
||||||
|
- `antibiogram.R` — antibiogram generation (traditional, combined,
|
||||||
|
syndromic, WISCA)
|
||||||
|
- `first_isolate.R` — first-isolate identification algorithms
|
||||||
|
- `mdro.R` — MDRO classification (EUCAST, CLSI, CDC, custom guidelines)
|
||||||
|
- `amr_selectors.R` — tidyselect helpers for selecting AMR columns
|
||||||
|
- `interpretive_rules.R` / `custom_eucast_rules.R` — clinical
|
||||||
|
interpretation rules
|
||||||
|
- `translate.R` — 28-language translation system
|
||||||
|
- `ggplot_sir.R` / `ggplot_pca.R` / `plotting.R` — visualisation
|
||||||
|
functions
|
||||||
|
|
||||||
|
## Custom S3 Classes
|
||||||
|
|
||||||
|
The package defines five S3 classes with full print/format/plot/vctrs
|
||||||
|
support:
|
||||||
|
|
||||||
|
| Class | Created by | Represents |
|
||||||
|
|----|----|----|
|
||||||
|
| `<mo>` | [`as.mo()`](https://amr-for-r.org/reference/as.mo.md) | Microorganism code |
|
||||||
|
| `<ab>` | [`as.ab()`](https://amr-for-r.org/reference/as.ab.md) | Antimicrobial drug code |
|
||||||
|
| `<av>` | [`as.av()`](https://amr-for-r.org/reference/as.av.md) | Antiviral drug code |
|
||||||
|
| `<sir>` | [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) | SIR value (S/I/R/SDD) |
|
||||||
|
| `<mic>` | [`as.mic()`](https://amr-for-r.org/reference/as.mic.md) | Minimum inhibitory concentration |
|
||||||
|
| `<disk>` | [`as.disk()`](https://amr-for-r.org/reference/as.disk.md) | Disk diffusion diameter |
|
||||||
|
|
||||||
|
## Data Files
|
||||||
|
|
||||||
|
Pre-compiled in `data/` (do not edit directly; regenerate via
|
||||||
|
`data-raw/` scripts):
|
||||||
|
|
||||||
|
| File | Contents |
|
||||||
|
|----------------------------|-----------------------------------------------|
|
||||||
|
| `microorganisms.rda` | ~79,000 microbial species with full taxonomy |
|
||||||
|
| `antimicrobials.rda` | ~620 antimicrobial drugs with ATC codes |
|
||||||
|
| `antivirals.rda` | Antiviral drugs |
|
||||||
|
| `clinical_breakpoints.rda` | EUCAST + CLSI breakpoints (2011–2025) |
|
||||||
|
| `intrinsic_resistant.rda` | Intrinsic resistance patterns |
|
||||||
|
| `example_isolates.rda` | Example AMR dataset for documentation/testing |
|
||||||
|
| `WHONET.rda` | Example WHONET-format dataset |
|
||||||
|
|
||||||
|
## Zero-Dependency Design
|
||||||
|
|
||||||
|
The package has **no `Imports`** in `DESCRIPTION`. All optional
|
||||||
|
integrations (ggplot2, dplyr, data.table, tidymodels, cli, crayon, etc.)
|
||||||
|
are listed in `Suggests` and guarded with:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
if (requireNamespace("pkg", quietly = TRUE)) { ... }
|
||||||
|
```
|
||||||
|
|
||||||
|
Never add packages to `Imports`. If new functionality requires an
|
||||||
|
external package, add it to `Suggests` and guard usage appropriately.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
- **Framework:** `testthat` (R ≥ 3.1); legacy `tinytest` used for R
|
||||||
|
3.0–3.6 CI
|
||||||
|
- **Test files:** `tests/testthat/test-*.R`
|
||||||
|
- **Helpers:** `tests/testthat/helper-functions.R`
|
||||||
|
- **CI matrix:** GitHub Actions across Windows / macOS / Linux × R devel
|
||||||
|
/ release / oldrel-1 through oldrel-4
|
||||||
|
- **Coverage:** `covr` (some files excluded: `atc_online.R`,
|
||||||
|
`mo_source.R`, `translate.R`, `resistance_predict.R`,
|
||||||
|
`zz_deprecated.R`, helper files, `zzz.R`)
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
- All exported functions use **roxygen2** blocks (`RoxygenNote: 7.3.3`,
|
||||||
|
markdown enabled)
|
||||||
|
- Run `devtools::document()` after any change to roxygen comments
|
||||||
|
- Never edit files in `man/` directly — they are auto-generated
|
||||||
|
- Vignettes live in `vignettes/` as `.Rmd` files
|
||||||
|
- The pkgdown website is configured in `_pkgdown.yml`
|
||||||
|
|
||||||
|
## Versioning
|
||||||
|
|
||||||
|
Version format: `major.minor.patch.dev` (e.g., `3.0.1.9021`)
|
||||||
|
|
||||||
|
- Development versions use a `.9xxx` suffix
|
||||||
|
- Stable CRAN releases drop the dev suffix (e.g., `3.0.1`)
|
||||||
|
- `NEWS.md` uses sections **New**, **Fixes**, **Updates** with GitHub
|
||||||
|
issue references (`#NNN`)
|
||||||
|
|
||||||
|
### Version and date bump required for every PR
|
||||||
|
|
||||||
|
All PRs are **squash-merged**, so each PR lands as exactly **one
|
||||||
|
commit** on the default branch. Version numbers are kept in sync with
|
||||||
|
the cumulative commit count since the last released tag. Therefore
|
||||||
|
**exactly one version bump is allowed per PR**, regardless of how many
|
||||||
|
intermediate commits are made on the branch.
|
||||||
|
|
||||||
|
#### Computing the correct version number
|
||||||
|
|
||||||
|
**First, ensure `git` and `gh` are installed** — both are required for
|
||||||
|
the version computation and for pushing changes. Install them if missing
|
||||||
|
before doing anything else:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
which git || apt-get install -y git
|
||||||
|
which gh || apt-get install -y gh
|
||||||
|
# Also ensure all tags are fetched so git describe works
|
||||||
|
git fetch --tags
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run the following from the repo root to determine the version
|
||||||
|
string to use:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
currenttag=$(git describe --tags --abbrev=0 | sed 's/v//')
|
||||||
|
currenttagfull=$(git describe --tags --abbrev=0)
|
||||||
|
defaultbranch=$(git branch | cut -c 3- | grep -E '^master$|^main$')
|
||||||
|
git fetch origin ${defaultbranch} --quiet
|
||||||
|
currentcommit=$(git rev-list --count ${currenttagfull}..origin/${defaultbranch})
|
||||||
|
currentversion="${currenttag}.$((currentcommit + 9001 + 1))"
|
||||||
|
echo "$currentversion"
|
||||||
|
```
|
||||||
|
|
||||||
|
The `+ 1` accounts for the fact that this PR’s squash commit is not yet
|
||||||
|
on the default branch. Set **both** of these files to the resulting
|
||||||
|
version string (and only once per PR, even across multiple commits):
|
||||||
|
|
||||||
|
1. **`DESCRIPTION`** — the `Version:` field
|
||||||
|
|
||||||
|
2. **`NEWS.md`** — **only replace line 1** (the `# AMR <version>`
|
||||||
|
heading) with the new version number; do **not** create a new
|
||||||
|
section. `NEWS.md` is a **continuous log** for the entire current
|
||||||
|
`x.y.z.9nnn` development series: all changes since the last stable
|
||||||
|
release accumulate under that single heading. After updating line 1,
|
||||||
|
append the new change as a bullet under the appropriate sub-heading
|
||||||
|
(`### New`, `### Fixes`, or `### Updates`).
|
||||||
|
|
||||||
|
Style rules for `NEWS.md` entries:
|
||||||
|
|
||||||
|
- Be **extremely concise** — one short line per item
|
||||||
|
- Do **not** end with a full stop (period)
|
||||||
|
- No verbose explanations; just the essential fact
|
||||||
|
|
||||||
|
If `git describe` fails (e.g. no tags exist in the environment), fall
|
||||||
|
back to reading the current version from `DESCRIPTION` and adding 1 to
|
||||||
|
the last numeric component — but only if no bump has already been made
|
||||||
|
in this PR.
|
||||||
|
|
||||||
|
#### Date field
|
||||||
|
|
||||||
|
The `Date:` field in `DESCRIPTION` must reflect the date of the **last
|
||||||
|
commit to the PR** (not the first), in ISO format. Update it with every
|
||||||
|
commit so it is always current:
|
||||||
|
|
||||||
|
Date: 2026-03-07
|
||||||
|
|
||||||
|
## Internal State
|
||||||
|
|
||||||
|
The package uses a private `AMR_env` environment (created in
|
||||||
|
`aa_globals.R`) for caching expensive lookups (e.g., microorganism
|
||||||
|
matching scores, breakpoint tables). This avoids re-computation within a
|
||||||
|
session.
|
||||||
@@ -0,0 +1,319 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>License • AMR (for R)</title><!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="favicon-96x96.png"><link rel="icon" type="”image/svg+xml”" href="favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png"><link rel="icon" sizes="any" href="favicon.ico"><link rel="manifest" href="site.webmanifest"><script src="deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet"><script src="deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="deps/Lato-0.4.10/font.css" rel="stylesheet"><link href="deps/Fira_Code-0.4.10/font.css" rel="stylesheet"><link href="deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="deps/headroom-0.11.0/headroom.min.js"></script><script src="deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="deps/search-1.0.0/fuse.min.js"></script><script src="deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="pkgdown.js"></script><link href="extra.css" rel="stylesheet"><script src="extra.js"></script><meta property="og:title" content="License"><meta property="og:image" content="https://amr-for-r.org/logo.svg"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script></head><body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto"><li class="nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to"><li><a class="dropdown-item" href="articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="search.json"></form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul></div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-title-body">
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="logo.svg" class="logo" alt=""><h1>License</h1>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<pre>GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
A SUMMARY OF THIS LICENSE BY THE ORIGINAL AUTHORS OF THE AMR R PACKAGE
|
||||||
|
|
||||||
|
This R package, with package name 'AMR':
|
||||||
|
- May be used for commercial purposes
|
||||||
|
- May be used for private purposes
|
||||||
|
- May NOT be used for patent purposes
|
||||||
|
- May be modified, although:
|
||||||
|
- Modifications MUST be released under the same license when distributing the package
|
||||||
|
- Changes made to the code MUST be documented
|
||||||
|
- May be distributed, although:
|
||||||
|
- Source code MUST be made available when the package is distributed
|
||||||
|
- A copy of the license and copyright notice MUST be included with the package.
|
||||||
|
- Comes with a LIMITATION of liability
|
||||||
|
- Comes with NO warranty
|
||||||
|
|
||||||
|
END OF THE SUMMARY
|
||||||
|
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</main></div>
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
@@ -0,0 +1,250 @@
|
|||||||
|
# License
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
A SUMMARY OF THIS LICENSE BY THE ORIGINAL AUTHORS OF THE AMR R PACKAGE
|
||||||
|
|
||||||
|
This R package, with package name 'AMR':
|
||||||
|
- May be used for commercial purposes
|
||||||
|
- May be used for private purposes
|
||||||
|
- May NOT be used for patent purposes
|
||||||
|
- May be modified, although:
|
||||||
|
- Modifications MUST be released under the same license when distributing the package
|
||||||
|
- Changes made to the code MUST be documented
|
||||||
|
- May be distributed, although:
|
||||||
|
- Source code MUST be made available when the package is distributed
|
||||||
|
- A copy of the license and copyright notice MUST be included with the package.
|
||||||
|
- Comes with a LIMITATION of liability
|
||||||
|
- Comes with NO warranty
|
||||||
|
|
||||||
|
END OF THE SUMMARY
|
||||||
|
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
@@ -1,226 +0,0 @@
|
|||||||
|
|
||||||
The `AMR` package for R is a powerful tool for antimicrobial resistance (AMR) analysis. It provides extensive features for handling microbial and antimicrobial data. However, for those who work primarily in Python, we now have a more intuitive option available: the [`AMR` Python package](https://pypi.org/project/AMR/).
|
|
||||||
|
|
||||||
This Python package is a wrapper around the `AMR` R package. It uses the `rpy2` package internally. Despite the need to have R installed, Python users can now easily work with AMR data directly through Python code.
|
|
||||||
|
|
||||||
# Prerequisites
|
|
||||||
|
|
||||||
This package was only tested with a [virtual environment (venv)](https://docs.python.org/3/library/venv.html). You can set up such an environment by running:
|
|
||||||
|
|
||||||
```python
|
|
||||||
# linux and macOS:
|
|
||||||
python -m venv /path/to/new/virtual/environment
|
|
||||||
|
|
||||||
# Windows:
|
|
||||||
python -m venv C:\path\to\new\virtual\environment
|
|
||||||
```
|
|
||||||
|
|
||||||
Then you can [activate the environment](https://docs.python.org/3/library/venv.html#how-venvs-work), after which the venv is ready to work with.
|
|
||||||
|
|
||||||
# Install AMR
|
|
||||||
|
|
||||||
1. Since the Python package is available on the official [Python Package Index](https://pypi.org/project/AMR/), you can just run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install AMR
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Make sure you have R installed. There is **no need to install the `AMR` R package**, as it will be installed automatically.
|
|
||||||
|
|
||||||
For Linux:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Ubuntu / Debian
|
|
||||||
sudo apt install r-base
|
|
||||||
# Fedora:
|
|
||||||
sudo dnf install R
|
|
||||||
# CentOS/RHEL
|
|
||||||
sudo yum install R
|
|
||||||
```
|
|
||||||
|
|
||||||
For macOS (using [Homebrew](https://brew.sh)):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
brew install r
|
|
||||||
```
|
|
||||||
|
|
||||||
For Windows, visit the [CRAN download page](https://cran.r-project.org) to download and install R.
|
|
||||||
|
|
||||||
# Examples of Usage
|
|
||||||
|
|
||||||
## Cleaning Taxonomy
|
|
||||||
|
|
||||||
Here’s an example that demonstrates how to clean microorganism and drug names using the `AMR` Python package:
|
|
||||||
|
|
||||||
```python
|
|
||||||
import pandas as pd
|
|
||||||
import AMR
|
|
||||||
|
|
||||||
# Sample data
|
|
||||||
data = {
|
|
||||||
"MOs": ['E. coli', 'ESCCOL', 'esco', 'Esche coli'],
|
|
||||||
"Drug": ['Cipro', 'CIP', 'J01MA02', 'Ciproxin']
|
|
||||||
}
|
|
||||||
df = pd.DataFrame(data)
|
|
||||||
|
|
||||||
# Use AMR functions to clean microorganism and drug names
|
|
||||||
df['MO_clean'] = AMR.mo_name(df['MOs'])
|
|
||||||
df['Drug_clean'] = AMR.ab_name(df['Drug'])
|
|
||||||
|
|
||||||
# Display the results
|
|
||||||
print(df)
|
|
||||||
```
|
|
||||||
|
|
||||||
| MOs | Drug | MO_clean | Drug_clean |
|
|
||||||
|-------------|-----------|--------------------|---------------|
|
|
||||||
| E. coli | Cipro | Escherichia coli | Ciprofloxacin |
|
|
||||||
| ESCCOL | CIP | Escherichia coli | Ciprofloxacin |
|
|
||||||
| esco | J01MA02 | Escherichia coli | Ciprofloxacin |
|
|
||||||
| Esche coli | Ciproxin | Escherichia coli | Ciprofloxacin |
|
|
||||||
|
|
||||||
### Explanation
|
|
||||||
|
|
||||||
* **mo_name:** This function standardises microorganism names. Here, different variations of *Escherichia coli* (such as "E. coli", "ESCCOL", "esco", and "Esche coli") are all converted into the correct, standardised form, "Escherichia coli".
|
|
||||||
|
|
||||||
* **ab_name**: Similarly, this function standardises antimicrobial names. The different representations of ciprofloxacin (e.g., "Cipro", "CIP", "J01MA02", and "Ciproxin") are all converted to the standard name, "Ciprofloxacin".
|
|
||||||
|
|
||||||
## Calculating AMR
|
|
||||||
|
|
||||||
```python
|
|
||||||
import AMR
|
|
||||||
import pandas as pd
|
|
||||||
|
|
||||||
df = AMR.example_isolates
|
|
||||||
result = AMR.resistance(df["AMX"])
|
|
||||||
print(result)
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
[0.59555556]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Generating Antibiograms
|
|
||||||
|
|
||||||
One of the core functions of the `AMR` package is generating an antibiogram, a table that summarises the antimicrobial susceptibility of bacterial isolates. Here’s how you can generate an antibiogram from Python:
|
|
||||||
|
|
||||||
```python
|
|
||||||
result2a = AMR.antibiogram(df[["mo", "AMX", "CIP", "TZP"]])
|
|
||||||
print(result2a)
|
|
||||||
```
|
|
||||||
|
|
||||||
| Pathogen | Amoxicillin | Ciprofloxacin | Piperacillin/tazobactam |
|
|
||||||
|-----------------|-----------------|-----------------|--------------------------|
|
|
||||||
| CoNS | 7% (10/142) | 73% (183/252) | 30% (10/33) |
|
|
||||||
| E. coli | 50% (196/392) | 88% (399/456) | 94% (393/416) |
|
|
||||||
| K. pneumoniae | 0% (0/58) | 96% (53/55) | 89% (47/53) |
|
|
||||||
| P. aeruginosa | 0% (0/30) | 100% (30/30) | None |
|
|
||||||
| P. mirabilis | None | 94% (34/36) | None |
|
|
||||||
| S. aureus | 6% (8/131) | 90% (171/191) | None |
|
|
||||||
| S. epidermidis | 1% (1/91) | 64% (87/136) | None |
|
|
||||||
| S. hominis | None | 80% (56/70) | None |
|
|
||||||
| S. pneumoniae | 100% (112/112) | None | 100% (112/112) |
|
|
||||||
|
|
||||||
|
|
||||||
```python
|
|
||||||
result2b = AMR.antibiogram(df[["mo", "AMX", "CIP", "TZP"]], mo_transform = "gramstain")
|
|
||||||
print(result2b)
|
|
||||||
```
|
|
||||||
|
|
||||||
| Pathogen | Amoxicillin | Ciprofloxacin | Piperacillin/tazobactam |
|
|
||||||
|----------------|-----------------|------------------|--------------------------|
|
|
||||||
| Gram-negative | 36% (226/631) | 91% (621/684) | 88% (565/641) |
|
|
||||||
| Gram-positive | 43% (305/703) | 77% (560/724) | 86% (296/345) |
|
|
||||||
|
|
||||||
|
|
||||||
In this example, we generate an antibiogram by selecting various antibiotics.
|
|
||||||
|
|
||||||
## Taxonomic Data Sets Now in Python!
|
|
||||||
|
|
||||||
As a Python user, you might like that the most important data sets of the `AMR` R package, `microorganisms`, `antimicrobials`, `clinical_breakpoints`, and `example_isolates`, are now available as regular Python data frames:
|
|
||||||
|
|
||||||
```python
|
|
||||||
AMR.microorganisms
|
|
||||||
```
|
|
||||||
|
|
||||||
| mo | fullname | status | kingdom | gbif | gbif_parent | gbif_renamed_to | prevalence |
|
|
||||||
|--------------|------------------------------------|----------|----------|-----------|-------------|-----------------|------------|
|
|
||||||
| B_GRAMN | (unknown Gram-negatives) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_GRAMP | (unknown Gram-positives) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_ANAER-NEG | (unknown anaerobic Gram-negatives) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_ANAER-POS | (unknown anaerobic Gram-positives) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_ANAER | (unknown anaerobic bacteria) | unknown | Bacteria | None | None | None | 2.0 |
|
|
||||||
| ... | ... | ... | ... | ... | ... | ... | ... |
|
|
||||||
| B_ZYMMN_POMC | Zymomonas pomaceae | accepted | Bacteria | 10744418 | 3221412 | None | 2.0 |
|
|
||||||
| B_ZYMPH | Zymophilus | synonym | Bacteria | None | 9475166 | None | 2.0 |
|
|
||||||
| B_ZYMPH_PCVR | Zymophilus paucivorans | synonym | Bacteria | None | None | None | 2.0 |
|
|
||||||
| B_ZYMPH_RFFN | Zymophilus raffinosivorans | synonym | Bacteria | None | None | None | 2.0 |
|
|
||||||
| F_ZYZYG | Zyzygomyces | unknown | Fungi | None | 7581 | None | 2.0 |
|
|
||||||
|
|
||||||
```python
|
|
||||||
AMR.antimicrobials
|
|
||||||
```
|
|
||||||
|
|
||||||
| ab | cid | name | group | oral_ddd | oral_units | iv_ddd | iv_units |
|
|
||||||
|-----|-------------|----------------------|----------------------------|----------|------------|--------|----------|
|
|
||||||
| AMA | 4649.0 | 4-aminosalicylic acid| Antimycobacterials | 12.00 | g | NaN | None |
|
|
||||||
| ACM | 6450012.0 | Acetylmidecamycin | Macrolides/lincosamides | NaN | None | NaN | None |
|
|
||||||
| ASP | 49787020.0 | Acetylspiramycin | Macrolides/lincosamides | NaN | None | NaN | None |
|
|
||||||
| ALS | 8954.0 | Aldesulfone sodium | Other antibacterials | 0.33 | g | NaN | None |
|
|
||||||
| AMK | 37768.0 | Amikacin | Aminoglycosides | NaN | None | 1.0 | g |
|
|
||||||
| ... | ... | ... | ... | ... | ... | ... | ... |
|
|
||||||
| VIR | 11979535.0 | Virginiamycine | Other antibacterials | NaN | None | NaN | None |
|
|
||||||
| VOR | 71616.0 | Voriconazole | Antifungals/antimycotics | 0.40 | g | 0.4 | g |
|
|
||||||
| XBR | 72144.0 | Xibornol | Other antibacterials | NaN | None | NaN | None |
|
|
||||||
| ZID | 77846445.0 | Zidebactam | Other antibacterials | NaN | None | NaN | None |
|
|
||||||
| ZFD | NaN | Zoliflodacin | None | NaN | None | NaN | None |
|
|
||||||
|
|
||||||
|
|
||||||
# Installation Channels
|
|
||||||
|
|
||||||
## Stable Release (CRAN)
|
|
||||||
|
|
||||||
The default `AMR` Python package uses the latest stable version of the `AMR` R package, published on CRAN. After running `pip install AMR`, import it as usual:
|
|
||||||
|
|
||||||
```python
|
|
||||||
import AMR
|
|
||||||
|
|
||||||
AMR.example_isolates
|
|
||||||
```
|
|
||||||
|
|
||||||
## Development Version (GitHub)
|
|
||||||
|
|
||||||
To use the latest development version of the `AMR` R package (sourced directly from GitHub), import the `beta` sub-package and alias it as `AMR`:
|
|
||||||
|
|
||||||
```python
|
|
||||||
import AMR.beta as AMR
|
|
||||||
|
|
||||||
AMR.example_isolates
|
|
||||||
```
|
|
||||||
|
|
||||||
Aliasing with `as AMR` keeps all downstream code identical to the stable import. Switching between the stable release and the development version requires changing only the import line — nothing else in your script needs to change.
|
|
||||||
|
|
||||||
# SIR Classification with `as_sir()`
|
|
||||||
|
|
||||||
## Using `enforce_method`
|
|
||||||
|
|
||||||
The `as_sir()` function in R uses S3 method dispatch to select the correct calculation method based on the input class: `<mic>` for MIC values and `<disk>` for disk diffusion values. Because Python objects do not carry R class attributes through the `rpy2` bridge, this automatic dispatch may not resolve correctly.
|
|
||||||
|
|
||||||
To explicitly specify the input type, use the `enforce_method` argument:
|
|
||||||
|
|
||||||
```python
|
|
||||||
# Treat the column as MIC values — maps to R's as.sir.mic()
|
|
||||||
AMR.as_sir(df["MIC_col"], mo="E. coli", ab="AMX", guideline="EUCAST", enforce_method="mic")
|
|
||||||
|
|
||||||
# Treat the column as disk diffusion values — maps to R's as.sir.disk()
|
|
||||||
AMR.as_sir(df["disk_col"], mo="E. coli", ab="AMX", guideline="EUCAST", enforce_method="disk")
|
|
||||||
```
|
|
||||||
|
|
||||||
Without `enforce_method`, R falls back to class-based dispatch on the raw Python input, which may fail or return unexpected results. Always supply `enforce_method` when calling `as_sir()` from Python.
|
|
||||||
|
|
||||||
# Conclusion
|
|
||||||
|
|
||||||
With the `AMR` Python package, Python users can now effortlessly call R functions from the `AMR` R package. This eliminates the need for complex `rpy2` configurations and provides a clean, easy-to-use interface for antimicrobial resistance analysis. The examples provided above demonstrate how this can be applied to typical workflows, such as standardising microorganism and antimicrobial names or calculating resistance.
|
|
||||||
|
|
||||||
By just running `import AMR`, users can seamlessly integrate the robust features of the R `AMR` package into Python workflows.
|
|
||||||
|
|
||||||
Whether you're cleaning data or analysing resistance patterns, the `AMR` Python package makes it easy to work with AMR data in Python.
|
|
||||||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 750 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
After Width: | Height: | Size: 72 KiB |
@@ -0,0 +1,660 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>AMR for Python • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png">
|
||||||
|
<link rel="icon" type="”image/svg+xml”" href="../favicon.svg">
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="icon" sizes="any" href="../favicon.ico">
|
||||||
|
<link rel="manifest" href="../site.webmanifest">
|
||||||
|
<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link href="../deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet">
|
||||||
|
<script src="../extra.js"></script><meta property="og:title" content="AMR for Python">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto">
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to">
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="active nav-item"><a class="nav-link" href="../articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json">
|
||||||
|
</form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-article">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="../logo.svg" class="logo" alt=""><h1>AMR for Python</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/AMR_for_Python.Rmd" class="external-link"><code>vignettes/AMR_for_Python.Rmd</code></a></small>
|
||||||
|
<div class="d-none name"><code>AMR_for_Python.Rmd</code></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a>
|
||||||
|
</h2>
|
||||||
|
<p>The <code>AMR</code> package for R is a powerful tool for
|
||||||
|
antimicrobial resistance (AMR) analysis. It provides extensive features
|
||||||
|
for handling microbial and antimicrobial data. However, for those who
|
||||||
|
work primarily in Python, we now have a more intuitive option available:
|
||||||
|
the <a href="https://pypi.org/project/AMR/" class="external-link"><code>AMR</code> Python
|
||||||
|
package</a>.</p>
|
||||||
|
<p>This Python package is a wrapper around the <code>AMR</code> R
|
||||||
|
package. It uses the <code>rpy2</code> package internally. Despite the
|
||||||
|
need to have R installed, Python users can now easily work with AMR data
|
||||||
|
directly through Python code.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="prerequisites">Prerequisites<a class="anchor" aria-label="anchor" href="#prerequisites"></a>
|
||||||
|
</h2>
|
||||||
|
<p>This package was only tested with a <a href="https://docs.python.org/3/library/venv.html" class="external-link">virtual environment
|
||||||
|
(venv)</a>. You can set up such an environment by running:</p>
|
||||||
|
<div class="sourceCode" id="cb1"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" tabindex="-1"></a><span class="co"># linux and macOS:</span></span>
|
||||||
|
<span id="cb1-2"><a href="#cb1-2" tabindex="-1"></a>python <span class="op">-</span>m venv <span class="op">/</span>path<span class="op">/</span>to<span class="op">/</span>new<span class="op">/</span>virtual<span class="op">/</span>environment</span>
|
||||||
|
<span id="cb1-3"><a href="#cb1-3" tabindex="-1"></a></span>
|
||||||
|
<span id="cb1-4"><a href="#cb1-4" tabindex="-1"></a><span class="co"># Windows:</span></span>
|
||||||
|
<span id="cb1-5"><a href="#cb1-5" tabindex="-1"></a>python <span class="op">-</span>m venv C:\path\to\new\virtual\environment</span></code></pre></div>
|
||||||
|
<p>Then you can <a href="https://docs.python.org/3/library/venv.html#how-venvs-work" class="external-link">activate
|
||||||
|
the environment</a>, after which the venv is ready to work with.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="install-amr">Install AMR<a class="anchor" aria-label="anchor" href="#install-amr"></a>
|
||||||
|
</h2>
|
||||||
|
<ol style="list-style-type: decimal">
|
||||||
|
<li>
|
||||||
|
<p>Since the Python package is available on the official <a href="https://pypi.org/project/AMR/" class="external-link">Python Package Index</a>, you can
|
||||||
|
just run:</p>
|
||||||
|
<div class="sourceCode" id="cb2"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a><span class="ex">pip</span> install AMR</span></code></pre></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>Make sure you have R installed. There is <strong>no need to
|
||||||
|
install the <code>AMR</code> R package</strong>, as it will be installed
|
||||||
|
automatically.</p>
|
||||||
|
<p>For Linux:</p>
|
||||||
|
<div class="sourceCode" id="cb3"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" tabindex="-1"></a><span class="co"># Ubuntu / Debian</span></span>
|
||||||
|
<span id="cb3-2"><a href="#cb3-2" tabindex="-1"></a><span class="fu">sudo</span> apt install r-base</span>
|
||||||
|
<span id="cb3-3"><a href="#cb3-3" tabindex="-1"></a><span class="co"># Fedora:</span></span>
|
||||||
|
<span id="cb3-4"><a href="#cb3-4" tabindex="-1"></a><span class="fu">sudo</span> dnf install R</span>
|
||||||
|
<span id="cb3-5"><a href="#cb3-5" tabindex="-1"></a><span class="co"># CentOS/RHEL</span></span>
|
||||||
|
<span id="cb3-6"><a href="#cb3-6" tabindex="-1"></a><span class="fu">sudo</span> yum install R</span></code></pre></div>
|
||||||
|
<p>For macOS (using <a href="https://brew.sh" class="external-link">Homebrew</a>):</p>
|
||||||
|
<div class="sourceCode" id="cb4"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" tabindex="-1"></a><span class="ex">brew</span> install r</span></code></pre></div>
|
||||||
|
<p>For Windows, visit the <a href="https://cran.r-project.org" class="external-link">CRAN
|
||||||
|
download page</a> to download and install R.</p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="examples-of-usage">Examples of Usage<a class="anchor" aria-label="anchor" href="#examples-of-usage"></a>
|
||||||
|
</h2>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="cleaning-taxonomy">Cleaning Taxonomy<a class="anchor" aria-label="anchor" href="#cleaning-taxonomy"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Here’s an example that demonstrates how to clean microorganism and
|
||||||
|
drug names using the <code>AMR</code> Python package:</p>
|
||||||
|
<div class="sourceCode" id="cb5"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb5-1"><a href="#cb5-1" tabindex="-1"></a><span class="im">import</span> pandas <span class="im">as</span> pd</span>
|
||||||
|
<span id="cb5-2"><a href="#cb5-2" tabindex="-1"></a><span class="im">import</span> AMR</span>
|
||||||
|
<span id="cb5-3"><a href="#cb5-3" tabindex="-1"></a></span>
|
||||||
|
<span id="cb5-4"><a href="#cb5-4" tabindex="-1"></a><span class="co"># Sample data</span></span>
|
||||||
|
<span id="cb5-5"><a href="#cb5-5" tabindex="-1"></a>data <span class="op">=</span> {</span>
|
||||||
|
<span id="cb5-6"><a href="#cb5-6" tabindex="-1"></a> <span class="st">"MOs"</span>: [<span class="st">'E. coli'</span>, <span class="st">'ESCCOL'</span>, <span class="st">'esco'</span>, <span class="st">'Esche coli'</span>],</span>
|
||||||
|
<span id="cb5-7"><a href="#cb5-7" tabindex="-1"></a> <span class="st">"Drug"</span>: [<span class="st">'Cipro'</span>, <span class="st">'CIP'</span>, <span class="st">'J01MA02'</span>, <span class="st">'Ciproxin'</span>]</span>
|
||||||
|
<span id="cb5-8"><a href="#cb5-8" tabindex="-1"></a>}</span>
|
||||||
|
<span id="cb5-9"><a href="#cb5-9" tabindex="-1"></a>df <span class="op">=</span> pd.DataFrame(data)</span>
|
||||||
|
<span id="cb5-10"><a href="#cb5-10" tabindex="-1"></a></span>
|
||||||
|
<span id="cb5-11"><a href="#cb5-11" tabindex="-1"></a><span class="co"># Use AMR functions to clean microorganism and drug names</span></span>
|
||||||
|
<span id="cb5-12"><a href="#cb5-12" tabindex="-1"></a>df[<span class="st">'MO_clean'</span>] <span class="op">=</span> AMR.mo_name(df[<span class="st">'MOs'</span>])</span>
|
||||||
|
<span id="cb5-13"><a href="#cb5-13" tabindex="-1"></a>df[<span class="st">'Drug_clean'</span>] <span class="op">=</span> AMR.ab_name(df[<span class="st">'Drug'</span>])</span>
|
||||||
|
<span id="cb5-14"><a href="#cb5-14" tabindex="-1"></a></span>
|
||||||
|
<span id="cb5-15"><a href="#cb5-15" tabindex="-1"></a><span class="co"># Display the results</span></span>
|
||||||
|
<span id="cb5-16"><a href="#cb5-16" tabindex="-1"></a><span class="bu">print</span>(df)</span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th>MOs</th>
|
||||||
|
<th>Drug</th>
|
||||||
|
<th>MO_clean</th>
|
||||||
|
<th>Drug_clean</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>E. coli</td>
|
||||||
|
<td>Cipro</td>
|
||||||
|
<td>Escherichia coli</td>
|
||||||
|
<td>Ciprofloxacin</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>ESCCOL</td>
|
||||||
|
<td>CIP</td>
|
||||||
|
<td>Escherichia coli</td>
|
||||||
|
<td>Ciprofloxacin</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>esco</td>
|
||||||
|
<td>J01MA02</td>
|
||||||
|
<td>Escherichia coli</td>
|
||||||
|
<td>Ciprofloxacin</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>Esche coli</td>
|
||||||
|
<td>Ciproxin</td>
|
||||||
|
<td>Escherichia coli</td>
|
||||||
|
<td>Ciprofloxacin</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="explanation">Explanation<a class="anchor" aria-label="anchor" href="#explanation"></a>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li><p><strong>mo_name:</strong> This function standardises
|
||||||
|
microorganism names. Here, different variations of <em>Escherichia
|
||||||
|
coli</em> (such as “E. coli”, “ESCCOL”, “esco”, and “Esche coli”) are
|
||||||
|
all converted into the correct, standardised form, “Escherichia
|
||||||
|
coli”.</p></li>
|
||||||
|
<li><p><strong>ab_name</strong>: Similarly, this function standardises
|
||||||
|
antimicrobial names. The different representations of ciprofloxacin
|
||||||
|
(e.g., “Cipro”, “CIP”, “J01MA02”, and “Ciproxin”) are all converted to
|
||||||
|
the standard name, “Ciprofloxacin”.</p></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="calculating-amr">Calculating AMR<a class="anchor" aria-label="anchor" href="#calculating-amr"></a>
|
||||||
|
</h3>
|
||||||
|
<div class="sourceCode" id="cb6"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb6-1"><a href="#cb6-1" tabindex="-1"></a><span class="im">import</span> AMR</span>
|
||||||
|
<span id="cb6-2"><a href="#cb6-2" tabindex="-1"></a><span class="im">import</span> pandas <span class="im">as</span> pd</span>
|
||||||
|
<span id="cb6-3"><a href="#cb6-3" tabindex="-1"></a></span>
|
||||||
|
<span id="cb6-4"><a href="#cb6-4" tabindex="-1"></a>df <span class="op">=</span> AMR.example_isolates</span>
|
||||||
|
<span id="cb6-5"><a href="#cb6-5" tabindex="-1"></a>result <span class="op">=</span> AMR.resistance(df[<span class="st">"AMX"</span>])</span>
|
||||||
|
<span id="cb6-6"><a href="#cb6-6" tabindex="-1"></a><span class="bu">print</span>(result)</span></code></pre></div>
|
||||||
|
<pre><code>[0.59555556]</code></pre>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="generating-antibiograms">Generating Antibiograms<a class="anchor" aria-label="anchor" href="#generating-antibiograms"></a>
|
||||||
|
</h3>
|
||||||
|
<p>One of the core functions of the <code>AMR</code> package is
|
||||||
|
generating an antibiogram, a table that summarises the antimicrobial
|
||||||
|
susceptibility of bacterial isolates. Here’s how you can generate an
|
||||||
|
antibiogram from Python:</p>
|
||||||
|
<div class="sourceCode" id="cb8"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb8-1"><a href="#cb8-1" tabindex="-1"></a>result2a <span class="op">=</span> AMR.antibiogram(df[[<span class="st">"mo"</span>, <span class="st">"AMX"</span>, <span class="st">"CIP"</span>, <span class="st">"TZP"</span>]])</span>
|
||||||
|
<span id="cb8-2"><a href="#cb8-2" tabindex="-1"></a><span class="bu">print</span>(result2a)</span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="22%">
|
||||||
|
<col width="22%">
|
||||||
|
<col width="22%">
|
||||||
|
<col width="33%">
|
||||||
|
</colgroup>
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th>Pathogen</th>
|
||||||
|
<th>Amoxicillin</th>
|
||||||
|
<th>Ciprofloxacin</th>
|
||||||
|
<th>Piperacillin/tazobactam</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>CoNS</td>
|
||||||
|
<td>7% (10/142)</td>
|
||||||
|
<td>73% (183/252)</td>
|
||||||
|
<td>30% (10/33)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>E. coli</td>
|
||||||
|
<td>50% (196/392)</td>
|
||||||
|
<td>88% (399/456)</td>
|
||||||
|
<td>94% (393/416)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>K. pneumoniae</td>
|
||||||
|
<td>0% (0/58)</td>
|
||||||
|
<td>96% (53/55)</td>
|
||||||
|
<td>89% (47/53)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>P. aeruginosa</td>
|
||||||
|
<td>0% (0/30)</td>
|
||||||
|
<td>100% (30/30)</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>P. mirabilis</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>94% (34/36)</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>S. aureus</td>
|
||||||
|
<td>6% (8/131)</td>
|
||||||
|
<td>90% (171/191)</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>S. epidermidis</td>
|
||||||
|
<td>1% (1/91)</td>
|
||||||
|
<td>64% (87/136)</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>S. hominis</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>80% (56/70)</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>S. pneumoniae</td>
|
||||||
|
<td>100% (112/112)</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>100% (112/112)</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="sourceCode" id="cb9"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb9-1"><a href="#cb9-1" tabindex="-1"></a>result2b <span class="op">=</span> AMR.antibiogram(df[[<span class="st">"mo"</span>, <span class="st">"AMX"</span>, <span class="st">"CIP"</span>, <span class="st">"TZP"</span>]], mo_transform <span class="op">=</span> <span class="st">"gramstain"</span>)</span>
|
||||||
|
<span id="cb9-2"><a href="#cb9-2" tabindex="-1"></a><span class="bu">print</span>(result2b)</span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="20%">
|
||||||
|
<col width="22%">
|
||||||
|
<col width="23%">
|
||||||
|
<col width="33%">
|
||||||
|
</colgroup>
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th>Pathogen</th>
|
||||||
|
<th>Amoxicillin</th>
|
||||||
|
<th>Ciprofloxacin</th>
|
||||||
|
<th>Piperacillin/tazobactam</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Gram-negative</td>
|
||||||
|
<td>36% (226/631)</td>
|
||||||
|
<td>91% (621/684)</td>
|
||||||
|
<td>88% (565/641)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>Gram-positive</td>
|
||||||
|
<td>43% (305/703)</td>
|
||||||
|
<td>77% (560/724)</td>
|
||||||
|
<td>86% (296/345)</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>In this example, we generate an antibiogram by selecting various
|
||||||
|
antibiotics.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="taxonomic-data-sets-now-in-python">Taxonomic Data Sets Now in Python!<a class="anchor" aria-label="anchor" href="#taxonomic-data-sets-now-in-python"></a>
|
||||||
|
</h3>
|
||||||
|
<p>As a Python user, you might like that the most important data sets of
|
||||||
|
the <code>AMR</code> R package, <code>microorganisms</code>,
|
||||||
|
<code>antimicrobials</code>, <code>clinical_breakpoints</code>, and
|
||||||
|
<code>example_isolates</code>, are now available as regular Python data
|
||||||
|
frames:</p>
|
||||||
|
<div class="sourceCode" id="cb10"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb10-1"><a href="#cb10-1" tabindex="-1"></a>AMR.microorganisms</span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="11%">
|
||||||
|
<col width="29%">
|
||||||
|
<col width="8%">
|
||||||
|
<col width="8%">
|
||||||
|
<col width="8%">
|
||||||
|
<col width="10%">
|
||||||
|
<col width="13%">
|
||||||
|
<col width="9%">
|
||||||
|
</colgroup>
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th>mo</th>
|
||||||
|
<th>fullname</th>
|
||||||
|
<th>status</th>
|
||||||
|
<th>kingdom</th>
|
||||||
|
<th>gbif</th>
|
||||||
|
<th>gbif_parent</th>
|
||||||
|
<th>gbif_renamed_to</th>
|
||||||
|
<th>prevalence</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>B_GRAMN</td>
|
||||||
|
<td>(unknown Gram-negatives)</td>
|
||||||
|
<td>unknown</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>B_GRAMP</td>
|
||||||
|
<td>(unknown Gram-positives)</td>
|
||||||
|
<td>unknown</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>B_ANAER-NEG</td>
|
||||||
|
<td>(unknown anaerobic Gram-negatives)</td>
|
||||||
|
<td>unknown</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>B_ANAER-POS</td>
|
||||||
|
<td>(unknown anaerobic Gram-positives)</td>
|
||||||
|
<td>unknown</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>B_ANAER</td>
|
||||||
|
<td>(unknown anaerobic bacteria)</td>
|
||||||
|
<td>unknown</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>B_ZYMMN_POMC</td>
|
||||||
|
<td>Zymomonas pomaceae</td>
|
||||||
|
<td>accepted</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>10744418</td>
|
||||||
|
<td>3221412</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>B_ZYMPH</td>
|
||||||
|
<td>Zymophilus</td>
|
||||||
|
<td>synonym</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>9475166</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>B_ZYMPH_PCVR</td>
|
||||||
|
<td>Zymophilus paucivorans</td>
|
||||||
|
<td>synonym</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>B_ZYMPH_RFFN</td>
|
||||||
|
<td>Zymophilus raffinosivorans</td>
|
||||||
|
<td>synonym</td>
|
||||||
|
<td>Bacteria</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>F_ZYZYG</td>
|
||||||
|
<td>Zyzygomyces</td>
|
||||||
|
<td>unknown</td>
|
||||||
|
<td>Fungi</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>7581</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>2.0</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="sourceCode" id="cb11"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb11-1"><a href="#cb11-1" tabindex="-1"></a>AMR.antimicrobials</span></code></pre></div>
|
||||||
|
<table style="width:100%;" class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="4%">
|
||||||
|
<col width="12%">
|
||||||
|
<col width="20%">
|
||||||
|
<col width="25%">
|
||||||
|
<col width="9%">
|
||||||
|
<col width="11%">
|
||||||
|
<col width="7%">
|
||||||
|
<col width="9%">
|
||||||
|
</colgroup>
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th>ab</th>
|
||||||
|
<th>cid</th>
|
||||||
|
<th>name</th>
|
||||||
|
<th>group</th>
|
||||||
|
<th>oral_ddd</th>
|
||||||
|
<th>oral_units</th>
|
||||||
|
<th>iv_ddd</th>
|
||||||
|
<th>iv_units</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>AMA</td>
|
||||||
|
<td>4649.0</td>
|
||||||
|
<td>4-aminosalicylic acid</td>
|
||||||
|
<td>Antimycobacterials</td>
|
||||||
|
<td>12.00</td>
|
||||||
|
<td>g</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>ACM</td>
|
||||||
|
<td>6450012.0</td>
|
||||||
|
<td>Acetylmidecamycin</td>
|
||||||
|
<td>Macrolides/lincosamides</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>ASP</td>
|
||||||
|
<td>49787020.0</td>
|
||||||
|
<td>Acetylspiramycin</td>
|
||||||
|
<td>Macrolides/lincosamides</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>ALS</td>
|
||||||
|
<td>8954.0</td>
|
||||||
|
<td>Aldesulfone sodium</td>
|
||||||
|
<td>Other antibacterials</td>
|
||||||
|
<td>0.33</td>
|
||||||
|
<td>g</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>AMK</td>
|
||||||
|
<td>37768.0</td>
|
||||||
|
<td>Amikacin</td>
|
||||||
|
<td>Aminoglycosides</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>1.0</td>
|
||||||
|
<td>g</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
<td>…</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>VIR</td>
|
||||||
|
<td>11979535.0</td>
|
||||||
|
<td>Virginiamycine</td>
|
||||||
|
<td>Other antibacterials</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>VOR</td>
|
||||||
|
<td>71616.0</td>
|
||||||
|
<td>Voriconazole</td>
|
||||||
|
<td>Antifungals/antimycotics</td>
|
||||||
|
<td>0.40</td>
|
||||||
|
<td>g</td>
|
||||||
|
<td>0.4</td>
|
||||||
|
<td>g</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>XBR</td>
|
||||||
|
<td>72144.0</td>
|
||||||
|
<td>Xibornol</td>
|
||||||
|
<td>Other antibacterials</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>ZID</td>
|
||||||
|
<td>77846445.0</td>
|
||||||
|
<td>Zidebactam</td>
|
||||||
|
<td>Other antibacterials</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>ZFD</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>Zoliflodacin</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
<td>NaN</td>
|
||||||
|
<td>None</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="conclusion">Conclusion<a class="anchor" aria-label="anchor" href="#conclusion"></a>
|
||||||
|
</h2>
|
||||||
|
<p>With the <code>AMR</code> Python package, Python users can now
|
||||||
|
effortlessly call R functions from the <code>AMR</code> R package. This
|
||||||
|
eliminates the need for complex <code>rpy2</code> configurations and
|
||||||
|
provides a clean, easy-to-use interface for antimicrobial resistance
|
||||||
|
analysis. The examples provided above demonstrate how this can be
|
||||||
|
applied to typical workflows, such as standardising microorganism and
|
||||||
|
antimicrobial names or calculating resistance.</p>
|
||||||
|
<p>By just running <code>import AMR</code>, users can seamlessly
|
||||||
|
integrate the robust features of the R <code>AMR</code> package into
|
||||||
|
Python workflows.</p>
|
||||||
|
<p>Whether you’re cleaning data or analysing resistance patterns, the
|
||||||
|
<code>AMR</code> Python package makes it easy to work with AMR data in
|
||||||
|
Python.</p>
|
||||||
|
</div>
|
||||||
|
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
|
||||||
|
</nav></aside>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
# AMR for Python
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
The `AMR` package for R is a powerful tool for antimicrobial resistance
|
||||||
|
(AMR) analysis. It provides extensive features for handling microbial
|
||||||
|
and antimicrobial data. However, for those who work primarily in Python,
|
||||||
|
we now have a more intuitive option available: the [`AMR` Python
|
||||||
|
package](https://pypi.org/project/AMR/).
|
||||||
|
|
||||||
|
This Python package is a wrapper around the `AMR` R package. It uses the
|
||||||
|
`rpy2` package internally. Despite the need to have R installed, Python
|
||||||
|
users can now easily work with AMR data directly through Python code.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
This package was only tested with a [virtual environment
|
||||||
|
(venv)](https://docs.python.org/3/library/venv.html). You can set up
|
||||||
|
such an environment by running:
|
||||||
|
|
||||||
|
``` python
|
||||||
|
# linux and macOS:
|
||||||
|
python -m venv /path/to/new/virtual/environment
|
||||||
|
|
||||||
|
# Windows:
|
||||||
|
python -m venv C:\path\to\new\virtual\environment
|
||||||
|
```
|
||||||
|
|
||||||
|
Then you can [activate the
|
||||||
|
environment](https://docs.python.org/3/library/venv.html#how-venvs-work),
|
||||||
|
after which the venv is ready to work with.
|
||||||
|
|
||||||
|
## Install AMR
|
||||||
|
|
||||||
|
1. Since the Python package is available on the official [Python
|
||||||
|
Package Index](https://pypi.org/project/AMR/), you can just run:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
pip install AMR
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Make sure you have R installed. There is **no need to install the
|
||||||
|
`AMR` R package**, as it will be installed automatically.
|
||||||
|
|
||||||
|
For Linux:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
# Ubuntu / Debian
|
||||||
|
sudo apt install r-base
|
||||||
|
# Fedora:
|
||||||
|
sudo dnf install R
|
||||||
|
# CentOS/RHEL
|
||||||
|
sudo yum install R
|
||||||
|
```
|
||||||
|
|
||||||
|
For macOS (using [Homebrew](https://brew.sh)):
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
brew install r
|
||||||
|
```
|
||||||
|
|
||||||
|
For Windows, visit the [CRAN download
|
||||||
|
page](https://cran.r-project.org) to download and install R.
|
||||||
|
|
||||||
|
## Examples of Usage
|
||||||
|
|
||||||
|
### Cleaning Taxonomy
|
||||||
|
|
||||||
|
Here’s an example that demonstrates how to clean microorganism and drug
|
||||||
|
names using the `AMR` Python package:
|
||||||
|
|
||||||
|
``` python
|
||||||
|
import pandas as pd
|
||||||
|
import AMR
|
||||||
|
|
||||||
|
# Sample data
|
||||||
|
data = {
|
||||||
|
"MOs": ['E. coli', 'ESCCOL', 'esco', 'Esche coli'],
|
||||||
|
"Drug": ['Cipro', 'CIP', 'J01MA02', 'Ciproxin']
|
||||||
|
}
|
||||||
|
df = pd.DataFrame(data)
|
||||||
|
|
||||||
|
# Use AMR functions to clean microorganism and drug names
|
||||||
|
df['MO_clean'] = AMR.mo_name(df['MOs'])
|
||||||
|
df['Drug_clean'] = AMR.ab_name(df['Drug'])
|
||||||
|
|
||||||
|
# Display the results
|
||||||
|
print(df)
|
||||||
|
```
|
||||||
|
|
||||||
|
| MOs | Drug | MO_clean | Drug_clean |
|
||||||
|
|------------|----------|------------------|---------------|
|
||||||
|
| E. coli | Cipro | Escherichia coli | Ciprofloxacin |
|
||||||
|
| ESCCOL | CIP | Escherichia coli | Ciprofloxacin |
|
||||||
|
| esco | J01MA02 | Escherichia coli | Ciprofloxacin |
|
||||||
|
| Esche coli | Ciproxin | Escherichia coli | Ciprofloxacin |
|
||||||
|
|
||||||
|
#### Explanation
|
||||||
|
|
||||||
|
- **mo_name:** This function standardises microorganism names. Here,
|
||||||
|
different variations of *Escherichia coli* (such as “E. coli”,
|
||||||
|
“ESCCOL”, “esco”, and “Esche coli”) are all converted into the
|
||||||
|
correct, standardised form, “Escherichia coli”.
|
||||||
|
|
||||||
|
- **ab_name**: Similarly, this function standardises antimicrobial
|
||||||
|
names. The different representations of ciprofloxacin (e.g., “Cipro”,
|
||||||
|
“CIP”, “J01MA02”, and “Ciproxin”) are all converted to the standard
|
||||||
|
name, “Ciprofloxacin”.
|
||||||
|
|
||||||
|
### Calculating AMR
|
||||||
|
|
||||||
|
``` python
|
||||||
|
import AMR
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
df = AMR.example_isolates
|
||||||
|
result = AMR.resistance(df["AMX"])
|
||||||
|
print(result)
|
||||||
|
```
|
||||||
|
|
||||||
|
[0.59555556]
|
||||||
|
|
||||||
|
### Generating Antibiograms
|
||||||
|
|
||||||
|
One of the core functions of the `AMR` package is generating an
|
||||||
|
antibiogram, a table that summarises the antimicrobial susceptibility of
|
||||||
|
bacterial isolates. Here’s how you can generate an antibiogram from
|
||||||
|
Python:
|
||||||
|
|
||||||
|
``` python
|
||||||
|
result2a = AMR.antibiogram(df[["mo", "AMX", "CIP", "TZP"]])
|
||||||
|
print(result2a)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Pathogen | Amoxicillin | Ciprofloxacin | Piperacillin/tazobactam |
|
||||||
|
|----------------|----------------|---------------|-------------------------|
|
||||||
|
| CoNS | 7% (10/142) | 73% (183/252) | 30% (10/33) |
|
||||||
|
| E. coli | 50% (196/392) | 88% (399/456) | 94% (393/416) |
|
||||||
|
| K. pneumoniae | 0% (0/58) | 96% (53/55) | 89% (47/53) |
|
||||||
|
| P. aeruginosa | 0% (0/30) | 100% (30/30) | None |
|
||||||
|
| P. mirabilis | None | 94% (34/36) | None |
|
||||||
|
| S. aureus | 6% (8/131) | 90% (171/191) | None |
|
||||||
|
| S. epidermidis | 1% (1/91) | 64% (87/136) | None |
|
||||||
|
| S. hominis | None | 80% (56/70) | None |
|
||||||
|
| S. pneumoniae | 100% (112/112) | None | 100% (112/112) |
|
||||||
|
|
||||||
|
``` python
|
||||||
|
result2b = AMR.antibiogram(df[["mo", "AMX", "CIP", "TZP"]], mo_transform = "gramstain")
|
||||||
|
print(result2b)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Pathogen | Amoxicillin | Ciprofloxacin | Piperacillin/tazobactam |
|
||||||
|
|---------------|---------------|---------------|-------------------------|
|
||||||
|
| Gram-negative | 36% (226/631) | 91% (621/684) | 88% (565/641) |
|
||||||
|
| Gram-positive | 43% (305/703) | 77% (560/724) | 86% (296/345) |
|
||||||
|
|
||||||
|
In this example, we generate an antibiogram by selecting various
|
||||||
|
antibiotics.
|
||||||
|
|
||||||
|
### Taxonomic Data Sets Now in Python!
|
||||||
|
|
||||||
|
As a Python user, you might like that the most important data sets of
|
||||||
|
the `AMR` R package, `microorganisms`, `antimicrobials`,
|
||||||
|
`clinical_breakpoints`, and `example_isolates`, are now available as
|
||||||
|
regular Python data frames:
|
||||||
|
|
||||||
|
``` python
|
||||||
|
AMR.microorganisms
|
||||||
|
```
|
||||||
|
|
||||||
|
| mo | fullname | status | kingdom | gbif | gbif_parent | gbif_renamed_to | prevalence |
|
||||||
|
|----|----|----|----|----|----|----|----|
|
||||||
|
| B_GRAMN | (unknown Gram-negatives) | unknown | Bacteria | None | None | None | 2.0 |
|
||||||
|
| B_GRAMP | (unknown Gram-positives) | unknown | Bacteria | None | None | None | 2.0 |
|
||||||
|
| B_ANAER-NEG | (unknown anaerobic Gram-negatives) | unknown | Bacteria | None | None | None | 2.0 |
|
||||||
|
| B_ANAER-POS | (unknown anaerobic Gram-positives) | unknown | Bacteria | None | None | None | 2.0 |
|
||||||
|
| B_ANAER | (unknown anaerobic bacteria) | unknown | Bacteria | None | None | None | 2.0 |
|
||||||
|
| … | … | … | … | … | … | … | … |
|
||||||
|
| B_ZYMMN_POMC | Zymomonas pomaceae | accepted | Bacteria | 10744418 | 3221412 | None | 2.0 |
|
||||||
|
| B_ZYMPH | Zymophilus | synonym | Bacteria | None | 9475166 | None | 2.0 |
|
||||||
|
| B_ZYMPH_PCVR | Zymophilus paucivorans | synonym | Bacteria | None | None | None | 2.0 |
|
||||||
|
| B_ZYMPH_RFFN | Zymophilus raffinosivorans | synonym | Bacteria | None | None | None | 2.0 |
|
||||||
|
| F_ZYZYG | Zyzygomyces | unknown | Fungi | None | 7581 | None | 2.0 |
|
||||||
|
|
||||||
|
``` python
|
||||||
|
AMR.antimicrobials
|
||||||
|
```
|
||||||
|
|
||||||
|
| ab | cid | name | group | oral_ddd | oral_units | iv_ddd | iv_units |
|
||||||
|
|----|----|----|----|----|----|----|----|
|
||||||
|
| AMA | 4649.0 | 4-aminosalicylic acid | Antimycobacterials | 12.00 | g | NaN | None |
|
||||||
|
| ACM | 6450012.0 | Acetylmidecamycin | Macrolides/lincosamides | NaN | None | NaN | None |
|
||||||
|
| ASP | 49787020.0 | Acetylspiramycin | Macrolides/lincosamides | NaN | None | NaN | None |
|
||||||
|
| ALS | 8954.0 | Aldesulfone sodium | Other antibacterials | 0.33 | g | NaN | None |
|
||||||
|
| AMK | 37768.0 | Amikacin | Aminoglycosides | NaN | None | 1.0 | g |
|
||||||
|
| … | … | … | … | … | … | … | … |
|
||||||
|
| VIR | 11979535.0 | Virginiamycine | Other antibacterials | NaN | None | NaN | None |
|
||||||
|
| VOR | 71616.0 | Voriconazole | Antifungals/antimycotics | 0.40 | g | 0.4 | g |
|
||||||
|
| XBR | 72144.0 | Xibornol | Other antibacterials | NaN | None | NaN | None |
|
||||||
|
| ZID | 77846445.0 | Zidebactam | Other antibacterials | NaN | None | NaN | None |
|
||||||
|
| ZFD | NaN | Zoliflodacin | None | NaN | None | NaN | None |
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
With the `AMR` Python package, Python users can now effortlessly call R
|
||||||
|
functions from the `AMR` R package. This eliminates the need for complex
|
||||||
|
`rpy2` configurations and provides a clean, easy-to-use interface for
|
||||||
|
antimicrobial resistance analysis. The examples provided above
|
||||||
|
demonstrate how this can be applied to typical workflows, such as
|
||||||
|
standardising microorganism and antimicrobial names or calculating
|
||||||
|
resistance.
|
||||||
|
|
||||||
|
By just running `import AMR`, users can seamlessly integrate the robust
|
||||||
|
features of the R `AMR` package into Python workflows.
|
||||||
|
|
||||||
|
Whether you’re cleaning data or analysing resistance patterns, the `AMR`
|
||||||
|
Python package makes it easy to work with AMR data in Python.
|
||||||
@@ -0,0 +1,903 @@
|
|||||||
|
# AMR with tidymodels
|
||||||
|
|
||||||
|
> This page was almost entirely written by our [AMR for R
|
||||||
|
> Assistant](https://chat.amr-for-r.org), a ChatGPT manually-trained
|
||||||
|
> model able to answer any question about the `AMR` package.
|
||||||
|
|
||||||
|
Antimicrobial resistance (AMR) is a global health crisis, and
|
||||||
|
understanding resistance patterns is crucial for managing effective
|
||||||
|
treatments. The `AMR` R package provides robust tools for analysing AMR
|
||||||
|
data, including convenient antimicrobial selector functions like
|
||||||
|
[`aminoglycosides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
|
||||||
|
and
|
||||||
|
[`betalactams()`](https://amr-for-r.org/reference/antimicrobial_selectors.md).
|
||||||
|
|
||||||
|
In this post, we will explore how to use the `tidymodels` framework to
|
||||||
|
predict resistance patterns in the `example_isolates` dataset in two
|
||||||
|
examples.
|
||||||
|
|
||||||
|
This post contains the following examples:
|
||||||
|
|
||||||
|
1. Using Antimicrobial Selectors
|
||||||
|
2. Predicting ESBL Presence Using Raw MICs
|
||||||
|
3. Predicting AMR Over Time
|
||||||
|
|
||||||
|
## Example 1: Using Antimicrobial Selectors
|
||||||
|
|
||||||
|
By leveraging the power of `tidymodels` and the `AMR` package, we’ll
|
||||||
|
build a reproducible machine learning workflow to predict the Gramstain
|
||||||
|
of the microorganism to two important antibiotic classes:
|
||||||
|
aminoglycosides and beta-lactams.
|
||||||
|
|
||||||
|
### **Objective**
|
||||||
|
|
||||||
|
Our goal is to build a predictive model using the `tidymodels` framework
|
||||||
|
to determine the Gramstain of the microorganism based on microbial data.
|
||||||
|
We will:
|
||||||
|
|
||||||
|
1. Preprocess data using the selector functions
|
||||||
|
[`aminoglycosides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
|
||||||
|
and
|
||||||
|
[`betalactams()`](https://amr-for-r.org/reference/antimicrobial_selectors.md).
|
||||||
|
2. Define a logistic regression model for prediction.
|
||||||
|
3. Use a structured `tidymodels` workflow to preprocess, train, and
|
||||||
|
evaluate the model.
|
||||||
|
|
||||||
|
### **Data Preparation**
|
||||||
|
|
||||||
|
We begin by loading the required libraries and preparing the
|
||||||
|
`example_isolates` dataset from the `AMR` package.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Load required libraries
|
||||||
|
library(AMR) # For AMR data analysis
|
||||||
|
library(tidymodels) # For machine learning workflows, and data manipulation (dplyr, tidyr, ...)
|
||||||
|
```
|
||||||
|
|
||||||
|
Prepare the data:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Your data could look like this:
|
||||||
|
example_isolates
|
||||||
|
#> # A tibble: 2,000 × 46
|
||||||
|
#> date patient age gender ward mo PEN OXA FLC AMX
|
||||||
|
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
|
||||||
|
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
|
||||||
|
#> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
|
||||||
|
#> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
|
||||||
|
#> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
|
||||||
|
#> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
|
||||||
|
#> # ℹ 1,990 more rows
|
||||||
|
#> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
|
||||||
|
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
|
||||||
|
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
|
||||||
|
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
|
||||||
|
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
|
||||||
|
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
|
||||||
|
|
||||||
|
# Select relevant columns for prediction
|
||||||
|
data <- example_isolates %>%
|
||||||
|
# select AB results dynamically
|
||||||
|
select(mo, aminoglycosides(), betalactams()) %>%
|
||||||
|
# replace NAs with NI (not-interpretable)
|
||||||
|
mutate(
|
||||||
|
across(
|
||||||
|
where(is.sir),
|
||||||
|
~ replace_na(.x, "NI")
|
||||||
|
),
|
||||||
|
# make factors of SIR columns
|
||||||
|
across(
|
||||||
|
where(is.sir),
|
||||||
|
as.integer
|
||||||
|
),
|
||||||
|
# get Gramstain of microorganisms
|
||||||
|
mo = as.factor(mo_gramstain(mo))
|
||||||
|
) %>%
|
||||||
|
# drop NAs - the ones without a Gramstain (fungi, etc.)
|
||||||
|
drop_na()
|
||||||
|
#> ℹ For `aminoglycosides()` using columns GEN (gentamicin), TOB (tobramycin), AMK
|
||||||
|
#> (amikacin), and KAN (kanamycin)
|
||||||
|
#> ℹ For `betalactams()` using columns PEN (benzylpenicillin), OXA (oxacillin),
|
||||||
|
#> FLC (flucloxacillin), AMX (amoxicillin), AMC (amoxicillin/clavulanic acid),
|
||||||
|
#> AMP (ampicillin), TZP (piperacillin/tazobactam), CZO (cefazolin), FEP
|
||||||
|
#> (cefepime), CXM (cefuroxime), FOX (cefoxitin), CTX (cefotaxime), CAZ
|
||||||
|
#> (ceftazidime), CRO (ceftriaxone), IPM (imipenem), and MEM (meropenem)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- [`aminoglycosides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
|
||||||
|
and
|
||||||
|
[`betalactams()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
|
||||||
|
dynamically select columns for antimicrobials in these classes.
|
||||||
|
- `drop_na()` ensures the model receives complete cases for training.
|
||||||
|
|
||||||
|
### **Defining the Workflow**
|
||||||
|
|
||||||
|
We now define the `tidymodels` workflow, which consists of three steps:
|
||||||
|
preprocessing, model specification, and fitting.
|
||||||
|
|
||||||
|
#### 1. Preprocessing with a Recipe
|
||||||
|
|
||||||
|
We create a recipe to preprocess the data for modelling.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Define the recipe for data preprocessing
|
||||||
|
resistance_recipe <- recipe(mo ~ ., data = data) %>%
|
||||||
|
step_corr(c(aminoglycosides(), betalactams()), threshold = 0.9)
|
||||||
|
resistance_recipe
|
||||||
|
#>
|
||||||
|
#> ── Recipe ──────────────────────────────────────────────────────────────────────
|
||||||
|
#>
|
||||||
|
#> ── Inputs
|
||||||
|
#> Number of variables by role
|
||||||
|
#> outcome: 1
|
||||||
|
#> predictor: 20
|
||||||
|
#>
|
||||||
|
#> ── Operations
|
||||||
|
#> • Correlation filter on: c(aminoglycosides(), betalactams())
|
||||||
|
```
|
||||||
|
|
||||||
|
For a recipe that includes at least one preprocessing operation, like we
|
||||||
|
have with `step_corr()`, the necessary parameters can be estimated from
|
||||||
|
a training set using `prep()`:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
prep(resistance_recipe)
|
||||||
|
#> ℹ For `aminoglycosides()` using columns GEN (gentamicin), TOB (tobramycin), AMK
|
||||||
|
#> (amikacin), and KAN (kanamycin)
|
||||||
|
#> ℹ For `betalactams()` using columns PEN (benzylpenicillin), OXA (oxacillin),
|
||||||
|
#> FLC (flucloxacillin), AMX (amoxicillin), AMC (amoxicillin/clavulanic acid),
|
||||||
|
#> AMP (ampicillin), TZP (piperacillin/tazobactam), CZO (cefazolin), FEP
|
||||||
|
#> (cefepime), CXM (cefuroxime), FOX (cefoxitin), CTX (cefotaxime), CAZ
|
||||||
|
#> (ceftazidime), CRO (ceftriaxone), IPM (imipenem), and MEM (meropenem)
|
||||||
|
#>
|
||||||
|
#>
|
||||||
|
#> ── Recipe ──────────────────────────────────────────────────────────────────────
|
||||||
|
#>
|
||||||
|
#>
|
||||||
|
#>
|
||||||
|
#> ── Inputs
|
||||||
|
#>
|
||||||
|
#> Number of variables by role
|
||||||
|
#>
|
||||||
|
#> outcome: 1
|
||||||
|
#> predictor: 20
|
||||||
|
#>
|
||||||
|
#>
|
||||||
|
#>
|
||||||
|
#> ── Training information
|
||||||
|
#>
|
||||||
|
#> Training data contained 1968 data points and no incomplete rows.
|
||||||
|
#>
|
||||||
|
#>
|
||||||
|
#>
|
||||||
|
#> ── Operations
|
||||||
|
#>
|
||||||
|
#> • Correlation filter on: AMX CTX | Trained
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `recipe(mo ~ ., data = data)` will take the `mo` column as outcome and
|
||||||
|
all other columns as predictors.
|
||||||
|
- `step_corr()` removes predictors (i.e., antibiotic columns) that have
|
||||||
|
a higher correlation than 90%.
|
||||||
|
|
||||||
|
Notice how the recipe contains just the antimicrobial selector
|
||||||
|
functions - no need to define the columns specifically. In the
|
||||||
|
preparation (retrieved with `prep()`) we can see that the columns or
|
||||||
|
variables ‘AMX’ and ‘CTX’ were removed as they correlate too much with
|
||||||
|
existing, other variables.
|
||||||
|
|
||||||
|
#### 2. Specifying the Model
|
||||||
|
|
||||||
|
We define a logistic regression model since resistance prediction is a
|
||||||
|
binary classification task.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Specify a logistic regression model
|
||||||
|
logistic_model <- logistic_reg() %>%
|
||||||
|
set_engine("glm") # Use the Generalised Linear Model engine
|
||||||
|
logistic_model
|
||||||
|
#> Logistic Regression Model Specification (classification)
|
||||||
|
#>
|
||||||
|
#> Computational engine: glm
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `logistic_reg()` sets up a logistic regression model.
|
||||||
|
- `set_engine("glm")` specifies the use of R’s built-in GLM engine.
|
||||||
|
|
||||||
|
#### 3. Building the Workflow
|
||||||
|
|
||||||
|
We bundle the recipe and model together into a `workflow`, which
|
||||||
|
organises the entire modelling process.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Combine the recipe and model into a workflow
|
||||||
|
resistance_workflow <- workflow() %>%
|
||||||
|
add_recipe(resistance_recipe) %>% # Add the preprocessing recipe
|
||||||
|
add_model(logistic_model) # Add the logistic regression model
|
||||||
|
resistance_workflow
|
||||||
|
#> ══ Workflow ════════════════════════════════════════════════════════════════════
|
||||||
|
#> Preprocessor: Recipe
|
||||||
|
#> Model: logistic_reg()
|
||||||
|
#>
|
||||||
|
#> ── Preprocessor ────────────────────────────────────────────────────────────────
|
||||||
|
#> 1 Recipe Step
|
||||||
|
#>
|
||||||
|
#> • step_corr()
|
||||||
|
#>
|
||||||
|
#> ── Model ───────────────────────────────────────────────────────────────────────
|
||||||
|
#> Logistic Regression Model Specification (classification)
|
||||||
|
#>
|
||||||
|
#> Computational engine: glm
|
||||||
|
```
|
||||||
|
|
||||||
|
### **Training and Evaluating the Model**
|
||||||
|
|
||||||
|
To train the model, we split the data into training and testing sets.
|
||||||
|
Then, we fit the workflow on the training set and evaluate its
|
||||||
|
performance.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Split data into training and testing sets
|
||||||
|
set.seed(123) # For reproducibility
|
||||||
|
data_split <- initial_split(data, prop = 0.8) # 80% training, 20% testing
|
||||||
|
training_data <- training(data_split) # Training set
|
||||||
|
testing_data <- testing(data_split) # Testing set
|
||||||
|
|
||||||
|
# Fit the workflow to the training data
|
||||||
|
fitted_workflow <- resistance_workflow %>%
|
||||||
|
fit(training_data) # Train the model
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `initial_split()` splits the data into training and testing sets.
|
||||||
|
- `fit()` trains the workflow on the training set.
|
||||||
|
|
||||||
|
Notice how in `fit()`, the antimicrobial selector functions are
|
||||||
|
internally called again. For training, these functions are called since
|
||||||
|
they are stored in the recipe.
|
||||||
|
|
||||||
|
Next, we evaluate the model on the testing data.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Make predictions on the testing set
|
||||||
|
predictions <- fitted_workflow %>%
|
||||||
|
predict(testing_data) # Generate predictions
|
||||||
|
probabilities <- fitted_workflow %>%
|
||||||
|
predict(testing_data, type = "prob") # Generate probabilities
|
||||||
|
|
||||||
|
predictions <- predictions %>%
|
||||||
|
bind_cols(probabilities) %>%
|
||||||
|
bind_cols(testing_data) # Combine with true labels
|
||||||
|
|
||||||
|
predictions
|
||||||
|
#> # A tibble: 394 × 24
|
||||||
|
#> .pred_class `.pred_Gram-negative` `.pred_Gram-positive` mo GEN TOB
|
||||||
|
#> <fct> <dbl> <dbl> <fct> <int> <int>
|
||||||
|
#> 1 Gram-positive 1.07e- 1 8.93 e- 1 Gram-p… 5 5
|
||||||
|
#> 2 Gram-positive 3.17e- 8 1.000e+ 0 Gram-p… 5 1
|
||||||
|
#> 3 Gram-negative 9.99e- 1 1.42 e- 3 Gram-n… 5 5
|
||||||
|
#> 4 Gram-positive 2.22e-16 1 e+ 0 Gram-p… 5 5
|
||||||
|
#> 5 Gram-negative 9.46e- 1 5.42 e- 2 Gram-n… 5 5
|
||||||
|
#> 6 Gram-positive 1.07e- 1 8.93 e- 1 Gram-p… 5 5
|
||||||
|
#> 7 Gram-positive 2.22e-16 1 e+ 0 Gram-p… 1 5
|
||||||
|
#> 8 Gram-positive 2.22e-16 1 e+ 0 Gram-p… 4 4
|
||||||
|
#> 9 Gram-negative 1 e+ 0 2.22 e-16 Gram-n… 1 1
|
||||||
|
#> 10 Gram-positive 6.05e-11 1.000e+ 0 Gram-p… 4 4
|
||||||
|
#> # ℹ 384 more rows
|
||||||
|
#> # ℹ 18 more variables: AMK <int>, KAN <int>, PEN <int>, OXA <int>, FLC <int>,
|
||||||
|
#> # AMX <int>, AMC <int>, AMP <int>, TZP <int>, CZO <int>, FEP <int>,
|
||||||
|
#> # CXM <int>, FOX <int>, CTX <int>, CAZ <int>, CRO <int>, IPM <int>, MEM <int>
|
||||||
|
|
||||||
|
# Evaluate model performance
|
||||||
|
metrics <- predictions %>%
|
||||||
|
metrics(truth = mo, estimate = .pred_class) # Calculate performance metrics
|
||||||
|
|
||||||
|
metrics
|
||||||
|
#> # A tibble: 2 × 3
|
||||||
|
#> .metric .estimator .estimate
|
||||||
|
#> <chr> <chr> <dbl>
|
||||||
|
#> 1 accuracy binary 0.995
|
||||||
|
#> 2 kap binary 0.989
|
||||||
|
|
||||||
|
|
||||||
|
# To assess some other model properties, you can make our own `metrics()` function
|
||||||
|
our_metrics <- metric_set(accuracy, kap, ppv, npv) # add Positive Predictive Value and Negative Predictive Value
|
||||||
|
metrics2 <- predictions %>%
|
||||||
|
our_metrics(truth = mo, estimate = .pred_class) # run again on our `our_metrics()` function
|
||||||
|
|
||||||
|
metrics2
|
||||||
|
#> # A tibble: 4 × 3
|
||||||
|
#> .metric .estimator .estimate
|
||||||
|
#> <chr> <chr> <dbl>
|
||||||
|
#> 1 accuracy binary 0.995
|
||||||
|
#> 2 kap binary 0.989
|
||||||
|
#> 3 ppv binary 0.987
|
||||||
|
#> 4 npv binary 1
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- [`predict()`](https://rdrr.io/r/stats/predict.html) generates
|
||||||
|
predictions on the testing set.
|
||||||
|
- `metrics()` computes evaluation metrics like accuracy and kappa.
|
||||||
|
|
||||||
|
It appears we can predict the Gram stain with a 99.5% accuracy based on
|
||||||
|
AMR results of only aminoglycosides and beta-lactam antibiotics. The ROC
|
||||||
|
curve looks like this:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
predictions %>%
|
||||||
|
roc_curve(mo, `.pred_Gram-negative`) %>%
|
||||||
|
autoplot()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### **Conclusion**
|
||||||
|
|
||||||
|
In this example, we demonstrated how to build a machine learning
|
||||||
|
pipeline with the `tidymodels` framework and the `AMR` package. By
|
||||||
|
combining selector functions like
|
||||||
|
[`aminoglycosides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
|
||||||
|
and
|
||||||
|
[`betalactams()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
|
||||||
|
with `tidymodels`, we efficiently prepared data, trained a model, and
|
||||||
|
evaluated its performance.
|
||||||
|
|
||||||
|
This workflow is extensible to other antimicrobial classes and
|
||||||
|
resistance patterns, empowering users to analyse AMR data systematically
|
||||||
|
and reproducibly.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## Example 2: Predicting ESBL Presence Using Raw MICs
|
||||||
|
|
||||||
|
In this second example, we demonstrate how to use `<mic>` columns
|
||||||
|
directly in `tidymodels` workflows using AMR-specific recipe steps. This
|
||||||
|
includes a transformation to `log2` scale using
|
||||||
|
[`step_mic_log2()`](https://amr-for-r.org/reference/amr-tidymodels.md),
|
||||||
|
which prepares MIC values for use in classification models.
|
||||||
|
|
||||||
|
This approach and idea formed the basis for the publication [DOI:
|
||||||
|
10.3389/fmicb.2025.1582703](https://doi.org/10.3389/fmicb.2025.1582703)
|
||||||
|
to model the presence of extended-spectrum beta-lactamases (ESBL) based
|
||||||
|
on MIC values.
|
||||||
|
|
||||||
|
### **Objective**
|
||||||
|
|
||||||
|
Our goal is to:
|
||||||
|
|
||||||
|
1. Use raw MIC values to predict whether a bacterial isolate produces
|
||||||
|
ESBL.
|
||||||
|
2. Apply AMR-aware preprocessing in a `tidymodels` recipe.
|
||||||
|
3. Train a classification model and evaluate its predictive
|
||||||
|
performance.
|
||||||
|
|
||||||
|
### **Data Preparation**
|
||||||
|
|
||||||
|
We use the `esbl_isolates` dataset that comes with the AMR package.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Load required libraries
|
||||||
|
library(AMR)
|
||||||
|
library(tidymodels)
|
||||||
|
|
||||||
|
# View the esbl_isolates data set
|
||||||
|
esbl_isolates
|
||||||
|
#> # A tibble: 500 × 19
|
||||||
|
#> esbl genus AMC AMP TZP CXM FOX CTX CAZ GEN TOB TMP SXT
|
||||||
|
#> <lgl> <chr> <mic> <mic> <mic> <mic> <mic> <mic> <mic> <mic> <mic> <mic> <mic>
|
||||||
|
#> 1 FALSE Esch… 32 32 4 64 64 8.00 8.00 1 1 16.0 20
|
||||||
|
#> 2 FALSE Esch… 32 32 4 64 64 4.00 8.00 1 1 16.0 320
|
||||||
|
#> 3 FALSE Esch… 4 2 64 8 4 8.00 0.12 16 16 0.5 20
|
||||||
|
#> 4 FALSE Kleb… 32 32 16 64 64 8.00 8.00 1 1 0.5 20
|
||||||
|
#> 5 FALSE Esch… 32 32 4 4 4 0.25 2.00 1 1 16.0 320
|
||||||
|
#> 6 FALSE Citr… 32 32 16 64 64 64.00 32.00 1 1 0.5 20
|
||||||
|
#> 7 FALSE Morg… 32 32 4 64 64 16.00 2.00 1 1 0.5 20
|
||||||
|
#> 8 FALSE Prot… 16 32 4 1 4 8.00 0.12 1 1 16.0 320
|
||||||
|
#> 9 FALSE Ente… 32 32 8 64 64 32.00 4.00 1 1 0.5 20
|
||||||
|
#> 10 FALSE Citr… 32 32 32 64 64 8.00 64.00 1 1 16.0 320
|
||||||
|
#> # ℹ 490 more rows
|
||||||
|
#> # ℹ 6 more variables: NIT <mic>, FOS <mic>, CIP <mic>, IPM <mic>, MEM <mic>,
|
||||||
|
#> # COL <mic>
|
||||||
|
|
||||||
|
# Prepare a binary outcome and convert to ordered factor
|
||||||
|
data <- esbl_isolates %>%
|
||||||
|
mutate(esbl = factor(esbl, levels = c(FALSE, TRUE), ordered = TRUE))
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `esbl_isolates`: Contains MIC test results and ESBL status for each
|
||||||
|
isolate.
|
||||||
|
- `mutate(esbl = ...)`: Converts the target column to an ordered factor
|
||||||
|
for classification.
|
||||||
|
|
||||||
|
### **Defining the Workflow**
|
||||||
|
|
||||||
|
#### 1. Preprocessing with a Recipe
|
||||||
|
|
||||||
|
We use our
|
||||||
|
[`step_mic_log2()`](https://amr-for-r.org/reference/amr-tidymodels.md)
|
||||||
|
function to log2-transform MIC values, ensuring that MICs are numeric
|
||||||
|
and properly scaled. All MIC predictors can easily and agnostically
|
||||||
|
selected using the new
|
||||||
|
[`all_mic_predictors()`](https://amr-for-r.org/reference/amr-tidymodels.md):
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Split into training and testing sets
|
||||||
|
set.seed(123)
|
||||||
|
split <- initial_split(data)
|
||||||
|
training_data <- training(split)
|
||||||
|
testing_data <- testing(split)
|
||||||
|
|
||||||
|
# Define the recipe
|
||||||
|
mic_recipe <- recipe(esbl ~ ., data = training_data) %>%
|
||||||
|
remove_role(genus, old_role = "predictor") %>% # Remove non-informative variable
|
||||||
|
step_mic_log2(all_mic_predictors()) # Log2 transform all MIC predictors
|
||||||
|
|
||||||
|
prep(mic_recipe)
|
||||||
|
#>
|
||||||
|
#> ── Recipe ──────────────────────────────────────────────────────────────────────
|
||||||
|
#>
|
||||||
|
#> ── Inputs
|
||||||
|
#> Number of variables by role
|
||||||
|
#> outcome: 1
|
||||||
|
#> predictor: 17
|
||||||
|
#> undeclared role: 1
|
||||||
|
#>
|
||||||
|
#> ── Training information
|
||||||
|
#> Training data contained 375 data points and no incomplete rows.
|
||||||
|
#>
|
||||||
|
#> ── Operations
|
||||||
|
#> • Log2 transformation of MIC columns: AMC, AMP, TZP, CXM, FOX, ... | Trained
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `remove_role()`: Removes irrelevant variables like genus.
|
||||||
|
- [`step_mic_log2()`](https://amr-for-r.org/reference/amr-tidymodels.md):
|
||||||
|
Applies `log2(as.numeric(...))` to all MIC predictors in one go.
|
||||||
|
- `prep()`: Finalises the recipe based on training data.
|
||||||
|
|
||||||
|
#### 2. Specifying the Model
|
||||||
|
|
||||||
|
We use a simple logistic regression to model ESBL presence, though
|
||||||
|
recent models such as xgboost ([link to `parsnip`
|
||||||
|
manual](https://parsnip.tidymodels.org/reference/details_boost_tree_xgboost.html))
|
||||||
|
could be much more precise.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Define the model
|
||||||
|
model <- logistic_reg(mode = "classification") %>%
|
||||||
|
set_engine("glm")
|
||||||
|
|
||||||
|
model
|
||||||
|
#> Logistic Regression Model Specification (classification)
|
||||||
|
#>
|
||||||
|
#> Computational engine: glm
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `logistic_reg()`: Specifies a binary classification model.
|
||||||
|
- `set_engine("glm")`: Uses the base R GLM engine.
|
||||||
|
|
||||||
|
#### 3. Building the Workflow
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Create workflow
|
||||||
|
workflow_model <- workflow() %>%
|
||||||
|
add_recipe(mic_recipe) %>%
|
||||||
|
add_model(model)
|
||||||
|
|
||||||
|
workflow_model
|
||||||
|
#> ══ Workflow ════════════════════════════════════════════════════════════════════
|
||||||
|
#> Preprocessor: Recipe
|
||||||
|
#> Model: logistic_reg()
|
||||||
|
#>
|
||||||
|
#> ── Preprocessor ────────────────────────────────────────────────────────────────
|
||||||
|
#> 1 Recipe Step
|
||||||
|
#>
|
||||||
|
#> • step_mic_log2()
|
||||||
|
#>
|
||||||
|
#> ── Model ───────────────────────────────────────────────────────────────────────
|
||||||
|
#> Logistic Regression Model Specification (classification)
|
||||||
|
#>
|
||||||
|
#> Computational engine: glm
|
||||||
|
```
|
||||||
|
|
||||||
|
### **Training and Evaluating the Model**
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Fit the model
|
||||||
|
fitted <- fit(workflow_model, training_data)
|
||||||
|
|
||||||
|
# Generate predictions
|
||||||
|
predictions <- predict(fitted, testing_data) %>%
|
||||||
|
bind_cols(predict(fitted, testing_data, type = "prob")) %>% # add probabilities
|
||||||
|
bind_cols(testing_data)
|
||||||
|
|
||||||
|
# Evaluate model performance
|
||||||
|
our_metrics <- metric_set(accuracy, recall, precision, sensitivity, specificity, ppv, npv)
|
||||||
|
metrics <- our_metrics(predictions, truth = esbl, estimate = .pred_class)
|
||||||
|
|
||||||
|
metrics
|
||||||
|
#> # A tibble: 7 × 3
|
||||||
|
#> .metric .estimator .estimate
|
||||||
|
#> <chr> <chr> <dbl>
|
||||||
|
#> 1 accuracy binary 0.92
|
||||||
|
#> 2 recall binary 0.921
|
||||||
|
#> 3 precision binary 0.921
|
||||||
|
#> 4 sensitivity binary 0.921
|
||||||
|
#> 5 specificity binary 0.919
|
||||||
|
#> 6 ppv binary 0.921
|
||||||
|
#> 7 npv binary 0.919
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `fit()`: Trains the model on the processed training data.
|
||||||
|
- [`predict()`](https://rdrr.io/r/stats/predict.html): Produces
|
||||||
|
predictions for unseen test data.
|
||||||
|
- `metric_set()`: Allows evaluating multiple classification metrics.
|
||||||
|
This will make `our_metrics` to become a function that we can use to
|
||||||
|
check the predictions with.
|
||||||
|
|
||||||
|
It appears we can predict ESBL gene presence with a positive predictive
|
||||||
|
value (PPV) of 92.1% and a negative predictive value (NPV) of 91.9%
|
||||||
|
using a simplistic logistic regression model.
|
||||||
|
|
||||||
|
### **Visualising Predictions**
|
||||||
|
|
||||||
|
We can visualise predictions by comparing predicted and actual ESBL
|
||||||
|
status.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
library(ggplot2)
|
||||||
|
|
||||||
|
ggplot(predictions, aes(x = esbl, fill = .pred_class)) +
|
||||||
|
geom_bar(position = "stack") +
|
||||||
|
labs(
|
||||||
|
title = "Predicted vs Actual ESBL Status",
|
||||||
|
x = "Actual ESBL",
|
||||||
|
y = "Count"
|
||||||
|
) +
|
||||||
|
theme_minimal()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
And plot the certainties too - how certain were the actual predictions?
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
predictions %>%
|
||||||
|
mutate(
|
||||||
|
certainty = ifelse(.pred_class == "FALSE",
|
||||||
|
.pred_FALSE,
|
||||||
|
.pred_TRUE
|
||||||
|
),
|
||||||
|
correct = ifelse(esbl == .pred_class, "Right", "Wrong")
|
||||||
|
) %>%
|
||||||
|
ggplot(aes(
|
||||||
|
x = seq_len(nrow(predictions)),
|
||||||
|
y = certainty,
|
||||||
|
colour = correct
|
||||||
|
)) +
|
||||||
|
scale_colour_manual(
|
||||||
|
values = c(Right = "green3", Wrong = "red2"),
|
||||||
|
name = "Correct?"
|
||||||
|
) +
|
||||||
|
geom_point() +
|
||||||
|
scale_y_continuous(
|
||||||
|
labels = function(x) paste0(x * 100, "%"),
|
||||||
|
limits = c(0.5, 1)
|
||||||
|
) +
|
||||||
|
theme_minimal()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### **Conclusion**
|
||||||
|
|
||||||
|
In this example, we showcased how the new `AMR`-specific recipe steps
|
||||||
|
simplify working with `<mic>` columns in `tidymodels`. The
|
||||||
|
[`step_mic_log2()`](https://amr-for-r.org/reference/amr-tidymodels.md)
|
||||||
|
transformation converts MICs (with or without operators) to
|
||||||
|
log2-transformed numerics, improving compatibility with classification
|
||||||
|
models.
|
||||||
|
|
||||||
|
This pipeline enables realistic, reproducible, and interpretable
|
||||||
|
modelling of antimicrobial resistance data.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## Example 3: Predicting AMR Over Time
|
||||||
|
|
||||||
|
In this third example, we aim to predict antimicrobial resistance (AMR)
|
||||||
|
trends over time using `tidymodels`. We will model resistance to three
|
||||||
|
antibiotics (amoxicillin `AMX`, amoxicillin-clavulanic acid `AMC`, and
|
||||||
|
ciprofloxacin `CIP`), based on historical data grouped by year and
|
||||||
|
hospital ward.
|
||||||
|
|
||||||
|
### **Objective**
|
||||||
|
|
||||||
|
Our goal is to:
|
||||||
|
|
||||||
|
1. Prepare the dataset by aggregating resistance data over time.
|
||||||
|
2. Define a regression model to predict AMR trends.
|
||||||
|
3. Use `tidymodels` to preprocess, train, and evaluate the model.
|
||||||
|
|
||||||
|
### **Data Preparation**
|
||||||
|
|
||||||
|
We start by transforming the `example_isolates` dataset into a
|
||||||
|
structured time-series format.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Load required libraries
|
||||||
|
library(AMR)
|
||||||
|
library(tidymodels)
|
||||||
|
|
||||||
|
# Transform dataset
|
||||||
|
data_time <- example_isolates %>%
|
||||||
|
top_n_microorganisms(n = 10) %>% # Filter on the top #10 species
|
||||||
|
mutate(
|
||||||
|
year = as.integer(format(date, "%Y")), # Extract year from date
|
||||||
|
gramstain = mo_gramstain(mo)
|
||||||
|
) %>% # Get taxonomic names
|
||||||
|
group_by(year, gramstain) %>%
|
||||||
|
summarise(
|
||||||
|
across(c(AMX, AMC, CIP),
|
||||||
|
function(x) resistance(x, minimum = 0),
|
||||||
|
.names = "res_{.col}"
|
||||||
|
),
|
||||||
|
.groups = "drop"
|
||||||
|
) %>%
|
||||||
|
filter(!is.na(res_AMX) & !is.na(res_AMC) & !is.na(res_CIP)) # Drop missing values
|
||||||
|
#> ℹ Using column mo as input for `col_mo`.
|
||||||
|
#> ℹ `resistance()` assumes the EUCAST guideline and thus considers the 'I'
|
||||||
|
#> category susceptible. Set the `guideline` argument or the `AMR_guideline`
|
||||||
|
#> option to either "CLSI" or "EUCAST", see `?AMR-options`.
|
||||||
|
#> ℹ This message will be shown once per session.
|
||||||
|
|
||||||
|
data_time
|
||||||
|
#> # A tibble: 32 × 5
|
||||||
|
#> year gramstain res_AMX res_AMC res_CIP
|
||||||
|
#> <int> <chr> <dbl> <dbl> <dbl>
|
||||||
|
#> 1 2002 Gram-negative 1 0.105 0.0606
|
||||||
|
#> 2 2002 Gram-positive 0.838 0.182 0.162
|
||||||
|
#> 3 2003 Gram-negative 1 0.0714 0
|
||||||
|
#> 4 2003 Gram-positive 0.714 0.244 0.154
|
||||||
|
#> 5 2004 Gram-negative 0.464 0.0938 0
|
||||||
|
#> 6 2004 Gram-positive 0.849 0.299 0.244
|
||||||
|
#> 7 2005 Gram-negative 0.412 0.132 0.0588
|
||||||
|
#> 8 2005 Gram-positive 0.882 0.382 0.154
|
||||||
|
#> 9 2006 Gram-negative 0.379 0 0.1
|
||||||
|
#> 10 2006 Gram-positive 0.778 0.333 0.353
|
||||||
|
#> # ℹ 22 more rows
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `mo_name(mo)`: Converts microbial codes into proper species names.
|
||||||
|
- [`resistance()`](https://amr-for-r.org/reference/proportion.md):
|
||||||
|
Converts AMR results into numeric values (proportion of resistant
|
||||||
|
isolates).
|
||||||
|
- `group_by(year, ward, species)`: Aggregates resistance rates by year
|
||||||
|
and ward.
|
||||||
|
|
||||||
|
### **Defining the Workflow**
|
||||||
|
|
||||||
|
We now define the modelling workflow, which consists of a preprocessing
|
||||||
|
step, a model specification, and the fitting process.
|
||||||
|
|
||||||
|
#### 1. Preprocessing with a Recipe
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Define the recipe
|
||||||
|
resistance_recipe_time <- recipe(res_AMX ~ year + gramstain, data = data_time) %>%
|
||||||
|
step_dummy(gramstain, one_hot = TRUE) %>% # Convert categorical to numerical
|
||||||
|
step_normalize(year) %>% # Normalise year for better model performance
|
||||||
|
step_nzv(all_predictors()) # Remove near-zero variance predictors
|
||||||
|
|
||||||
|
resistance_recipe_time
|
||||||
|
#>
|
||||||
|
#> ── Recipe ──────────────────────────────────────────────────────────────────────
|
||||||
|
#>
|
||||||
|
#> ── Inputs
|
||||||
|
#> Number of variables by role
|
||||||
|
#> outcome: 1
|
||||||
|
#> predictor: 2
|
||||||
|
#>
|
||||||
|
#> ── Operations
|
||||||
|
#> • Dummy variables from: gramstain
|
||||||
|
#> • Centering and scaling for: year
|
||||||
|
#> • Sparse, unbalanced variable filter on: all_predictors()
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `step_dummy()`: Encodes categorical variables (`ward`, `species`) as
|
||||||
|
numerical indicators.
|
||||||
|
- `step_normalize()`: Normalises the `year` variable.
|
||||||
|
- `step_nzv()`: Removes near-zero variance predictors.
|
||||||
|
|
||||||
|
#### 2. Specifying the Model
|
||||||
|
|
||||||
|
We use a linear regression model to predict resistance trends.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Define the linear regression model
|
||||||
|
lm_model <- linear_reg() %>%
|
||||||
|
set_engine("lm") # Use linear regression
|
||||||
|
|
||||||
|
lm_model
|
||||||
|
#> Linear Regression Model Specification (regression)
|
||||||
|
#>
|
||||||
|
#> Computational engine: lm
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `linear_reg()`: Defines a linear regression model.
|
||||||
|
- `set_engine("lm")`: Uses R’s built-in linear regression engine.
|
||||||
|
|
||||||
|
#### 3. Building the Workflow
|
||||||
|
|
||||||
|
We combine the preprocessing recipe and model into a workflow.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Create workflow
|
||||||
|
resistance_workflow_time <- workflow() %>%
|
||||||
|
add_recipe(resistance_recipe_time) %>%
|
||||||
|
add_model(lm_model)
|
||||||
|
|
||||||
|
resistance_workflow_time
|
||||||
|
#> ══ Workflow ════════════════════════════════════════════════════════════════════
|
||||||
|
#> Preprocessor: Recipe
|
||||||
|
#> Model: linear_reg()
|
||||||
|
#>
|
||||||
|
#> ── Preprocessor ────────────────────────────────────────────────────────────────
|
||||||
|
#> 3 Recipe Steps
|
||||||
|
#>
|
||||||
|
#> • step_dummy()
|
||||||
|
#> • step_normalize()
|
||||||
|
#> • step_nzv()
|
||||||
|
#>
|
||||||
|
#> ── Model ───────────────────────────────────────────────────────────────────────
|
||||||
|
#> Linear Regression Model Specification (regression)
|
||||||
|
#>
|
||||||
|
#> Computational engine: lm
|
||||||
|
```
|
||||||
|
|
||||||
|
### **Training and Evaluating the Model**
|
||||||
|
|
||||||
|
We split the data into training and testing sets, fit the model, and
|
||||||
|
evaluate performance.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# Split the data
|
||||||
|
set.seed(123)
|
||||||
|
data_split_time <- initial_split(data_time, prop = 0.8)
|
||||||
|
train_time <- training(data_split_time)
|
||||||
|
test_time <- testing(data_split_time)
|
||||||
|
|
||||||
|
# Train the model
|
||||||
|
fitted_workflow_time <- resistance_workflow_time %>%
|
||||||
|
fit(train_time)
|
||||||
|
|
||||||
|
# Make predictions
|
||||||
|
predictions_time <- fitted_workflow_time %>%
|
||||||
|
predict(test_time) %>%
|
||||||
|
bind_cols(test_time)
|
||||||
|
|
||||||
|
# Evaluate model
|
||||||
|
metrics_time <- predictions_time %>%
|
||||||
|
metrics(truth = res_AMX, estimate = .pred)
|
||||||
|
|
||||||
|
metrics_time
|
||||||
|
#> # A tibble: 3 × 3
|
||||||
|
#> .metric .estimator .estimate
|
||||||
|
#> <chr> <chr> <dbl>
|
||||||
|
#> 1 rmse standard 0.0774
|
||||||
|
#> 2 rsq standard 0.711
|
||||||
|
#> 3 mae standard 0.0704
|
||||||
|
```
|
||||||
|
|
||||||
|
**Explanation:**
|
||||||
|
|
||||||
|
- `initial_split()`: Splits data into training and testing sets.
|
||||||
|
- `fit()`: Trains the workflow.
|
||||||
|
- [`predict()`](https://rdrr.io/r/stats/predict.html): Generates
|
||||||
|
resistance predictions.
|
||||||
|
- `metrics()`: Evaluates model performance.
|
||||||
|
|
||||||
|
### **Visualising Predictions**
|
||||||
|
|
||||||
|
We plot resistance trends over time for amoxicillin.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
library(ggplot2)
|
||||||
|
|
||||||
|
# Plot actual vs predicted resistance over time
|
||||||
|
ggplot(predictions_time, aes(x = year)) +
|
||||||
|
geom_point(aes(y = res_AMX, color = "Actual")) +
|
||||||
|
geom_line(aes(y = .pred, color = "Predicted")) +
|
||||||
|
labs(
|
||||||
|
title = "Predicted vs Actual AMX Resistance Over Time",
|
||||||
|
x = "Year",
|
||||||
|
y = "Resistance Proportion"
|
||||||
|
) +
|
||||||
|
theme_minimal()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Additionally, we can visualise resistance trends in `ggplot2` and
|
||||||
|
directly add linear models there:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
ggplot(data_time, aes(x = year, y = res_AMX, color = gramstain)) +
|
||||||
|
geom_line() +
|
||||||
|
labs(
|
||||||
|
title = "AMX Resistance Trends",
|
||||||
|
x = "Year",
|
||||||
|
y = "Resistance Proportion"
|
||||||
|
) +
|
||||||
|
# add a linear model directly in ggplot2:
|
||||||
|
geom_smooth(
|
||||||
|
method = "lm",
|
||||||
|
formula = y ~ x,
|
||||||
|
alpha = 0.25
|
||||||
|
) +
|
||||||
|
theme_minimal()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### **Conclusion**
|
||||||
|
|
||||||
|
In this example, we demonstrated how to analyze AMR trends over time
|
||||||
|
using `tidymodels`. By aggregating resistance rates by year and hospital
|
||||||
|
ward, we built a predictive model to track changes in resistance to
|
||||||
|
amoxicillin (`AMX`), amoxicillin-clavulanic acid (`AMC`), and
|
||||||
|
ciprofloxacin (`CIP`).
|
||||||
|
|
||||||
|
This method can be extended to other antibiotics and resistance
|
||||||
|
patterns, providing valuable insights into AMR dynamics in healthcare
|
||||||
|
settings.
|
||||||
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 137 KiB |
|
After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,337 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Apply EUCAST rules • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png">
|
||||||
|
<link rel="icon" type="”image/svg+xml”" href="../favicon.svg">
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="icon" sizes="any" href="../favicon.ico">
|
||||||
|
<link rel="manifest" href="../site.webmanifest">
|
||||||
|
<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link href="../deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet">
|
||||||
|
<script src="../extra.js"></script><meta property="og:title" content="Apply EUCAST rules">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto">
|
||||||
|
<li class="active nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to">
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json">
|
||||||
|
</form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-article">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="../logo.svg" class="logo" alt=""><h1>Apply EUCAST rules</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/EUCAST.Rmd" class="external-link"><code>vignettes/EUCAST.Rmd</code></a></small>
|
||||||
|
<div class="d-none name"><code>EUCAST.Rmd</code></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a>
|
||||||
|
</h2>
|
||||||
|
<p>What are EUCAST rules? The European Committee on Antimicrobial
|
||||||
|
Susceptibility Testing (EUCAST) states <a href="https://www.eucast.org/expert_rules_and_expected_phenotypes" class="external-link">on
|
||||||
|
their website</a>:</p>
|
||||||
|
<blockquote>
|
||||||
|
<p><em>EUCAST expert rules (see below) are a tabulated collection of
|
||||||
|
expert knowledge on interpretive rules, expected resistant phenotypes
|
||||||
|
and expected susceptible phenotypes which should be applied to
|
||||||
|
antimicrobial susceptibility testing in order to reduce testing, reduce
|
||||||
|
errors and make appropriate recommendations for reporting particular
|
||||||
|
resistances.</em></p>
|
||||||
|
</blockquote>
|
||||||
|
<p>In Europe, a lot of medical microbiological laboratories already
|
||||||
|
apply these rules (<a href="https://www.eurosurveillance.org/content/10.2807/1560-7917.ES2015.20.2.21008" class="external-link">Brown
|
||||||
|
<em>et al.</em>, 2015</a>). Our package features their latest insights
|
||||||
|
on expected resistant phenotypes (v1.2, 2023).</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="examples">Examples<a class="anchor" aria-label="anchor" href="#examples"></a>
|
||||||
|
</h2>
|
||||||
|
<p>These rules can be used to discard improbable bug-drug combinations
|
||||||
|
in your data. For example, <em>Klebsiella</em> produces beta-lactamase
|
||||||
|
that prevents ampicillin (or amoxicillin) from working against it. In
|
||||||
|
other words, practically every strain of <em>Klebsiella</em> is
|
||||||
|
resistant to ampicillin.</p>
|
||||||
|
<p>Sometimes, laboratory data can still contain such strains with
|
||||||
|
<em>Klebsiella</em> being susceptible to ampicillin. This could be
|
||||||
|
because an antibiogram is available before an identification is
|
||||||
|
available, and the antibiogram is then not re-interpreted based on the
|
||||||
|
identification. The <code><a href="../reference/interpretive_rules.html">eucast_rules()</a></code> function resolves this,
|
||||||
|
by applying the latest ‘EUCAST Expected Resistant Phenotypes’
|
||||||
|
guideline:</p>
|
||||||
|
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">oops</span> <span class="op"><-</span> <span class="fu">tibble</span><span class="fu">::</span><span class="fu"><a href="https://tibble.tidyverse.org/reference/tibble.html" class="external-link">tibble</a></span><span class="op">(</span></span>
|
||||||
|
<span> mo <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span></span>
|
||||||
|
<span> <span class="st">"Klebsiella pneumoniae"</span>,</span>
|
||||||
|
<span> <span class="st">"Escherichia coli"</span></span>
|
||||||
|
<span> <span class="op">)</span>,</span>
|
||||||
|
<span> ampicillin <span class="op">=</span> <span class="fu"><a href="../reference/as.sir.html">as.sir</a></span><span class="op">(</span><span class="st">"S"</span><span class="op">)</span></span>
|
||||||
|
<span><span class="op">)</span></span>
|
||||||
|
<span><span class="va">oops</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 2 × 2</span></span></span>
|
||||||
|
<span><span class="co">#> mo ampicillin</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><sir></span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> Klebsiella pneumoniae <span style="color: #080808; background-color: #5FD7AF;"> S </span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> Escherichia coli <span style="color: #080808; background-color: #5FD7AF;"> S </span></span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="fu"><a href="../reference/interpretive_rules.html">eucast_rules</a></span><span class="op">(</span><span class="va">oops</span>, info <span class="op">=</span> <span class="cn">FALSE</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 2 × 2</span></span></span>
|
||||||
|
<span><span class="co">#> mo ampicillin</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><sir></span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> Klebsiella pneumoniae <span style="color: #080808; background-color: #FF5F5F;"> R </span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> Escherichia coli <span style="color: #080808; background-color: #5FD7AF;"> S </span></span></span></code></pre></div>
|
||||||
|
<p>A more convenient function is
|
||||||
|
<code><a href="../reference/mo_property.html">mo_is_intrinsic_resistant()</a></code> that uses the same guideline,
|
||||||
|
but allows to check for one or more specific microorganisms or
|
||||||
|
antimicrobials:</p>
|
||||||
|
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/mo_property.html">mo_is_intrinsic_resistant</a></span><span class="op">(</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"Klebsiella pneumoniae"</span>, <span class="st">"Escherichia coli"</span><span class="op">)</span>,</span>
|
||||||
|
<span> <span class="st">"ampicillin"</span></span>
|
||||||
|
<span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> [1] TRUE FALSE</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="fu"><a href="../reference/mo_property.html">mo_is_intrinsic_resistant</a></span><span class="op">(</span></span>
|
||||||
|
<span> <span class="st">"Klebsiella pneumoniae"</span>,</span>
|
||||||
|
<span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"ampicillin"</span>, <span class="st">"kanamycin"</span><span class="op">)</span></span>
|
||||||
|
<span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> [1] TRUE FALSE</span></span></code></pre></div>
|
||||||
|
<p>EUCAST rules can not only be used for correction, they can also be
|
||||||
|
used for filling in known resistance and susceptibility based on results
|
||||||
|
of other antimicrobials drugs. This process is called <em>interpretive
|
||||||
|
reading</em>, and is basically a form of imputation:</p>
|
||||||
|
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">data</span> <span class="op"><-</span> <span class="fu">tibble</span><span class="fu">::</span><span class="fu"><a href="https://tibble.tidyverse.org/reference/tibble.html" class="external-link">tibble</a></span><span class="op">(</span></span>
|
||||||
|
<span> mo <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span></span>
|
||||||
|
<span> <span class="st">"Staphylococcus aureus"</span>,</span>
|
||||||
|
<span> <span class="st">"Enterococcus faecalis"</span>,</span>
|
||||||
|
<span> <span class="st">"Escherichia coli"</span>,</span>
|
||||||
|
<span> <span class="st">"Klebsiella pneumoniae"</span>,</span>
|
||||||
|
<span> <span class="st">"Pseudomonas aeruginosa"</span></span>
|
||||||
|
<span> <span class="op">)</span>,</span>
|
||||||
|
<span> VAN <span class="op">=</span> <span class="st">"-"</span>, <span class="co"># Vancomycin</span></span>
|
||||||
|
<span> AMX <span class="op">=</span> <span class="st">"-"</span>, <span class="co"># Amoxicillin</span></span>
|
||||||
|
<span> COL <span class="op">=</span> <span class="st">"-"</span>, <span class="co"># Colistin</span></span>
|
||||||
|
<span> CAZ <span class="op">=</span> <span class="st">"-"</span>, <span class="co"># Ceftazidime</span></span>
|
||||||
|
<span> CXM <span class="op">=</span> <span class="st">"-"</span>, <span class="co"># Cefuroxime</span></span>
|
||||||
|
<span> PEN <span class="op">=</span> <span class="st">"S"</span>, <span class="co"># Benzylenicillin</span></span>
|
||||||
|
<span> FOX <span class="op">=</span> <span class="st">"S"</span> <span class="co"># Cefoxitin</span></span>
|
||||||
|
<span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">data</span></span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th align="left">mo</th>
|
||||||
|
<th align="center">VAN</th>
|
||||||
|
<th align="center">AMX</th>
|
||||||
|
<th align="center">COL</th>
|
||||||
|
<th align="center">CAZ</th>
|
||||||
|
<th align="center">CXM</th>
|
||||||
|
<th align="center">PEN</th>
|
||||||
|
<th align="center">FOX</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">Staphylococcus aureus</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">Enterococcus faecalis</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">Escherichia coli</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">Klebsiella pneumoniae</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">Pseudomonas aeruginosa</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/interpretive_rules.html">eucast_rules</a></span><span class="op">(</span><span class="va">data</span>, overwrite <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th align="left">mo</th>
|
||||||
|
<th align="center">VAN</th>
|
||||||
|
<th align="center">AMX</th>
|
||||||
|
<th align="center">COL</th>
|
||||||
|
<th align="center">CAZ</th>
|
||||||
|
<th align="center">CXM</th>
|
||||||
|
<th align="center">PEN</th>
|
||||||
|
<th align="center">FOX</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">Staphylococcus aureus</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">Enterococcus faecalis</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">Escherichia coli</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">Klebsiella pneumoniae</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">S</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">Pseudomonas aeruginosa</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">-</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
<td align="center">R</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
|
||||||
|
</nav></aside>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
# Apply EUCAST rules
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
What are EUCAST rules? The European Committee on Antimicrobial
|
||||||
|
Susceptibility Testing (EUCAST) states [on their
|
||||||
|
website](https://www.eucast.org/expert_rules_and_expected_phenotypes):
|
||||||
|
|
||||||
|
> *EUCAST expert rules (see below) are a tabulated collection of expert
|
||||||
|
> knowledge on interpretive rules, expected resistant phenotypes and
|
||||||
|
> expected susceptible phenotypes which should be applied to
|
||||||
|
> antimicrobial susceptibility testing in order to reduce testing,
|
||||||
|
> reduce errors and make appropriate recommendations for reporting
|
||||||
|
> particular resistances.*
|
||||||
|
|
||||||
|
In Europe, a lot of medical microbiological laboratories already apply
|
||||||
|
these rules ([Brown *et al.*,
|
||||||
|
2015](https://www.eurosurveillance.org/content/10.2807/1560-7917.ES2015.20.2.21008)).
|
||||||
|
Our package features their latest insights on expected resistant
|
||||||
|
phenotypes (v1.2, 2023).
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
These rules can be used to discard improbable bug-drug combinations in
|
||||||
|
your data. For example, *Klebsiella* produces beta-lactamase that
|
||||||
|
prevents ampicillin (or amoxicillin) from working against it. In other
|
||||||
|
words, practically every strain of *Klebsiella* is resistant to
|
||||||
|
ampicillin.
|
||||||
|
|
||||||
|
Sometimes, laboratory data can still contain such strains with
|
||||||
|
*Klebsiella* being susceptible to ampicillin. This could be because an
|
||||||
|
antibiogram is available before an identification is available, and the
|
||||||
|
antibiogram is then not re-interpreted based on the identification. The
|
||||||
|
[`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
|
||||||
|
function resolves this, by applying the latest ‘EUCAST Expected
|
||||||
|
Resistant Phenotypes’ guideline:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
oops <- tibble::tibble(
|
||||||
|
mo = c(
|
||||||
|
"Klebsiella pneumoniae",
|
||||||
|
"Escherichia coli"
|
||||||
|
),
|
||||||
|
ampicillin = as.sir("S")
|
||||||
|
)
|
||||||
|
oops
|
||||||
|
#> # A tibble: 2 × 2
|
||||||
|
#> mo ampicillin
|
||||||
|
#> <chr> <sir>
|
||||||
|
#> 1 Klebsiella pneumoniae S
|
||||||
|
#> 2 Escherichia coli S
|
||||||
|
|
||||||
|
eucast_rules(oops, info = FALSE, overwrite = TRUE)
|
||||||
|
#> # A tibble: 2 × 2
|
||||||
|
#> mo ampicillin
|
||||||
|
#> <chr> <sir>
|
||||||
|
#> 1 Klebsiella pneumoniae R
|
||||||
|
#> 2 Escherichia coli S
|
||||||
|
```
|
||||||
|
|
||||||
|
A more convenient function is
|
||||||
|
[`mo_is_intrinsic_resistant()`](https://amr-for-r.org/reference/mo_property.md)
|
||||||
|
that uses the same guideline, but allows to check for one or more
|
||||||
|
specific microorganisms or antimicrobials:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
mo_is_intrinsic_resistant(
|
||||||
|
c("Klebsiella pneumoniae", "Escherichia coli"),
|
||||||
|
"ampicillin"
|
||||||
|
)
|
||||||
|
#> [1] TRUE FALSE
|
||||||
|
|
||||||
|
mo_is_intrinsic_resistant(
|
||||||
|
"Klebsiella pneumoniae",
|
||||||
|
c("ampicillin", "kanamycin")
|
||||||
|
)
|
||||||
|
#> [1] TRUE FALSE
|
||||||
|
```
|
||||||
|
|
||||||
|
EUCAST rules can not only be used for correction, they can also be used
|
||||||
|
for filling in known resistance and susceptibility based on results of
|
||||||
|
other antimicrobials drugs. This process is called *interpretive
|
||||||
|
reading*, and is basically a form of imputation:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
data <- tibble::tibble(
|
||||||
|
mo = c(
|
||||||
|
"Staphylococcus aureus",
|
||||||
|
"Enterococcus faecalis",
|
||||||
|
"Escherichia coli",
|
||||||
|
"Klebsiella pneumoniae",
|
||||||
|
"Pseudomonas aeruginosa"
|
||||||
|
),
|
||||||
|
VAN = "-", # Vancomycin
|
||||||
|
AMX = "-", # Amoxicillin
|
||||||
|
COL = "-", # Colistin
|
||||||
|
CAZ = "-", # Ceftazidime
|
||||||
|
CXM = "-", # Cefuroxime
|
||||||
|
PEN = "S", # Benzylenicillin
|
||||||
|
FOX = "S" # Cefoxitin
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
data
|
||||||
|
```
|
||||||
|
|
||||||
|
| mo | VAN | AMX | COL | CAZ | CXM | PEN | FOX |
|
||||||
|
|:-----------------------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
||||||
|
| Staphylococcus aureus | \- | \- | \- | \- | \- | S | S |
|
||||||
|
| Enterococcus faecalis | \- | \- | \- | \- | \- | S | S |
|
||||||
|
| Escherichia coli | \- | \- | \- | \- | \- | S | S |
|
||||||
|
| Klebsiella pneumoniae | \- | \- | \- | \- | \- | S | S |
|
||||||
|
| Pseudomonas aeruginosa | \- | \- | \- | \- | \- | S | S |
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
eucast_rules(data, overwrite = TRUE)
|
||||||
|
```
|
||||||
|
|
||||||
|
| mo | VAN | AMX | COL | CAZ | CXM | PEN | FOX |
|
||||||
|
|:-----------------------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
||||||
|
| Staphylococcus aureus | \- | S | R | R | S | S | S |
|
||||||
|
| Enterococcus faecalis | \- | \- | R | R | R | S | R |
|
||||||
|
| Escherichia coli | R | \- | \- | \- | \- | R | S |
|
||||||
|
| Klebsiella pneumoniae | R | R | \- | \- | \- | R | S |
|
||||||
|
| Pseudomonas aeruginosa | R | R | \- | \- | R | R | R |
|
||||||
@@ -0,0 +1,254 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Conduct principal component analysis (PCA) for AMR • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png">
|
||||||
|
<link rel="icon" type="”image/svg+xml”" href="../favicon.svg">
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="icon" sizes="any" href="../favicon.ico">
|
||||||
|
<link rel="manifest" href="../site.webmanifest">
|
||||||
|
<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link href="../deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet">
|
||||||
|
<script src="../extra.js"></script><meta property="og:title" content="Conduct principal component analysis (PCA) for AMR">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto">
|
||||||
|
<li class="active nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to">
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json">
|
||||||
|
</form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-article">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="../logo.svg" class="logo" alt=""><h1>Conduct principal component analysis (PCA) for AMR</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/PCA.Rmd" class="external-link"><code>vignettes/PCA.Rmd</code></a></small>
|
||||||
|
<div class="d-none name"><code>PCA.Rmd</code></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p><strong>NOTE: This page will be updated soon, as the pca() function
|
||||||
|
is currently being developed.</strong></p>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="transforming">Transforming<a class="anchor" aria-label="anchor" href="#transforming"></a>
|
||||||
|
</h2>
|
||||||
|
<p>For PCA, we need to transform our AMR data first. This is what the
|
||||||
|
<code>example_isolates</code> data set in this package looks like:</p>
|
||||||
|
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://amr-for-r.org">AMR</a></span><span class="op">)</span></span>
|
||||||
|
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://dplyr.tidyverse.org" class="external-link">dplyr</a></span><span class="op">)</span></span>
|
||||||
|
<span><span class="fu"><a href="https://pillar.r-lib.org/reference/glimpse.html" class="external-link">glimpse</a></span><span class="op">(</span><span class="va">example_isolates</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> Rows: 2,000</span></span>
|
||||||
|
<span><span class="co">#> Columns: 46</span></span>
|
||||||
|
<span><span class="co">#> $ date <span style="color: #949494; font-style: italic;"><date></span> 2002-01-02<span style="color: #949494;">, </span>2002-01-03<span style="color: #949494;">, </span>2002-01-07<span style="color: #949494;">, </span>2002-01-07<span style="color: #949494;">, </span>2002-01-13<span style="color: #949494;">, </span>2…</span></span>
|
||||||
|
<span><span class="co">#> $ patient <span style="color: #949494; font-style: italic;"><chr></span> "A77334"<span style="color: #949494;">, </span>"A77334"<span style="color: #949494;">, </span>"067927"<span style="color: #949494;">, </span>"067927"<span style="color: #949494;">, </span>"067927"<span style="color: #949494;">, </span>"067927"<span style="color: #949494;">, </span>"4…</span></span>
|
||||||
|
<span><span class="co">#> $ age <span style="color: #949494; font-style: italic;"><dbl></span> 65<span style="color: #949494;">, </span>65<span style="color: #949494;">, </span>45<span style="color: #949494;">, </span>45<span style="color: #949494;">, </span>45<span style="color: #949494;">, </span>45<span style="color: #949494;">, </span>78<span style="color: #949494;">, </span>78<span style="color: #949494;">, </span>45<span style="color: #949494;">, </span>79<span style="color: #949494;">, </span>67<span style="color: #949494;">, </span>67<span style="color: #949494;">, </span>71<span style="color: #949494;">, </span>71<span style="color: #949494;">, </span>75<span style="color: #949494;">, </span>50…</span></span>
|
||||||
|
<span><span class="co">#> $ gender <span style="color: #949494; font-style: italic;"><chr></span> "F"<span style="color: #949494;">, </span>"F"<span style="color: #949494;">, </span>"F"<span style="color: #949494;">, </span>"F"<span style="color: #949494;">, </span>"F"<span style="color: #949494;">, </span>"F"<span style="color: #949494;">, </span>"M"<span style="color: #949494;">, </span>"M"<span style="color: #949494;">, </span>"F"<span style="color: #949494;">, </span>"F"<span style="color: #949494;">, </span>"M"<span style="color: #949494;">, </span>"M"<span style="color: #949494;">, </span>"M…</span></span>
|
||||||
|
<span><span class="co">#> $ ward <span style="color: #949494; font-style: italic;"><chr></span> "Clinical"<span style="color: #949494;">, </span>"Clinical"<span style="color: #949494;">, </span>"ICU"<span style="color: #949494;">, </span>"ICU"<span style="color: #949494;">, </span>"ICU"<span style="color: #949494;">, </span>"ICU"<span style="color: #949494;">, </span>"Clinical"…</span></span>
|
||||||
|
<span><span class="co">#> $ mo <span style="color: #949494; font-style: italic;"><mo></span> "B_ESCHR_COLI"<span style="color: #949494;">, </span>"B_ESCHR_COLI"<span style="color: #949494;">, </span>"B_STPHY_EPDR"<span style="color: #949494;">, </span>"B_STPHY_EPDR"<span style="color: #949494;">,</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ PEN <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">,</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ OXA <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ FLC <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R…</span></span>
|
||||||
|
<span><span class="co">#> $ AMX <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">N</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ AMC <span style="color: #949494; font-style: italic;"><sir></span> I<span style="color: #949494;">, </span>I<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>I<span style="color: #949494;">, </span>I<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>I<span style="color: #949494;">, </span>I<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">N</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ AMP <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">N</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ TZP <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ CZO <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">,</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ FEP <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ CXM <span style="color: #949494; font-style: italic;"><sir></span> I<span style="color: #949494;">, </span>I<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S…</span></span>
|
||||||
|
<span><span class="co">#> $ FOX <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">,</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ CTX <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S…</span></span>
|
||||||
|
<span><span class="co">#> $ CAZ <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>…</span></span>
|
||||||
|
<span><span class="co">#> $ CRO <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S…</span></span>
|
||||||
|
<span><span class="co">#> $ GEN <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ TOB <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ AMK <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ KAN <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ TMP <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>…</span></span>
|
||||||
|
<span><span class="co">#> $ SXT <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">N</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ NIT <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">,</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ FOS <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ LNZ <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">N</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ CIP <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S…</span></span>
|
||||||
|
<span><span class="co">#> $ MFX <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ VAN <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>…</span></span>
|
||||||
|
<span><span class="co">#> $ TEC <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">N</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ TCY <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>I<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>I<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>I<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>…</span></span>
|
||||||
|
<span><span class="co">#> $ TGC <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ DOX <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ ERY <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">,</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ CLI <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ AZM <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>S<span style="color: #949494;">,</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ IPM <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>S<span style="color: #949494;">, </span>S…</span></span>
|
||||||
|
<span><span class="co">#> $ MEM <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ MTR <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ CHL <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ COL <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>…</span></span>
|
||||||
|
<span><span class="co">#> $ MUP <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span>…</span></span>
|
||||||
|
<span><span class="co">#> $ RIF <span style="color: #949494; font-style: italic;"><sir></span> R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span><span style="color: #BB0000;">NA</span><span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span>R<span style="color: #949494;">, </span><span style="color: #BB0000;">N</span>…</span></span></code></pre></div>
|
||||||
|
<p>Now to transform this to a data set with only resistance percentages
|
||||||
|
per taxonomic order and genus:</p>
|
||||||
|
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">resistance_data</span> <span class="op"><-</span> <span class="va">example_isolates</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span></span>
|
||||||
|
<span> order <span class="op">=</span> <span class="fu"><a href="../reference/mo_property.html">mo_order</a></span><span class="op">(</span><span class="va">mo</span><span class="op">)</span>, <span class="co"># group on anything, like order</span></span>
|
||||||
|
<span> genus <span class="op">=</span> <span class="fu"><a href="../reference/mo_property.html">mo_genus</a></span><span class="op">(</span><span class="va">mo</span><span class="op">)</span></span>
|
||||||
|
<span> <span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># and genus as we do here</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/summarise_all.html" class="external-link">summarise_if</a></span><span class="op">(</span><span class="va">is.sir</span>, <span class="va">resistance</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># then get resistance of all drugs</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/select.html" class="external-link">select</a></span><span class="op">(</span></span>
|
||||||
|
<span> <span class="va">order</span>, <span class="va">genus</span>, <span class="va">AMC</span>, <span class="va">CXM</span>, <span class="va">CTX</span>,</span>
|
||||||
|
<span> <span class="va">CAZ</span>, <span class="va">GEN</span>, <span class="va">TOB</span>, <span class="va">TMP</span>, <span class="va">SXT</span></span>
|
||||||
|
<span> <span class="op">)</span> <span class="co"># and select only relevant columns</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">ℹ</span> `resistance()` assumes the EUCAST guideline and thus considers the 'I'</span></span>
|
||||||
|
<span><span class="co">#> category susceptible. Set the `guideline` argument or the `AMR_guideline`</span></span>
|
||||||
|
<span><span class="co">#> option to either "CLSI" or "EUCAST", see `?AMR-options`.</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">ℹ</span> This message will be shown once per session.</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="fu"><a href="https://rdrr.io/r/utils/head.html" class="external-link">head</a></span><span class="op">(</span><span class="va">resistance_data</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 6 × 10</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># Groups: order [5]</span></span></span>
|
||||||
|
<span><span class="co">#> order genus AMC CXM CTX CAZ GEN TOB TMP SXT</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> (unknown order) (unknown ge… <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> Actinomycetales Schaalia <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">3</span> Bacteroidales Bacteroides <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">4</span> Campylobacterales Campylobact… <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">5</span> Caryophanales Gemella <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">6</span> Caryophanales Listeria <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span></span></span></code></pre></div>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="perform-principal-component-analysis">Perform principal component analysis<a class="anchor" aria-label="anchor" href="#perform-principal-component-analysis"></a>
|
||||||
|
</h2>
|
||||||
|
<p>The new <code><a href="../reference/pca.html">pca()</a></code> function will automatically filter on rows
|
||||||
|
that contain numeric values in all selected variables, so we now only
|
||||||
|
need to do:</p>
|
||||||
|
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">pca_result</span> <span class="op"><-</span> <span class="fu"><a href="../reference/pca.html">pca</a></span><span class="op">(</span><span class="va">resistance_data</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">ℹ</span> Columns selected for PCA: <span style="color: #0000BB;">"\033[1mAMC\033[22m"</span>, <span style="color: #0000BB;">"\033[1mCAZ\033[22m"</span>,</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #0000BB;">"\033[1mCTX\033[22m"</span>, <span style="color: #0000BB;">"\033[1mCXM\033[22m"</span>, <span style="color: #0000BB;">"\033[1mGEN\033[22m"</span>,</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #0000BB;">"\033[1mSXT\033[22m"</span>, <span style="color: #0000BB;">"\033[1mTMP\033[22m"</span>, and <span style="color: #0000BB;">"\033[1mTOB\033[22m"</span>. Total</span></span>
|
||||||
|
<span><span class="co">#> observations available: 7.</span></span></code></pre></div>
|
||||||
|
<p>The result can be reviewed with the good old <code><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary()</a></code>
|
||||||
|
function:</p>
|
||||||
|
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/summary.html" class="external-link">summary</a></span><span class="op">(</span><span class="va">pca_result</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> Groups (n=4, named as 'order'):</span></span>
|
||||||
|
<span><span class="co">#> [1] "Caryophanales" "Enterobacterales" "Lactobacillales" "Pseudomonadales"</span></span>
|
||||||
|
<span><span class="co">#> Importance of components:</span></span>
|
||||||
|
<span><span class="co">#> PC1 PC2 PC3 PC4 PC5 PC6 PC7</span></span>
|
||||||
|
<span><span class="co">#> Standard deviation 2.1539 1.6807 0.6138 0.33879 0.20808 0.03140 1.232e-16</span></span>
|
||||||
|
<span><span class="co">#> Proportion of Variance 0.5799 0.3531 0.0471 0.01435 0.00541 0.00012 0.000e+00</span></span>
|
||||||
|
<span><span class="co">#> Cumulative Proportion 0.5799 0.9330 0.9801 0.99446 0.99988 1.00000 1.000e+00</span></span></code></pre></div>
|
||||||
|
<pre><code><span><span class="co">#> Groups (n=4, named as 'order'):</span></span>
|
||||||
|
<span><span class="co">#> [1] "Caryophanales" "Enterobacterales" "Lactobacillales" "Pseudomonadales"</span></span></code></pre>
|
||||||
|
<p>Good news. The first two components explain a total of 93.3% of the
|
||||||
|
variance (see the PC1 and PC2 values of the <em>Proportion of
|
||||||
|
Variance</em>. We can create a so-called biplot with the base R
|
||||||
|
<code><a href="https://rdrr.io/r/stats/biplot.html" class="external-link">biplot()</a></code> function, to see which antimicrobial resistance
|
||||||
|
per drug explain the difference per microorganism.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="plotting-the-results">Plotting the results<a class="anchor" aria-label="anchor" href="#plotting-the-results"></a>
|
||||||
|
</h2>
|
||||||
|
<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/biplot.html" class="external-link">biplot</a></span><span class="op">(</span><span class="va">pca_result</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="PCA_files/figure-html/unnamed-chunk-5-1.png" class="r-plt" alt="" width="750"></p>
|
||||||
|
<p>But we can’t see the explanation of the points. Perhaps this works
|
||||||
|
better with our new <code><a href="../reference/ggplot_pca.html">ggplot_pca()</a></code> function, that
|
||||||
|
automatically adds the right labels and even groups:</p>
|
||||||
|
<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/ggplot_pca.html">ggplot_pca</a></span><span class="op">(</span><span class="va">pca_result</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="PCA_files/figure-html/unnamed-chunk-6-1.png" class="r-plt" alt="" width="750"></p>
|
||||||
|
<p>You can also print an ellipse per group, and edit the appearance:</p>
|
||||||
|
<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/ggplot_pca.html">ggplot_pca</a></span><span class="op">(</span><span class="va">pca_result</span>, ellipse <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<span> <span class="fu">ggplot2</span><span class="fu">::</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"An AMR/PCA biplot!"</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="PCA_files/figure-html/unnamed-chunk-7-1.png" class="r-plt" alt="" width="750"></p>
|
||||||
|
</div>
|
||||||
|
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
|
||||||
|
</nav></aside>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
# Conduct principal component analysis (PCA) for AMR
|
||||||
|
|
||||||
|
**NOTE: This page will be updated soon, as the pca() function is
|
||||||
|
currently being developed.**
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
## Transforming
|
||||||
|
|
||||||
|
For PCA, we need to transform our AMR data first. This is what the
|
||||||
|
`example_isolates` data set in this package looks like:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
library(AMR)
|
||||||
|
library(dplyr)
|
||||||
|
glimpse(example_isolates)
|
||||||
|
#> Rows: 2,000
|
||||||
|
#> Columns: 46
|
||||||
|
#> $ date <date> 2002-01-02, 2002-01-03, 2002-01-07, 2002-01-07, 2002-01-13, 2…
|
||||||
|
#> $ patient <chr> "A77334", "A77334", "067927", "067927", "067927", "067927", "4…
|
||||||
|
#> $ age <dbl> 65, 65, 45, 45, 45, 45, 78, 78, 45, 79, 67, 67, 71, 71, 75, 50…
|
||||||
|
#> $ gender <chr> "F", "F", "F", "F", "F", "F", "M", "M", "F", "F", "M", "M", "M…
|
||||||
|
#> $ ward <chr> "Clinical", "Clinical", "ICU", "ICU", "ICU", "ICU", "Clinical"…
|
||||||
|
#> $ mo <mo> "B_ESCHR_COLI", "B_ESCHR_COLI", "B_STPHY_EPDR", "B_STPHY_EPDR",…
|
||||||
|
#> $ PEN <sir> R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, S,…
|
||||||
|
#> $ OXA <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ FLC <sir> NA, NA, R, R, R, R, S, S, R, S, S, S, NA, NA, NA, NA, NA, R, R…
|
||||||
|
#> $ AMX <sir> NA, NA, NA, NA, NA, NA, R, R, NA, NA, NA, NA, NA, NA, R, NA, N…
|
||||||
|
#> $ AMC <sir> I, I, NA, NA, NA, NA, S, S, NA, NA, S, S, I, I, R, I, I, NA, N…
|
||||||
|
#> $ AMP <sir> NA, NA, NA, NA, NA, NA, R, R, NA, NA, NA, NA, NA, NA, R, NA, N…
|
||||||
|
#> $ TZP <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ CZO <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, NA,…
|
||||||
|
#> $ FEP <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ CXM <sir> I, I, R, R, R, R, S, S, R, S, S, S, S, S, NA, S, S, R, R, S, S…
|
||||||
|
#> $ FOX <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, NA,…
|
||||||
|
#> $ CTX <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S…
|
||||||
|
#> $ CAZ <sir> NA, NA, R, R, R, R, R, R, R, R, R, R, NA, NA, NA, S, S, R, R, …
|
||||||
|
#> $ CRO <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S…
|
||||||
|
#> $ GEN <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ TOB <sir> NA, NA, NA, NA, NA, NA, S, S, NA, NA, NA, NA, S, S, NA, NA, NA…
|
||||||
|
#> $ AMK <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ KAN <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ TMP <sir> R, R, S, S, R, R, R, R, S, S, NA, NA, S, S, S, S, S, R, R, R, …
|
||||||
|
#> $ SXT <sir> R, R, S, S, NA, NA, NA, NA, S, S, NA, NA, S, S, S, S, S, NA, N…
|
||||||
|
#> $ NIT <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R,…
|
||||||
|
#> $ FOS <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ LNZ <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N…
|
||||||
|
#> $ CIP <sir> NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, NA, NA, NA, NA, S, S…
|
||||||
|
#> $ MFX <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ VAN <sir> R, R, S, S, S, S, S, S, S, S, NA, NA, R, R, R, R, R, S, S, S, …
|
||||||
|
#> $ TEC <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N…
|
||||||
|
#> $ TCY <sir> R, R, S, S, S, S, S, S, S, I, S, S, NA, NA, I, R, R, S, I, R, …
|
||||||
|
#> $ TGC <sir> NA, NA, S, S, S, S, S, S, S, NA, S, S, NA, NA, NA, R, R, S, NA…
|
||||||
|
#> $ DOX <sir> NA, NA, S, S, S, S, S, S, S, NA, S, S, NA, NA, NA, R, R, S, NA…
|
||||||
|
#> $ ERY <sir> R, R, R, R, R, R, S, S, R, S, S, S, R, R, R, R, R, R, R, R, S,…
|
||||||
|
#> $ CLI <sir> R, R, NA, NA, NA, R, NA, NA, NA, NA, NA, NA, R, R, R, R, R, NA…
|
||||||
|
#> $ AZM <sir> R, R, R, R, R, R, S, S, R, S, S, S, R, R, R, R, R, R, R, R, S,…
|
||||||
|
#> $ IPM <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S…
|
||||||
|
#> $ MEM <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ MTR <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ CHL <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ COL <sir> NA, NA, R, R, R, R, R, R, R, R, R, R, NA, NA, NA, R, R, R, R, …
|
||||||
|
#> $ MUP <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
|
||||||
|
#> $ RIF <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N…
|
||||||
|
```
|
||||||
|
|
||||||
|
Now to transform this to a data set with only resistance percentages per
|
||||||
|
taxonomic order and genus:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
resistance_data <- example_isolates %>%
|
||||||
|
group_by(
|
||||||
|
order = mo_order(mo), # group on anything, like order
|
||||||
|
genus = mo_genus(mo)
|
||||||
|
) %>% # and genus as we do here
|
||||||
|
summarise_if(is.sir, resistance) %>% # then get resistance of all drugs
|
||||||
|
select(
|
||||||
|
order, genus, AMC, CXM, CTX,
|
||||||
|
CAZ, GEN, TOB, TMP, SXT
|
||||||
|
) # and select only relevant columns
|
||||||
|
#> ℹ `resistance()` assumes the EUCAST guideline and thus considers the 'I'
|
||||||
|
#> category susceptible. Set the `guideline` argument or the `AMR_guideline`
|
||||||
|
#> option to either "CLSI" or "EUCAST", see `?AMR-options`.
|
||||||
|
#> ℹ This message will be shown once per session.
|
||||||
|
|
||||||
|
head(resistance_data)
|
||||||
|
#> # A tibble: 6 × 10
|
||||||
|
#> # Groups: order [5]
|
||||||
|
#> order genus AMC CXM CTX CAZ GEN TOB TMP SXT
|
||||||
|
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
|
||||||
|
#> 1 (unknown order) (unknown ge… NA NA NA NA NA NA NA NA
|
||||||
|
#> 2 Actinomycetales Schaalia NA NA NA NA NA NA NA NA
|
||||||
|
#> 3 Bacteroidales Bacteroides NA NA NA NA NA NA NA NA
|
||||||
|
#> 4 Campylobacterales Campylobact… NA NA NA NA NA NA NA NA
|
||||||
|
#> 5 Caryophanales Gemella NA NA NA NA NA NA NA NA
|
||||||
|
#> 6 Caryophanales Listeria NA NA NA NA NA NA NA NA
|
||||||
|
```
|
||||||
|
|
||||||
|
## Perform principal component analysis
|
||||||
|
|
||||||
|
The new [`pca()`](https://amr-for-r.org/reference/pca.md) function will
|
||||||
|
automatically filter on rows that contain numeric values in all selected
|
||||||
|
variables, so we now only need to do:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
pca_result <- pca(resistance_data)
|
||||||
|
#> ℹ Columns selected for PCA: "\033[1mAMC\033[22m", "\033[1mCAZ\033[22m",
|
||||||
|
#> "\033[1mCTX\033[22m", "\033[1mCXM\033[22m", "\033[1mGEN\033[22m",
|
||||||
|
#> "\033[1mSXT\033[22m", "\033[1mTMP\033[22m", and "\033[1mTOB\033[22m". Total
|
||||||
|
#> observations available: 7.
|
||||||
|
```
|
||||||
|
|
||||||
|
The result can be reviewed with the good old
|
||||||
|
[`summary()`](https://rdrr.io/r/base/summary.html) function:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
summary(pca_result)
|
||||||
|
#> Groups (n=4, named as 'order'):
|
||||||
|
#> [1] "Caryophanales" "Enterobacterales" "Lactobacillales" "Pseudomonadales"
|
||||||
|
#> Importance of components:
|
||||||
|
#> PC1 PC2 PC3 PC4 PC5 PC6 PC7
|
||||||
|
#> Standard deviation 2.1539 1.6807 0.6138 0.33879 0.20808 0.03140 1.232e-16
|
||||||
|
#> Proportion of Variance 0.5799 0.3531 0.0471 0.01435 0.00541 0.00012 0.000e+00
|
||||||
|
#> Cumulative Proportion 0.5799 0.9330 0.9801 0.99446 0.99988 1.00000 1.000e+00
|
||||||
|
```
|
||||||
|
|
||||||
|
#> Groups (n=4, named as 'order'):
|
||||||
|
#> [1] "Caryophanales" "Enterobacterales" "Lactobacillales" "Pseudomonadales"
|
||||||
|
|
||||||
|
Good news. The first two components explain a total of 93.3% of the
|
||||||
|
variance (see the PC1 and PC2 values of the *Proportion of Variance*. We
|
||||||
|
can create a so-called biplot with the base R
|
||||||
|
[`biplot()`](https://rdrr.io/r/stats/biplot.html) function, to see which
|
||||||
|
antimicrobial resistance per drug explain the difference per
|
||||||
|
microorganism.
|
||||||
|
|
||||||
|
## Plotting the results
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
biplot(pca_result)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
But we can’t see the explanation of the points. Perhaps this works
|
||||||
|
better with our new
|
||||||
|
[`ggplot_pca()`](https://amr-for-r.org/reference/ggplot_pca.md)
|
||||||
|
function, that automatically adds the right labels and even groups:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
ggplot_pca(pca_result)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
You can also print an ellipse per group, and edit the appearance:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
ggplot_pca(pca_result, ellipse = TRUE) +
|
||||||
|
ggplot2::labs(title = "An AMR/PCA biplot!")
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 112 KiB |
|
After Width: | Height: | Size: 115 KiB |
@@ -0,0 +1,343 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Work with WHONET data • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png">
|
||||||
|
<link rel="icon" type="”image/svg+xml”" href="../favicon.svg">
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="icon" sizes="any" href="../favicon.ico">
|
||||||
|
<link rel="manifest" href="../site.webmanifest">
|
||||||
|
<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link href="../deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet">
|
||||||
|
<script src="../extra.js"></script><meta property="og:title" content="Work with WHONET data">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto">
|
||||||
|
<li class="active nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to">
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json">
|
||||||
|
</form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-article">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="../logo.svg" class="logo" alt=""><h1>Work with WHONET data</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/WHONET.Rmd" class="external-link"><code>vignettes/WHONET.Rmd</code></a></small>
|
||||||
|
<div class="d-none name"><code>WHONET.Rmd</code></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="import-of-data">Import of data<a class="anchor" aria-label="anchor" href="#import-of-data"></a>
|
||||||
|
</h3>
|
||||||
|
<p>This tutorial assumes you already imported the WHONET data with
|
||||||
|
e.g. the <a href="https://readxl.tidyverse.org/" class="external-link"><code>readxl</code>
|
||||||
|
package</a>. In RStudio, this can be done using the menu button ‘Import
|
||||||
|
Dataset’ in the tab ‘Environment’. Choose the option ‘From Excel’ and
|
||||||
|
select your exported file. Make sure date fields are imported
|
||||||
|
correctly.</p>
|
||||||
|
<p>An example syntax could look like this:</p>
|
||||||
|
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://readxl.tidyverse.org" class="external-link">readxl</a></span><span class="op">)</span></span>
|
||||||
|
<span><span class="va">data</span> <span class="op"><-</span> <span class="fu"><a href="https://readxl.tidyverse.org/reference/read_excel.html" class="external-link">read_excel</a></span><span class="op">(</span>path <span class="op">=</span> <span class="st">"path/to/your/file.xlsx"</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p>This package comes with an <a href="https://amr-for-r.org/reference/WHONET.html">example data set
|
||||||
|
<code>WHONET</code></a>. We will use it for this analysis.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="preparation">Preparation<a class="anchor" aria-label="anchor" href="#preparation"></a>
|
||||||
|
</h3>
|
||||||
|
<p>First, load the relevant packages if you did not yet did this. I use
|
||||||
|
the tidyverse for all of my analyses. All of them. If you don’t know it
|
||||||
|
yet, I suggest you read about it on their website: <a href="https://www.tidyverse.org/" class="external-link uri">https://www.tidyverse.org/</a>.</p>
|
||||||
|
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://dplyr.tidyverse.org" class="external-link">dplyr</a></span><span class="op">)</span> <span class="co"># part of tidyverse</span></span>
|
||||||
|
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://ggplot2.tidyverse.org" class="external-link">ggplot2</a></span><span class="op">)</span> <span class="co"># part of tidyverse</span></span>
|
||||||
|
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://amr-for-r.org">AMR</a></span><span class="op">)</span> <span class="co"># this package</span></span>
|
||||||
|
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://msberends.github.io/cleaner/" class="external-link">cleaner</a></span><span class="op">)</span> <span class="co"># to create frequency tables</span></span></code></pre></div>
|
||||||
|
<p>We will have to transform some variables to simplify and automate the
|
||||||
|
analysis:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Microorganisms should be transformed to our own microorganism codes
|
||||||
|
(called an <code>mo</code>) using <a href="https://amr-for-r.org/reference/catalogue_of_life">our Catalogue
|
||||||
|
of Life reference data set</a>, which contains all ~70,000
|
||||||
|
microorganisms from the taxonomic kingdoms Bacteria, Fungi and Protozoa.
|
||||||
|
We do the tranformation with <code><a href="../reference/as.mo.html">as.mo()</a></code>. This function also
|
||||||
|
recognises almost all WHONET abbreviations of microorganisms.</li>
|
||||||
|
<li>Antimicrobial results or interpretations have to be clean and valid.
|
||||||
|
In other words, they should only contain values <code>"S"</code>,
|
||||||
|
<code>"I"</code> or <code>"R"</code>. That is exactly where the
|
||||||
|
<code><a href="../reference/as.sir.html">as.sir()</a></code> function is for.</li>
|
||||||
|
</ul>
|
||||||
|
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># transform variables</span></span>
|
||||||
|
<span><span class="va">data</span> <span class="op"><-</span> <span class="va">WHONET</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="co"># get microbial ID based on given organism</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate</a></span><span class="op">(</span>mo <span class="op">=</span> <span class="fu"><a href="../reference/as.mo.html">as.mo</a></span><span class="op">(</span><span class="va">Organism</span><span class="op">)</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="co"># transform everything from "AMP_ND10" to "CIP_EE" to the new `sir` class</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate_all.html" class="external-link">mutate_at</a></span><span class="op">(</span><span class="fu"><a href="https://dplyr.tidyverse.org/reference/vars.html" class="external-link">vars</a></span><span class="op">(</span><span class="va">AMP_ND10</span><span class="op">:</span><span class="va">CIP_EE</span><span class="op">)</span>, <span class="va">as.sir</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p>No errors or warnings, so all values are transformed succesfully.</p>
|
||||||
|
<p>We also created a package dedicated to data cleaning and checking,
|
||||||
|
called the <code>cleaner</code> package. Its <code><a href="https://msberends.github.io/cleaner/reference/freq.html" class="external-link">freq()</a></code>
|
||||||
|
function can be used to create frequency tables.</p>
|
||||||
|
<p>So let’s check our data, with a couple of frequency tables:</p>
|
||||||
|
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># our newly created `mo` variable, put in the mo_name() function</span></span>
|
||||||
|
<span><span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="fu"><a href="https://msberends.github.io/cleaner/reference/freq.html" class="external-link">freq</a></span><span class="op">(</span><span class="fu"><a href="../reference/mo_property.html">mo_name</a></span><span class="op">(</span><span class="va">mo</span><span class="op">)</span>, nmax <span class="op">=</span> <span class="fl">10</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><strong>Frequency table</strong></p>
|
||||||
|
<p>Class: character<br>
|
||||||
|
Length: 500<br>
|
||||||
|
Available: 500 (100%, NA: 0 = 0%)<br>
|
||||||
|
Unique: 38</p>
|
||||||
|
<p>Shortest: 11<br>
|
||||||
|
Longest: 40</p>
|
||||||
|
<table class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="4%">
|
||||||
|
<col width="47%">
|
||||||
|
<col width="7%">
|
||||||
|
<col width="10%">
|
||||||
|
<col width="13%">
|
||||||
|
<col width="15%">
|
||||||
|
</colgroup>
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th align="left"></th>
|
||||||
|
<th align="left">Item</th>
|
||||||
|
<th align="right">Count</th>
|
||||||
|
<th align="right">Percent</th>
|
||||||
|
<th align="right">Cum. Count</th>
|
||||||
|
<th align="right">Cum. Percent</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">1</td>
|
||||||
|
<td align="left">Escherichia coli</td>
|
||||||
|
<td align="right">245</td>
|
||||||
|
<td align="right">49.0%</td>
|
||||||
|
<td align="right">245</td>
|
||||||
|
<td align="right">49.0%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">2</td>
|
||||||
|
<td align="left">Coagulase-negative Staphylococcus (CoNS)</td>
|
||||||
|
<td align="right">74</td>
|
||||||
|
<td align="right">14.8%</td>
|
||||||
|
<td align="right">319</td>
|
||||||
|
<td align="right">63.8%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">3</td>
|
||||||
|
<td align="left">Staphylococcus epidermidis</td>
|
||||||
|
<td align="right">38</td>
|
||||||
|
<td align="right">7.6%</td>
|
||||||
|
<td align="right">357</td>
|
||||||
|
<td align="right">71.4%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">4</td>
|
||||||
|
<td align="left">Streptococcus pneumoniae</td>
|
||||||
|
<td align="right">31</td>
|
||||||
|
<td align="right">6.2%</td>
|
||||||
|
<td align="right">388</td>
|
||||||
|
<td align="right">77.6%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">5</td>
|
||||||
|
<td align="left">Staphylococcus hominis</td>
|
||||||
|
<td align="right">21</td>
|
||||||
|
<td align="right">4.2%</td>
|
||||||
|
<td align="right">409</td>
|
||||||
|
<td align="right">81.8%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">6</td>
|
||||||
|
<td align="left">Proteus mirabilis</td>
|
||||||
|
<td align="right">9</td>
|
||||||
|
<td align="right">1.8%</td>
|
||||||
|
<td align="right">418</td>
|
||||||
|
<td align="right">83.6%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">7</td>
|
||||||
|
<td align="left">Enterococcus faecium</td>
|
||||||
|
<td align="right">8</td>
|
||||||
|
<td align="right">1.6%</td>
|
||||||
|
<td align="right">426</td>
|
||||||
|
<td align="right">85.2%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">8</td>
|
||||||
|
<td align="left">Staphylococcus capitis urealyticus</td>
|
||||||
|
<td align="right">8</td>
|
||||||
|
<td align="right">1.6%</td>
|
||||||
|
<td align="right">434</td>
|
||||||
|
<td align="right">86.8%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">9</td>
|
||||||
|
<td align="left">Enterobacter cloacae</td>
|
||||||
|
<td align="right">5</td>
|
||||||
|
<td align="right">1.0%</td>
|
||||||
|
<td align="right">439</td>
|
||||||
|
<td align="right">87.8%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">10</td>
|
||||||
|
<td align="left">Enterococcus columbae</td>
|
||||||
|
<td align="right">4</td>
|
||||||
|
<td align="right">0.8%</td>
|
||||||
|
<td align="right">443</td>
|
||||||
|
<td align="right">88.6%</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>(omitted 28 entries, n = 57 [11.4%])</p>
|
||||||
|
<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># our transformed antibiotic columns</span></span>
|
||||||
|
<span><span class="co"># amoxicillin/clavulanic acid (J01CR02) as an example</span></span>
|
||||||
|
<span><span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="fu"><a href="https://msberends.github.io/cleaner/reference/freq.html" class="external-link">freq</a></span><span class="op">(</span><span class="va">AMC_ND2</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">ℹ</span> `susceptibility()` assumes the EUCAST guideline and thus considers the 'I'</span></span>
|
||||||
|
<span><span class="co">#> category susceptible. Set the `guideline` argument or the `AMR_guideline`</span></span>
|
||||||
|
<span><span class="co">#> option to either "CLSI" or "EUCAST", see `?AMR-options`.</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">ℹ</span> This message will be shown once per session.</span></span></code></pre></div>
|
||||||
|
<p><strong>Frequency table</strong></p>
|
||||||
|
<p>Class: factor > ordered > sir (numeric)<br>
|
||||||
|
Length: 500<br>
|
||||||
|
Levels: 8: S < SDD < I < R < NI < WT < NWT <
|
||||||
|
NS<br>
|
||||||
|
Available: 481 (96.2%, NA: 19 = 3.8%)<br>
|
||||||
|
Unique: 3</p>
|
||||||
|
<p>Drug: Amoxicillin/clavulanic acid (AMC, J01CR02/QJ01CR02)<br>
|
||||||
|
Drug group: Aminopenicillins<br>
|
||||||
|
%SI: 78.59%</p>
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th align="left"></th>
|
||||||
|
<th align="left">Item</th>
|
||||||
|
<th align="right">Count</th>
|
||||||
|
<th align="right">Percent</th>
|
||||||
|
<th align="right">Cum. Count</th>
|
||||||
|
<th align="right">Cum. Percent</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">1</td>
|
||||||
|
<td align="left">S</td>
|
||||||
|
<td align="right">356</td>
|
||||||
|
<td align="right">74.01%</td>
|
||||||
|
<td align="right">356</td>
|
||||||
|
<td align="right">74.01%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">2</td>
|
||||||
|
<td align="left">R</td>
|
||||||
|
<td align="right">103</td>
|
||||||
|
<td align="right">21.41%</td>
|
||||||
|
<td align="right">459</td>
|
||||||
|
<td align="right">95.43%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">3</td>
|
||||||
|
<td align="left">I</td>
|
||||||
|
<td align="right">22</td>
|
||||||
|
<td align="right">4.57%</td>
|
||||||
|
<td align="right">481</td>
|
||||||
|
<td align="right">100.00%</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="a-first-glimpse-at-results">A first glimpse at results<a class="anchor" aria-label="anchor" href="#a-first-glimpse-at-results"></a>
|
||||||
|
</h3>
|
||||||
|
<p>An easy <code>ggplot</code> will already give a lot of information,
|
||||||
|
using the included <code><a href="../reference/ggplot_sir.html">ggplot_sir()</a></code> function:</p>
|
||||||
|
<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">Country</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/select.html" class="external-link">select</a></span><span class="op">(</span><span class="va">Country</span>, <span class="va">AMP_ND2</span>, <span class="va">AMC_ED20</span>, <span class="va">CAZ_ED10</span>, <span class="va">CIP_ED5</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu"><a href="../reference/ggplot_sir.html">ggplot_sir</a></span><span class="op">(</span>translate_ab <span class="op">=</span> <span class="st">"ab"</span>, facet <span class="op">=</span> <span class="st">"Country"</span>, datalabels <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="WHONET_files/figure-html/unnamed-chunk-7-1.png" class="r-plt" alt="" width="720"></p>
|
||||||
|
</div>
|
||||||
|
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
|
||||||
|
</nav></aside>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
# Work with WHONET data
|
||||||
|
|
||||||
|
### Import of data
|
||||||
|
|
||||||
|
This tutorial assumes you already imported the WHONET data with e.g. the
|
||||||
|
[`readxl` package](https://readxl.tidyverse.org/). In RStudio, this can
|
||||||
|
be done using the menu button ‘Import Dataset’ in the tab ‘Environment’.
|
||||||
|
Choose the option ‘From Excel’ and select your exported file. Make sure
|
||||||
|
date fields are imported correctly.
|
||||||
|
|
||||||
|
An example syntax could look like this:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
library(readxl)
|
||||||
|
data <- read_excel(path = "path/to/your/file.xlsx")
|
||||||
|
```
|
||||||
|
|
||||||
|
This package comes with an [example data set
|
||||||
|
`WHONET`](https://amr-for-r.org/reference/WHONET.html). We will use it
|
||||||
|
for this analysis.
|
||||||
|
|
||||||
|
### Preparation
|
||||||
|
|
||||||
|
First, load the relevant packages if you did not yet did this. I use the
|
||||||
|
tidyverse for all of my analyses. All of them. If you don’t know it yet,
|
||||||
|
I suggest you read about it on their website:
|
||||||
|
<https://www.tidyverse.org/>.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
library(dplyr) # part of tidyverse
|
||||||
|
library(ggplot2) # part of tidyverse
|
||||||
|
library(AMR) # this package
|
||||||
|
library(cleaner) # to create frequency tables
|
||||||
|
```
|
||||||
|
|
||||||
|
We will have to transform some variables to simplify and automate the
|
||||||
|
analysis:
|
||||||
|
|
||||||
|
- Microorganisms should be transformed to our own microorganism codes
|
||||||
|
(called an `mo`) using [our Catalogue of Life reference data
|
||||||
|
set](https://amr-for-r.org/reference/catalogue_of_life), which
|
||||||
|
contains all ~70,000 microorganisms from the taxonomic kingdoms
|
||||||
|
Bacteria, Fungi and Protozoa. We do the tranformation with
|
||||||
|
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md). This function
|
||||||
|
also recognises almost all WHONET abbreviations of microorganisms.
|
||||||
|
- Antimicrobial results or interpretations have to be clean and valid.
|
||||||
|
In other words, they should only contain values `"S"`, `"I"` or `"R"`.
|
||||||
|
That is exactly where the
|
||||||
|
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) function is
|
||||||
|
for.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# transform variables
|
||||||
|
data <- WHONET %>%
|
||||||
|
# get microbial ID based on given organism
|
||||||
|
mutate(mo = as.mo(Organism)) %>%
|
||||||
|
# transform everything from "AMP_ND10" to "CIP_EE" to the new `sir` class
|
||||||
|
mutate_at(vars(AMP_ND10:CIP_EE), as.sir)
|
||||||
|
```
|
||||||
|
|
||||||
|
No errors or warnings, so all values are transformed succesfully.
|
||||||
|
|
||||||
|
We also created a package dedicated to data cleaning and checking,
|
||||||
|
called the `cleaner` package. Its
|
||||||
|
[`freq()`](https://msberends.github.io/cleaner/reference/freq.html)
|
||||||
|
function can be used to create frequency tables.
|
||||||
|
|
||||||
|
So let’s check our data, with a couple of frequency tables:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# our newly created `mo` variable, put in the mo_name() function
|
||||||
|
data %>% freq(mo_name(mo), nmax = 10)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Frequency table**
|
||||||
|
|
||||||
|
Class: character
|
||||||
|
Length: 500
|
||||||
|
Available: 500 (100%, NA: 0 = 0%)
|
||||||
|
Unique: 38
|
||||||
|
|
||||||
|
Shortest: 11
|
||||||
|
Longest: 40
|
||||||
|
|
||||||
|
| | Item | Count | Percent | Cum. Count | Cum. Percent |
|
||||||
|
|:---|:---|---:|---:|---:|---:|
|
||||||
|
| 1 | Escherichia coli | 245 | 49.0% | 245 | 49.0% |
|
||||||
|
| 2 | Coagulase-negative Staphylococcus (CoNS) | 74 | 14.8% | 319 | 63.8% |
|
||||||
|
| 3 | Staphylococcus epidermidis | 38 | 7.6% | 357 | 71.4% |
|
||||||
|
| 4 | Streptococcus pneumoniae | 31 | 6.2% | 388 | 77.6% |
|
||||||
|
| 5 | Staphylococcus hominis | 21 | 4.2% | 409 | 81.8% |
|
||||||
|
| 6 | Proteus mirabilis | 9 | 1.8% | 418 | 83.6% |
|
||||||
|
| 7 | Enterococcus faecium | 8 | 1.6% | 426 | 85.2% |
|
||||||
|
| 8 | Staphylococcus capitis urealyticus | 8 | 1.6% | 434 | 86.8% |
|
||||||
|
| 9 | Enterobacter cloacae | 5 | 1.0% | 439 | 87.8% |
|
||||||
|
| 10 | Enterococcus columbae | 4 | 0.8% | 443 | 88.6% |
|
||||||
|
|
||||||
|
(omitted 28 entries, n = 57 \[11.4%\])
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
# our transformed antibiotic columns
|
||||||
|
# amoxicillin/clavulanic acid (J01CR02) as an example
|
||||||
|
data %>% freq(AMC_ND2)
|
||||||
|
#> ℹ `susceptibility()` assumes the EUCAST guideline and thus considers the 'I'
|
||||||
|
#> category susceptible. Set the `guideline` argument or the `AMR_guideline`
|
||||||
|
#> option to either "CLSI" or "EUCAST", see `?AMR-options`.
|
||||||
|
#> ℹ This message will be shown once per session.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Frequency table**
|
||||||
|
|
||||||
|
Class: factor \> ordered \> sir (numeric)
|
||||||
|
Length: 500
|
||||||
|
Levels: 8: S \< SDD \< I \< R \< NI \< WT \< NWT \< NS
|
||||||
|
Available: 481 (96.2%, NA: 19 = 3.8%)
|
||||||
|
Unique: 3
|
||||||
|
|
||||||
|
Drug: Amoxicillin/clavulanic acid (AMC, J01CR02/QJ01CR02)
|
||||||
|
Drug group: Aminopenicillins
|
||||||
|
%SI: 78.59%
|
||||||
|
|
||||||
|
| | Item | Count | Percent | Cum. Count | Cum. Percent |
|
||||||
|
|:----|:-----|------:|--------:|-----------:|-------------:|
|
||||||
|
| 1 | S | 356 | 74.01% | 356 | 74.01% |
|
||||||
|
| 2 | R | 103 | 21.41% | 459 | 95.43% |
|
||||||
|
| 3 | I | 22 | 4.57% | 481 | 100.00% |
|
||||||
|
|
||||||
|
### A first glimpse at results
|
||||||
|
|
||||||
|
An easy `ggplot` will already give a lot of information, using the
|
||||||
|
included [`ggplot_sir()`](https://amr-for-r.org/reference/ggplot_sir.md)
|
||||||
|
function:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
data %>%
|
||||||
|
group_by(Country) %>%
|
||||||
|
select(Country, AMP_ND2, AMC_ED20, CAZ_ED10, CIP_ED5) %>%
|
||||||
|
ggplot_sir(translate_ab = "ab", facet = "Country", datalabels = FALSE)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
After Width: | Height: | Size: 65 KiB |
@@ -0,0 +1,672 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Estimating Empirical Coverage with WISCA • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png">
|
||||||
|
<link rel="icon" type="”image/svg+xml”" href="../favicon.svg">
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="icon" sizes="any" href="../favicon.ico">
|
||||||
|
<link rel="manifest" href="../site.webmanifest">
|
||||||
|
<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<link href="../deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
|
||||||
|
<link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet">
|
||||||
|
<script src="../extra.js"></script><meta property="og:title" content="Estimating Empirical Coverage with WISCA">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto">
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to">
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json">
|
||||||
|
</form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-article">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="../logo.svg" class="logo" alt=""><h1>Estimating Empirical Coverage with WISCA</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/WISCA.Rmd" class="external-link"><code>vignettes/WISCA.Rmd</code></a></small>
|
||||||
|
<div class="d-none name"><code>WISCA.Rmd</code></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="why-wisca">Why WISCA?<a class="anchor" aria-label="anchor" href="#why-wisca"></a>
|
||||||
|
</h2>
|
||||||
|
<p>When a clinician starts empirical antimicrobial therapy, the
|
||||||
|
causative pathogen is unknown. The question they need answered is not
|
||||||
|
<em>“what proportion of</em> E. coli <em>is susceptible to
|
||||||
|
ciprofloxacin?“</em> but rather <em>“what is the probability that this
|
||||||
|
regimen will adequately cover whatever pathogen turns out to be causing
|
||||||
|
my patient’s infection?”</em></p>
|
||||||
|
<p>The traditional cumulative antibiogram, as standardised by CLSI M39,
|
||||||
|
cannot answer that question. It presents susceptibility percentages per
|
||||||
|
species per antibiotic, but:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>It fragments information by organism.</strong> The clinician
|
||||||
|
must mentally combine susceptibility rates across multiple species,
|
||||||
|
weighting by how often each species causes the syndrome, a calculation
|
||||||
|
nobody does at the bedside.</li>
|
||||||
|
<li>
|
||||||
|
<strong>It ignores pathogen incidence.</strong> A species that
|
||||||
|
causes 2% of infections is given the same visual weight as one that
|
||||||
|
causes 60%.</li>
|
||||||
|
<li>
|
||||||
|
<strong>It does not evaluate combination regimens.</strong> Much
|
||||||
|
empirical therapy consists of two or more agents, but the traditional
|
||||||
|
antibiogram only shows monotherapy per organism.</li>
|
||||||
|
<li>
|
||||||
|
<strong>It provides no measure of uncertainty.</strong> A reported
|
||||||
|
“90% susceptible” based on 50 isolates has a 95% confidence interval of
|
||||||
|
roughly 78-97% (Clopper-Pearson), yet the antibiogram presents it as a
|
||||||
|
point estimate without context.</li>
|
||||||
|
</ul>
|
||||||
|
<p><strong>WISCA</strong> (Weighted-Incidence Syndromic Combination
|
||||||
|
Antibiogram) resolves all four limitations. It estimates the probability
|
||||||
|
that a regimen will provide adequate empirical coverage for a given
|
||||||
|
infection syndrome, weighted by local pathogen incidence, with full
|
||||||
|
uncertainty quantification via Bayesian inference.</p>
|
||||||
|
<p>The concept was introduced by Hebert <em>et al.</em> (2012), who
|
||||||
|
demonstrated that traditional antibiogram susceptibility rates could be
|
||||||
|
misleading: ciprofloxacin appeared 84% effective against <em>E.
|
||||||
|
coli</em> in the traditional antibiogram, but WISCA revealed only 62%
|
||||||
|
coverage for UTI and 37% for abdominal infections, because enterococci
|
||||||
|
(intrinsically resistant) and other species contribute substantially to
|
||||||
|
these syndromes. Randhawa <em>et al.</em> (2014) showed that
|
||||||
|
WISCA-guided regimen selection could improve time-to-adequate-coverage
|
||||||
|
on the ICU by over 40%. Bielicki <em>et al.</em> (2016) introduced the
|
||||||
|
Bayesian framework now used in this package, enabling credible intervals
|
||||||
|
and multi-centre pooling. Cook <em>et al.</em> (2022) applied it
|
||||||
|
globally across 52 hospitals in 23 countries.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="the-idea">The idea<a class="anchor" aria-label="anchor" href="#the-idea"></a>
|
||||||
|
</h2>
|
||||||
|
<p>WISCA asks:</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>“What is the <strong>probability</strong> that this regimen
|
||||||
|
<strong>will cover</strong> the pathogen, given the syndrome?”</p>
|
||||||
|
</blockquote>
|
||||||
|
<p>This means combining two quantities:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Pathogen incidence</strong> in the syndrome (how often each
|
||||||
|
species causes it),</li>
|
||||||
|
<li>
|
||||||
|
<strong>Susceptibility</strong> of each pathogen to the
|
||||||
|
regimen.</li>
|
||||||
|
</ul>
|
||||||
|
<p>We can write this as:</p>
|
||||||
|
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">Coverage</mtext><mo>=</mo><munder><mo>∑</mo><mi>i</mi></munder><mo stretchy="false" form="prefix">(</mo><msub><mtext mathvariant="normal">Incidence</mtext><mi>i</mi></msub><mo>×</mo><msub><mtext mathvariant="normal">Susceptibility</mtext><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\text{Coverage} = \sum_i (\text{Incidence}_i \times \text{Susceptibility}_i)</annotation></semantics></math></p>
|
||||||
|
<p>For example, suppose in your hospital:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<em>E. coli</em> causes 60% of UTIs, and 90% of <em>E. coli</em> are
|
||||||
|
susceptible to a drug.</li>
|
||||||
|
<li>
|
||||||
|
<em>Klebsiella</em> causes 40% of UTIs, and 70% of
|
||||||
|
<em>Klebsiella</em> are susceptible.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Then:</p>
|
||||||
|
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">Coverage</mtext><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mn>0.6</mn><mo>×</mo><mn>0.9</mn><mo stretchy="false" form="postfix">)</mo><mo>+</mo><mo stretchy="false" form="prefix">(</mo><mn>0.4</mn><mo>×</mo><mn>0.7</mn><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mn>0.82</mn></mrow><annotation encoding="application/x-tex">\text{Coverage} = (0.6 \times 0.9) + (0.4 \times 0.7) = 0.82</annotation></semantics></math></p>
|
||||||
|
<p>That 82% is a far more clinically meaningful number than the
|
||||||
|
species-level “90% of <em>E. coli</em>” and “70% of <em>Klebsiella</em>”
|
||||||
|
reported separately in a traditional antibiogram, because it directly
|
||||||
|
answers the question the clinician actually faces.</p>
|
||||||
|
<p>But in real data, both incidence and susceptibility are
|
||||||
|
<strong>estimated from finite samples</strong>, so they carry
|
||||||
|
uncertainty. A sample of 50 isolates is not a census. WISCA models this
|
||||||
|
uncertainty <strong>probabilistically</strong>, using conjugate Bayesian
|
||||||
|
distributions.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="the-bayesian-engine">The Bayesian engine<a class="anchor" aria-label="anchor" href="#the-bayesian-engine"></a>
|
||||||
|
</h2>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="pathogen-incidence">Pathogen incidence<a class="anchor" aria-label="anchor" href="#pathogen-incidence"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Let:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
|
||||||
|
be the number of pathogens,</li>
|
||||||
|
<li>
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>𝛂</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mi>…</mi><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\boldsymbol{\alpha} = (1, 1, \ldots, 1)</annotation></semantics></math>
|
||||||
|
be a
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtext mathvariant="normal">Dirichlet</mtext><annotation encoding="application/x-tex">\text{Dirichlet}</annotation></semantics></math>
|
||||||
|
prior (uniform, non-informative),</li>
|
||||||
|
<li>
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>𝐧</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><msub><mi>n</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>n</mi><mi>K</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\boldsymbol{n} = (n_1, \ldots, n_K)</annotation></semantics></math>
|
||||||
|
be the observed isolate counts per species.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Then the posterior incidence is:</p>
|
||||||
|
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>𝐩</mi><mo>∼</mo><mtext mathvariant="normal">Dirichlet</mtext><mo stretchy="false" form="prefix">(</mo><msub><mi>α</mi><mn>1</mn></msub><mo>+</mo><msub><mi>n</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>α</mi><mi>K</mi></msub><mo>+</mo><msub><mi>n</mi><mi>K</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\boldsymbol{p} \sim \text{Dirichlet}(\alpha_1 + n_1, \ldots, \alpha_K + n_K)</annotation></semantics></math></p>
|
||||||
|
<p>To simulate from this, we use:</p>
|
||||||
|
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>i</mi></msub><mo>∼</mo><mtext mathvariant="normal">Gamma</mtext><mo stretchy="false" form="prefix">(</mo><msub><mi>α</mi><mi>i</mi></msub><mo>+</mo><msub><mi>n</mi><mi>i</mi></msub><mo>,</mo><mspace width="0.222em"></mspace><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mspace width="1.0em"></mspace><msub><mi>p</mi><mi>i</mi></msub><mo>=</mo><mfrac><msub><mi>x</mi><mi>i</mi></msub><mrow><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msub><mi>x</mi><mi>j</mi></msub></mrow></mfrac></mrow><annotation encoding="application/x-tex">x_i \sim \text{Gamma}(\alpha_i + n_i,\ 1), \quad p_i = \frac{x_i}{\sum_{j=1}^{K} x_j}</annotation></semantics></math></p>
|
||||||
|
<p>The Dirichlet is the conjugate prior for multinomial data. With the
|
||||||
|
non-informative prior
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">Dirichlet</mtext><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo>,</mo><mi>…</mi><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\text{Dirichlet}(1, 1, \ldots, 1)</annotation></semantics></math>,
|
||||||
|
the posterior is dominated by the data once sample sizes are reasonable.
|
||||||
|
With small samples, the posterior is appropriately more diffuse,
|
||||||
|
reflecting genuine uncertainty, and the resulting credible intervals
|
||||||
|
will be wider.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="susceptibility">Susceptibility<a class="anchor" aria-label="anchor" href="#susceptibility"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Each pathogen-regimen pair has a prior and observed data:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Default prior:
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">Beta</mtext><mo stretchy="false" form="prefix">(</mo><mn>0.5</mn><mo>,</mo><mn>0.5</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\text{Beta}(0.5, 0.5)</annotation></semantics></math>
|
||||||
|
(Jeffreys prior)</li>
|
||||||
|
<li>Intrinsically resistant pairs:
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">Beta</mtext><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>,</mo><mn>9999</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\text{Beta}(1, 9999)</annotation></semantics></math>,
|
||||||
|
forcing near-zero susceptibility regardless of observed data (based on
|
||||||
|
EUCAST Expected Resistant Phenotypes)</li>
|
||||||
|
<li>Data:
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
|
||||||
|
susceptible out of
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>N</mi><annotation encoding="application/x-tex">N</annotation></semantics></math>
|
||||||
|
tested</li>
|
||||||
|
</ul>
|
||||||
|
<p>The
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
|
||||||
|
category could also include values SDD (susceptible, dose-dependent) and
|
||||||
|
I (intermediate [CLSI], or susceptible, increased exposure
|
||||||
|
[EUCAST]).</p>
|
||||||
|
<p>Then the posterior is:</p>
|
||||||
|
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi><mo>∼</mo><mtext mathvariant="normal">Beta</mtext><mo stretchy="false" form="prefix">(</mo><msub><mi>α</mi><mn>0</mn></msub><mo>+</mo><mi>S</mi><mo>,</mo><mspace width="0.222em"></mspace><msub><mi>β</mi><mn>0</mn></msub><mo>+</mo><mi>N</mi><mo>−</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\theta \sim \text{Beta}(\alpha_0 + S,\ \beta_0 + N - S)</annotation></semantics></math></p>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="final-coverage-estimate">Final coverage estimate<a class="anchor" aria-label="anchor" href="#final-coverage-estimate"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Putting it together:</p>
|
||||||
|
<ol style="list-style-type: decimal">
|
||||||
|
<li>Simulate pathogen incidence:
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>𝐩</mi><mo>∼</mo><mtext mathvariant="normal">Dirichlet</mtext></mrow><annotation encoding="application/x-tex">\boldsymbol{p} \sim \text{Dirichlet}</annotation></semantics></math>
|
||||||
|
</li>
|
||||||
|
<li>Simulate susceptibility:
|
||||||
|
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>θ</mi><mi>i</mi></msub><mo>∼</mo><mtext mathvariant="normal">Beta</mtext><mo stretchy="false" form="prefix">(</mo><msub><mi>α</mi><mn>0</mn></msub><mo>+</mo><msub><mi>S</mi><mi>i</mi></msub><mo>,</mo><mspace width="0.222em"></mspace><msub><mi>β</mi><mn>0</mn></msub><mo>+</mo><msub><mi>N</mi><mi>i</mi></msub><mo>−</mo><msub><mi>S</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\theta_i \sim \text{Beta}(\alpha_0 + S_i,\ \beta_0 + N_i - S_i)</annotation></semantics></math>
|
||||||
|
</li>
|
||||||
|
<li>Combine:</li>
|
||||||
|
</ol>
|
||||||
|
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">Coverage</mtext><mo>=</mo><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msub><mi>p</mi><mi>i</mi></msub><mo>⋅</mo><msub><mi>θ</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">\text{Coverage} = \sum_{i=1}^{K} p_i \cdot \theta_i</annotation></semantics></math></p>
|
||||||
|
<p>Repeat this simulation (e.g., 1000 times) and summarise:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Mean</strong> = expected coverage</li>
|
||||||
|
<li>
|
||||||
|
<strong>Quantiles</strong> = credible interval (95% by default)</li>
|
||||||
|
</ul>
|
||||||
|
<p>Because each simulation draws from the full posterior, the resulting
|
||||||
|
distribution of coverage estimates naturally captures the joint
|
||||||
|
uncertainty in both pathogen incidence and susceptibility. The credible
|
||||||
|
interval tells you how confident you can be in the coverage estimate,
|
||||||
|
something a traditional antibiogram never provides.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="when-to-use-wisca-vs--traditional-antibiograms">When to use WISCA vs. traditional antibiograms<a class="anchor" aria-label="anchor" href="#when-to-use-wisca-vs--traditional-antibiograms"></a>
|
||||||
|
</h2>
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th>Goal</th>
|
||||||
|
<th>Recommended approach</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Guide empirical therapy decisions</td>
|
||||||
|
<td><strong>WISCA</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>Compare regimens for a syndrome</td>
|
||||||
|
<td><strong>WISCA</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Evaluate combination regimens</td>
|
||||||
|
<td><strong>WISCA</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>Antimicrobial stewardship (A-team)</td>
|
||||||
|
<td><strong>WISCA</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Track resistance trends per species</td>
|
||||||
|
<td>Traditional / Combination</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>AMR surveillance reporting</td>
|
||||||
|
<td>Traditional / Syndromic</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Understand species-level epidemiology</td>
|
||||||
|
<td>Traditional</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>In short: if the end goal involves a <em>patient</em> who does not
|
||||||
|
yet have a culture result, WISCA is the appropriate tool. If the end
|
||||||
|
goal is <em>surveillance</em> of resistance at the species level, the
|
||||||
|
traditional antibiogram remains fit for purpose.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="practical-use-in-the-amr-package">Practical use in the <code>AMR</code> package<a class="anchor" aria-label="anchor" href="#practical-use-in-the-amr-package"></a>
|
||||||
|
</h2>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="prepare-data">Prepare data<a class="anchor" aria-label="anchor" href="#prepare-data"></a>
|
||||||
|
</h3>
|
||||||
|
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://amr-for-r.org">AMR</a></span><span class="op">)</span></span>
|
||||||
|
<span><span class="va">data</span> <span class="op"><-</span> <span class="va">example_isolates</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Structure of our data</span></span>
|
||||||
|
<span><span class="va">data</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 2,000 × 46</span></span></span>
|
||||||
|
<span><span class="co">#> date patient age gender ward mo PEN OXA FLC AMX </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><date></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><mo></span> <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #949494; font-style: italic;"><sir></span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 1</span> 2002-01-02 A77334 65 F Clinical <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #949494;"> NA</span> <span style="color: #949494;"> NA</span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 2</span> 2002-01-03 A77334 65 F Clinical <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #949494;"> NA</span> <span style="color: #949494;"> NA</span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 3</span> 2002-01-07 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 4</span> 2002-01-07 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 5</span> 2002-01-13 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 6</span> 2002-01-13 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 7</span> 2002-01-14 462729 78 M Clinical <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>AURS <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #080808; background-color: #FF5F5F;"> R </span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 8</span> 2002-01-14 462729 78 M Clinical <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>AURS <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #080808; background-color: #FF5F5F;"> R </span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 9</span> 2002-01-16 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">10</span> 2002-01-17 858515 79 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FF5F5F;"> R </span> <span style="color: #949494;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #949494;"> NA</span> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># ℹ 1,990 more rows</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …</span></span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Add a synthetic syndrome column for demonstration</span></span>
|
||||||
|
<span><span class="va">data</span><span class="op">$</span><span class="va">syndrome</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/ifelse.html" class="external-link">ifelse</a></span><span class="op">(</span><span class="va">data</span><span class="op">$</span><span class="va">mo</span> <span class="op"><a href="../reference/like.html">%like%</a></span> <span class="st">"coli"</span>, <span class="st">"UTI"</span>, <span class="st">"Non-UTI"</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Keep only 10 most common microorganisms</span></span>
|
||||||
|
<span><span class="va">data</span> <span class="op"><-</span> <span class="fu"><a href="../reference/top_n_microorganisms.html">top_n_microorganisms</a></span><span class="op">(</span><span class="va">data</span>, n <span class="op">=</span> <span class="fl">10</span>, property <span class="op">=</span> <span class="st">"species"</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">ℹ</span> Using column <span style="color: #00BB00; font-weight: bold;">mo</span> as input for `col_mo`.</span></span></code></pre></div>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="basic-wisca">Basic WISCA<a class="anchor" aria-label="anchor" href="#basic-wisca"></a>
|
||||||
|
</h3>
|
||||||
|
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/antibiogram.html">wisca</a></span><span class="op">(</span><span class="va">data</span>,</span>
|
||||||
|
<span> antimicrobials <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"AMC"</span>, <span class="st">"CIP"</span>, <span class="st">"GEN"</span><span class="op">)</span></span>
|
||||||
|
<span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th align="left">Amoxicillin/clavulanic acid</th>
|
||||||
|
<th align="left">Ciprofloxacin</th>
|
||||||
|
<th align="left">Gentamicin</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody><tr class="odd">
|
||||||
|
<td align="left">76.8% (74.7-79.1%)</td>
|
||||||
|
<td align="left">81.5% (78.9-84.1%)</td>
|
||||||
|
<td align="left">82.9% (81-84.8%)</td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="use-combination-regimens">Use combination regimens<a class="anchor" aria-label="anchor" href="#use-combination-regimens"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Combination regimens are specified with a <code>+</code> separator.
|
||||||
|
WISCA evaluates whether <em>at least one</em> agent in the combination
|
||||||
|
covers the pathogen:</p>
|
||||||
|
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/antibiogram.html">wisca</a></span><span class="op">(</span><span class="va">data</span>,</span>
|
||||||
|
<span> antimicrobials <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"AMC"</span>, <span class="st">"AMC + CIP"</span>, <span class="st">"AMC + GEN"</span><span class="op">)</span></span>
|
||||||
|
<span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="24%">
|
||||||
|
<col width="38%">
|
||||||
|
<col width="36%">
|
||||||
|
</colgroup>
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th align="left">Amoxicillin/clavulanic acid</th>
|
||||||
|
<th align="left">Amoxicillin/clavulanic acid + Ciprofloxacin</th>
|
||||||
|
<th align="left">Amoxicillin/clavulanic acid + Gentamicin</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody><tr class="odd">
|
||||||
|
<td align="left">76.8% (74.6-78.9%)</td>
|
||||||
|
<td align="left">89.6% (88-91.1%)</td>
|
||||||
|
<td align="left">93.7% (92.5-94.9%)</td>
|
||||||
|
</tr></tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="stratify-by-syndrome">Stratify by syndrome<a class="anchor" aria-label="anchor" href="#stratify-by-syndrome"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Use <code>syndromic_group</code> to produce separate WISCA estimates
|
||||||
|
per clinical stratum. You can pass a column name or any expression:</p>
|
||||||
|
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">wisca_out</span> <span class="op"><-</span> <span class="fu"><a href="../reference/antibiogram.html">wisca</a></span><span class="op">(</span><span class="va">data</span>,</span>
|
||||||
|
<span> antimicrobials <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"AMC"</span>, <span class="st">"AMC + CIP"</span>, <span class="st">"AMC + GEN"</span><span class="op">)</span>,</span>
|
||||||
|
<span> syndromic_group <span class="op">=</span> <span class="st">"syndrome"</span></span>
|
||||||
|
<span><span class="op">)</span></span>
|
||||||
|
<span><span class="va">wisca_out</span></span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="12%">
|
||||||
|
<col width="21%">
|
||||||
|
<col width="34%">
|
||||||
|
<col width="31%">
|
||||||
|
</colgroup>
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th align="left">Syndromic Group</th>
|
||||||
|
<th align="left">Amoxicillin/clavulanic acid</th>
|
||||||
|
<th align="left">Amoxicillin/clavulanic acid + Ciprofloxacin</th>
|
||||||
|
<th align="left">Amoxicillin/clavulanic acid + Gentamicin</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">Non-UTI</td>
|
||||||
|
<td align="left">72.5% (69.9-75.1%)</td>
|
||||||
|
<td align="left">86.9% (84.8-89%)</td>
|
||||||
|
<td align="left">91.4% (89.5-93%)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">UTI</td>
|
||||||
|
<td align="left">86% (82.5-89%)</td>
|
||||||
|
<td align="left">94.8% (92.5-96.6%)</td>
|
||||||
|
<td align="left">97.9% (96.3-99%)</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>The <code>AMR</code> package is available in 28 languages, which can
|
||||||
|
all be used for the <code><a href="../reference/antibiogram.html">wisca()</a></code> function too:</p>
|
||||||
|
<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/antibiogram.html">wisca</a></span><span class="op">(</span><span class="va">data</span>,</span>
|
||||||
|
<span> antimicrobials <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"AMC"</span>, <span class="st">"AMC + CIP"</span>, <span class="st">"AMC + GEN"</span><span class="op">)</span>,</span>
|
||||||
|
<span> syndromic_group <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/grep.html" class="external-link">gsub</a></span><span class="op">(</span><span class="st">"UTI"</span>, <span class="st">"UCI"</span>, <span class="va">data</span><span class="op">$</span><span class="va">syndrome</span><span class="op">)</span>,</span>
|
||||||
|
<span> language <span class="op">=</span> <span class="st">"Spanish"</span></span>
|
||||||
|
<span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<table class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="12%">
|
||||||
|
<col width="21%">
|
||||||
|
<col width="34%">
|
||||||
|
<col width="31%">
|
||||||
|
</colgroup>
|
||||||
|
<thead><tr class="header">
|
||||||
|
<th align="left">Grupo sindrómico</th>
|
||||||
|
<th align="left">Amoxicilina/ácido clavulánico</th>
|
||||||
|
<th align="left">Amoxicilina/ácido clavulánico + Ciprofloxacina</th>
|
||||||
|
<th align="left">Amoxicilina/ácido clavulánico + Gentamicina</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">Non-UCI</td>
|
||||||
|
<td align="left">72.6% (69.9-75.3%)</td>
|
||||||
|
<td align="left">87% (84.9-89.1%)</td>
|
||||||
|
<td align="left">91.4% (89.7-92.9%)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">UCI</td>
|
||||||
|
<td align="left">86% (82.7-89%)</td>
|
||||||
|
<td align="left">94.8% (92.7-96.4%)</td>
|
||||||
|
<td align="left">97.9% (96.5-99%)</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="interpreting-the-output">Interpreting the output<a class="anchor" aria-label="anchor" href="#interpreting-the-output"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Each row shows the estimated empirical coverage for a regimen, with a
|
||||||
|
95% credible interval. When comparing regimens:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Overlapping credible intervals</strong> mean there is no
|
||||||
|
statistically significant difference in coverage. If a narrower-spectrum
|
||||||
|
regimen overlaps with a broader one, the narrower-spectrum option can be
|
||||||
|
preferred on stewardship grounds.</li>
|
||||||
|
<li>
|
||||||
|
<strong>Non-overlapping credible intervals</strong> indicate a
|
||||||
|
clinically meaningful difference in coverage.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="plotting">Plotting<a class="anchor" aria-label="anchor" href="#plotting"></a>
|
||||||
|
</h3>
|
||||||
|
<p>WISCA results can be visualised in several ways. All plot functions
|
||||||
|
work on the output of <code><a href="../reference/antibiogram.html">wisca()</a></code> (or
|
||||||
|
<code>antibiogram(..., wisca = TRUE)</code>).</p>
|
||||||
|
<p>Below we use the <code>wisca_out</code> object that was generated
|
||||||
|
above.</p>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="coverage-with-credible-intervals">Coverage with credible intervals<a class="anchor" aria-label="anchor" href="#coverage-with-credible-intervals"></a>
|
||||||
|
</h4>
|
||||||
|
<p>The extended <code><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot()</a></code> method from the
|
||||||
|
<code>ggplot2()</code> package produces a point-and-interval plot
|
||||||
|
showing the coverage estimate and 95% credible interval for each
|
||||||
|
regimen, grouped by syndromic stratum. This is the most direct way to
|
||||||
|
compare regimens: overlapping intervals suggest clinical
|
||||||
|
non-inferiority, non-overlapping intervals indicate a meaningful
|
||||||
|
difference.</p>
|
||||||
|
<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu">ggplot2</span><span class="fu">::</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot</a></span><span class="op">(</span><span class="va">wisca_out</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="WISCA_files/figure-html/unnamed-chunk-6-1.png" class="r-plt" alt="" width="720"></p>
|
||||||
|
</div>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="susceptibility-vs--incidence-weight">Susceptibility vs. incidence weight<a class="anchor" aria-label="anchor" href="#susceptibility-vs--incidence-weight"></a>
|
||||||
|
</h4>
|
||||||
|
<p><code><a href="../reference/antibiogram.html">wisca_plot()</a></code> produces a scatter plot of the Monte Carlo
|
||||||
|
simulation draws, showing each pathogen’s susceptibility (x-axis)
|
||||||
|
against its incidence weight (y-axis) for each regimen. Each dot
|
||||||
|
represents one of 1,000 simulated draws, so the spread reflects
|
||||||
|
posterior uncertainty. This plot reveals <em>why</em> a regimen achieves
|
||||||
|
its coverage: you can see which pathogens dominate the syndrome (high on
|
||||||
|
the y-axis), how susceptible they are (position on the x-axis), and how
|
||||||
|
uncertain both estimates are (spread of the cloud). The dashed vertical
|
||||||
|
lines denote the point estimates, i.e., the coverage percentages. The
|
||||||
|
ribbon behind the dashed lines denote the credible interval, which is
|
||||||
|
95% at default.</p>
|
||||||
|
<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/antibiogram.html">wisca_plot</a></span><span class="op">(</span><span class="va">wisca_out</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="WISCA_files/figure-html/unnamed-chunk-7-1.png" class="r-plt" alt="" width="720"></p>
|
||||||
|
</div>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="posterior-coverage-distributions">Posterior coverage distributions<a class="anchor" aria-label="anchor" href="#posterior-coverage-distributions"></a>
|
||||||
|
</h4>
|
||||||
|
<p>Setting <code>wisca_plot_type = "posterior_coverage"</code> shows the
|
||||||
|
full posterior distribution of coverage for each regimen as a density
|
||||||
|
curve. This is the most complete representation of what the Bayesian
|
||||||
|
model produces: each curve shows the relative likelihood of each
|
||||||
|
coverage value across all 1,000 simulations. Narrow, tall peaks indicate
|
||||||
|
high certainty; wide, flat curves indicate greater uncertainty. Where
|
||||||
|
two curves overlap, the regimens cannot be confidently
|
||||||
|
distinguished.</p>
|
||||||
|
<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/antibiogram.html">wisca_plot</a></span><span class="op">(</span><span class="va">wisca_out</span>, wisca_plot_type <span class="op">=</span> <span class="st">"posterior_coverage"</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="WISCA_files/figure-html/unnamed-chunk-8-1.png" class="r-plt" alt="" width="720"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="sensible-defaults-which-can-be-customised">Sensible defaults, which can be customised<a class="anchor" aria-label="anchor" href="#sensible-defaults-which-can-be-customised"></a>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>simulations = 1000</code>: number of Monte Carlo draws</li>
|
||||||
|
<li>
|
||||||
|
<code>conf_interval = 0.95</code>: coverage interval width</li>
|
||||||
|
<li>
|
||||||
|
<code>combine_SI = TRUE</code>: count “I” and “SDD” as
|
||||||
|
susceptible</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="practical-considerations">Practical considerations<a class="anchor" aria-label="anchor" href="#practical-considerations"></a>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>First isolates only</strong>: always deduplicate using
|
||||||
|
<code><a href="../reference/first_isolate.html">first_isolate()</a></code> before running WISCA. Repeat isolates
|
||||||
|
introduce bias.</li>
|
||||||
|
<li>
|
||||||
|
<strong>Pathogen selection</strong>: consider filtering with
|
||||||
|
<code><a href="../reference/top_n_microorganisms.html">top_n_microorganisms()</a></code>. Including rare contaminants
|
||||||
|
(e.g. CoNS without clinical context) can distort estimates and may
|
||||||
|
artificially lower coverage (Cook <em>et al.</em>, 2022).</li>
|
||||||
|
<li>
|
||||||
|
<strong>Sample size</strong>: coverage estimates become reliable
|
||||||
|
with approximately 100+ isolates. For smaller datasets, consider pooling
|
||||||
|
data from multiple sites, but only after verifying that pathogen
|
||||||
|
distributions are sufficiently similar (Bielicki <em>et al.</em>,
|
||||||
|
2016).</li>
|
||||||
|
<li>
|
||||||
|
<strong>Culture request bias</strong>: WISCA is only as good as the
|
||||||
|
data it is based on. If cultures are selectively requested (e.g. only
|
||||||
|
after treatment failure), the dataset will be biased towards resistant
|
||||||
|
isolates. A robust culture policy is essential for reliable
|
||||||
|
estimates.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="limitations">Limitations<a class="anchor" aria-label="anchor" href="#limitations"></a>
|
||||||
|
</h2>
|
||||||
|
<ul>
|
||||||
|
<li>It assumes your data are representative of the patient population
|
||||||
|
you are treating</li>
|
||||||
|
<li>No direct adjustment for patient-level covariates, although these
|
||||||
|
can be passed onto the <code>syndromic_group</code> argument for
|
||||||
|
stratification</li>
|
||||||
|
<li>WISCA does not model resistance trends over time; for that, you
|
||||||
|
might want to use <code>tidymodels</code>, for which we <a href="https://amr-for-r.org/articles/AMR_with_tidymodels.html">wrote a
|
||||||
|
basic introduction</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="summary">Summary<a class="anchor" aria-label="anchor" href="#summary"></a>
|
||||||
|
</h2>
|
||||||
|
<p>WISCA enables:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Empirical regimen comparison</strong>, answering the
|
||||||
|
clinician’s actual question</li>
|
||||||
|
<li>
|
||||||
|
<strong>Syndrome-specific coverage estimation</strong>, stratifiable
|
||||||
|
by any clinical variable</li>
|
||||||
|
<li>
|
||||||
|
<strong>Fully probabilistic interpretation</strong>, with credible
|
||||||
|
intervals that honestly communicate uncertainty</li>
|
||||||
|
</ul>
|
||||||
|
<p>It is available in the <code>AMR</code> package via either:</p>
|
||||||
|
<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/antibiogram.html">wisca</a></span><span class="op">(</span><span class="va">...</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="fu"><a href="../reference/antibiogram.html">antibiogram</a></span><span class="op">(</span><span class="va">...</span>, wisca <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="references">References<a class="anchor" aria-label="anchor" href="#references"></a>
|
||||||
|
</h2>
|
||||||
|
<ol style="list-style-type: decimal">
|
||||||
|
<li>Hebert C, Ridgway J, Vekhter B, Brown EC, Weber SG, Robicsek A.
|
||||||
|
Demonstration of the weighted-incidence syndromic combination
|
||||||
|
antibiogram: an empiric prescribing decision aid. <em>Infect Control
|
||||||
|
Hosp Epidemiol.</em> 2012;33(4):381-388. <a href="https://doi.org/10.1086/664768" class="external-link uri">https://doi.org/10.1086/664768</a>
|
||||||
|
</li>
|
||||||
|
<li>Randhawa V, Sarwar S, Walker S, Elligsen M, Palmay L, Daneman N.
|
||||||
|
Weighted-incidence syndromic combination antibiograms to guide empiric
|
||||||
|
treatment of critical care infections: a retrospective cohort study.
|
||||||
|
<em>Crit Care.</em> 2014;18(3):R112. <a href="https://doi.org/10.1186/cc13901" class="external-link uri">https://doi.org/10.1186/cc13901</a>
|
||||||
|
</li>
|
||||||
|
<li>Bielicki JA, Sharland M, Johnson AP, Henderson KL, Cromwell DA.
|
||||||
|
Selecting appropriate empirical antibiotic regimens for paediatric
|
||||||
|
bloodstream infections: application of a Bayesian decision model to
|
||||||
|
local and pooled antimicrobial resistance surveillance data. <em>J
|
||||||
|
Antimicrob Chemother.</em> 2016;71(3):794-802. <a href="https://doi.org/10.1093/jac/dkv397" class="external-link uri">https://doi.org/10.1093/jac/dkv397</a>
|
||||||
|
</li>
|
||||||
|
<li>Cook A, Sharland M, Yau Y, Bielicki J. Improving empiric antibiotic
|
||||||
|
prescribing in pediatric bloodstream infections: a potential application
|
||||||
|
of weighted-incidence syndromic combination antibiograms (WISCA).
|
||||||
|
<em>Expert Rev Anti Infect Ther.</em> 2022;20(3):445-456. <a href="https://doi.org/10.1080/14787210.2021.1967145" class="external-link uri">https://doi.org/10.1080/14787210.2021.1967145</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
|
||||||
|
</nav></aside>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,443 @@
|
|||||||
|
# Estimating Empirical Coverage with WISCA
|
||||||
|
|
||||||
|
## Why WISCA?
|
||||||
|
|
||||||
|
When a clinician starts empirical antimicrobial therapy, the causative
|
||||||
|
pathogen is unknown. The question they need answered is not *“what
|
||||||
|
proportion of* E. coli *is susceptible to ciprofloxacin?“* but rather
|
||||||
|
*“what is the probability that this regimen will adequately cover
|
||||||
|
whatever pathogen turns out to be causing my patient’s infection?”*
|
||||||
|
|
||||||
|
The traditional cumulative antibiogram, as standardised by CLSI M39,
|
||||||
|
cannot answer that question. It presents susceptibility percentages per
|
||||||
|
species per antibiotic, but:
|
||||||
|
|
||||||
|
- **It fragments information by organism.** The clinician must mentally
|
||||||
|
combine susceptibility rates across multiple species, weighting by how
|
||||||
|
often each species causes the syndrome, a calculation nobody does at
|
||||||
|
the bedside.
|
||||||
|
- **It ignores pathogen incidence.** A species that causes 2% of
|
||||||
|
infections is given the same visual weight as one that causes 60%.
|
||||||
|
- **It does not evaluate combination regimens.** Much empirical therapy
|
||||||
|
consists of two or more agents, but the traditional antibiogram only
|
||||||
|
shows monotherapy per organism.
|
||||||
|
- **It provides no measure of uncertainty.** A reported “90%
|
||||||
|
susceptible” based on 50 isolates has a 95% confidence interval of
|
||||||
|
roughly 78-97% (Clopper-Pearson), yet the antibiogram presents it as a
|
||||||
|
point estimate without context.
|
||||||
|
|
||||||
|
**WISCA** (Weighted-Incidence Syndromic Combination Antibiogram)
|
||||||
|
resolves all four limitations. It estimates the probability that a
|
||||||
|
regimen will provide adequate empirical coverage for a given infection
|
||||||
|
syndrome, weighted by local pathogen incidence, with full uncertainty
|
||||||
|
quantification via Bayesian inference.
|
||||||
|
|
||||||
|
The concept was introduced by Hebert *et al.* (2012), who demonstrated
|
||||||
|
that traditional antibiogram susceptibility rates could be misleading:
|
||||||
|
ciprofloxacin appeared 84% effective against *E. coli* in the
|
||||||
|
traditional antibiogram, but WISCA revealed only 62% coverage for UTI
|
||||||
|
and 37% for abdominal infections, because enterococci (intrinsically
|
||||||
|
resistant) and other species contribute substantially to these
|
||||||
|
syndromes. Randhawa *et al.* (2014) showed that WISCA-guided regimen
|
||||||
|
selection could improve time-to-adequate-coverage on the ICU by over
|
||||||
|
40%. Bielicki *et al.* (2016) introduced the Bayesian framework now used
|
||||||
|
in this package, enabling credible intervals and multi-centre pooling.
|
||||||
|
Cook *et al.* (2022) applied it globally across 52 hospitals in 23
|
||||||
|
countries.
|
||||||
|
|
||||||
|
## The idea
|
||||||
|
|
||||||
|
WISCA asks:
|
||||||
|
|
||||||
|
> “What is the **probability** that this regimen **will cover** the
|
||||||
|
> pathogen, given the syndrome?”
|
||||||
|
|
||||||
|
This means combining two quantities:
|
||||||
|
|
||||||
|
- **Pathogen incidence** in the syndrome (how often each species causes
|
||||||
|
it),
|
||||||
|
- **Susceptibility** of each pathogen to the regimen.
|
||||||
|
|
||||||
|
We can write this as:
|
||||||
|
|
||||||
|
``` math
|
||||||
|
\text{Coverage} = \sum_i (\text{Incidence}_i \times \text{Susceptibility}_i)
|
||||||
|
```
|
||||||
|
|
||||||
|
For example, suppose in your hospital:
|
||||||
|
|
||||||
|
- *E. coli* causes 60% of UTIs, and 90% of *E. coli* are susceptible to
|
||||||
|
a drug.
|
||||||
|
- *Klebsiella* causes 40% of UTIs, and 70% of *Klebsiella* are
|
||||||
|
susceptible.
|
||||||
|
|
||||||
|
Then:
|
||||||
|
|
||||||
|
``` math
|
||||||
|
\text{Coverage} = (0.6 \times 0.9) + (0.4 \times 0.7) = 0.82
|
||||||
|
```
|
||||||
|
|
||||||
|
That 82% is a far more clinically meaningful number than the
|
||||||
|
species-level “90% of *E. coli*” and “70% of *Klebsiella*” reported
|
||||||
|
separately in a traditional antibiogram, because it directly answers the
|
||||||
|
question the clinician actually faces.
|
||||||
|
|
||||||
|
But in real data, both incidence and susceptibility are **estimated from
|
||||||
|
finite samples**, so they carry uncertainty. A sample of 50 isolates is
|
||||||
|
not a census. WISCA models this uncertainty **probabilistically**, using
|
||||||
|
conjugate Bayesian distributions.
|
||||||
|
|
||||||
|
## The Bayesian engine
|
||||||
|
|
||||||
|
### Pathogen incidence
|
||||||
|
|
||||||
|
Let:
|
||||||
|
|
||||||
|
- $`K`$ be the number of pathogens,
|
||||||
|
- $`\boldsymbol{\alpha} = (1, 1, \ldots, 1)`$ be a $`\text{Dirichlet}`$
|
||||||
|
prior (uniform, non-informative),
|
||||||
|
- $`\boldsymbol{n} = (n_1, \ldots, n_K)`$ be the observed isolate counts
|
||||||
|
per species.
|
||||||
|
|
||||||
|
Then the posterior incidence is:
|
||||||
|
|
||||||
|
``` math
|
||||||
|
\boldsymbol{p} \sim \text{Dirichlet}(\alpha_1 + n_1, \ldots, \alpha_K + n_K)
|
||||||
|
```
|
||||||
|
|
||||||
|
To simulate from this, we use:
|
||||||
|
|
||||||
|
``` math
|
||||||
|
x_i \sim \text{Gamma}(\alpha_i + n_i,\ 1), \quad p_i = \frac{x_i}{\sum_{j=1}^{K} x_j}
|
||||||
|
```
|
||||||
|
|
||||||
|
The Dirichlet is the conjugate prior for multinomial data. With the
|
||||||
|
non-informative prior $`\text{Dirichlet}(1, 1, \ldots, 1)`$, the
|
||||||
|
posterior is dominated by the data once sample sizes are reasonable.
|
||||||
|
With small samples, the posterior is appropriately more diffuse,
|
||||||
|
reflecting genuine uncertainty, and the resulting credible intervals
|
||||||
|
will be wider.
|
||||||
|
|
||||||
|
### Susceptibility
|
||||||
|
|
||||||
|
Each pathogen-regimen pair has a prior and observed data:
|
||||||
|
|
||||||
|
- Default prior: $`\text{Beta}(0.5, 0.5)`$ (Jeffreys prior)
|
||||||
|
- Intrinsically resistant pairs: $`\text{Beta}(1, 9999)`$, forcing
|
||||||
|
near-zero susceptibility regardless of observed data (based on EUCAST
|
||||||
|
Expected Resistant Phenotypes)
|
||||||
|
- Data: $`S`$ susceptible out of $`N`$ tested
|
||||||
|
|
||||||
|
The $`S`$ category could also include values SDD (susceptible,
|
||||||
|
dose-dependent) and I (intermediate \[CLSI\], or susceptible, increased
|
||||||
|
exposure \[EUCAST\]).
|
||||||
|
|
||||||
|
Then the posterior is:
|
||||||
|
|
||||||
|
``` math
|
||||||
|
\theta \sim \text{Beta}(\alpha_0 + S,\ \beta_0 + N - S)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Final coverage estimate
|
||||||
|
|
||||||
|
Putting it together:
|
||||||
|
|
||||||
|
1. Simulate pathogen incidence:
|
||||||
|
$`\boldsymbol{p} \sim \text{Dirichlet}`$
|
||||||
|
2. Simulate susceptibility:
|
||||||
|
$`\theta_i \sim \text{Beta}(\alpha_0 + S_i,\ \beta_0 + N_i - S_i)`$
|
||||||
|
3. Combine:
|
||||||
|
|
||||||
|
``` math
|
||||||
|
\text{Coverage} = \sum_{i=1}^{K} p_i \cdot \theta_i
|
||||||
|
```
|
||||||
|
|
||||||
|
Repeat this simulation (e.g., 1000 times) and summarise:
|
||||||
|
|
||||||
|
- **Mean** = expected coverage
|
||||||
|
- **Quantiles** = credible interval (95% by default)
|
||||||
|
|
||||||
|
Because each simulation draws from the full posterior, the resulting
|
||||||
|
distribution of coverage estimates naturally captures the joint
|
||||||
|
uncertainty in both pathogen incidence and susceptibility. The credible
|
||||||
|
interval tells you how confident you can be in the coverage estimate,
|
||||||
|
something a traditional antibiogram never provides.
|
||||||
|
|
||||||
|
## When to use WISCA vs. traditional antibiograms
|
||||||
|
|
||||||
|
| Goal | Recommended approach |
|
||||||
|
|---------------------------------------|---------------------------|
|
||||||
|
| Guide empirical therapy decisions | **WISCA** |
|
||||||
|
| Compare regimens for a syndrome | **WISCA** |
|
||||||
|
| Evaluate combination regimens | **WISCA** |
|
||||||
|
| Antimicrobial stewardship (A-team) | **WISCA** |
|
||||||
|
| Track resistance trends per species | Traditional / Combination |
|
||||||
|
| AMR surveillance reporting | Traditional / Syndromic |
|
||||||
|
| Understand species-level epidemiology | Traditional |
|
||||||
|
|
||||||
|
In short: if the end goal involves a *patient* who does not yet have a
|
||||||
|
culture result, WISCA is the appropriate tool. If the end goal is
|
||||||
|
*surveillance* of resistance at the species level, the traditional
|
||||||
|
antibiogram remains fit for purpose.
|
||||||
|
|
||||||
|
## Practical use in the `AMR` package
|
||||||
|
|
||||||
|
### Prepare data
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
library(AMR)
|
||||||
|
data <- example_isolates
|
||||||
|
|
||||||
|
# Structure of our data
|
||||||
|
data
|
||||||
|
#> # A tibble: 2,000 × 46
|
||||||
|
#> date patient age gender ward mo PEN OXA FLC AMX
|
||||||
|
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
|
||||||
|
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
|
||||||
|
#> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
|
||||||
|
#> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
|
||||||
|
#> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
|
||||||
|
#> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
|
||||||
|
#> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
|
||||||
|
#> # ℹ 1,990 more rows
|
||||||
|
#> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
|
||||||
|
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
|
||||||
|
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
|
||||||
|
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
|
||||||
|
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
|
||||||
|
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
|
||||||
|
|
||||||
|
# Add a synthetic syndrome column for demonstration
|
||||||
|
data$syndrome <- ifelse(data$mo %like% "coli", "UTI", "Non-UTI")
|
||||||
|
|
||||||
|
# Keep only 10 most common microorganisms
|
||||||
|
data <- top_n_microorganisms(data, n = 10, property = "species")
|
||||||
|
#> ℹ Using column mo as input for `col_mo`.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Basic WISCA
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
wisca(data,
|
||||||
|
antimicrobials = c("AMC", "CIP", "GEN")
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Amoxicillin/clavulanic acid | Ciprofloxacin | Gentamicin |
|
||||||
|
|:----------------------------|:-------------------|:-----------------|
|
||||||
|
| 76.8% (74.7-79.1%) | 81.5% (78.9-84.1%) | 82.9% (81-84.8%) |
|
||||||
|
|
||||||
|
### Use combination regimens
|
||||||
|
|
||||||
|
Combination regimens are specified with a `+` separator. WISCA evaluates
|
||||||
|
whether *at least one* agent in the combination covers the pathogen:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
wisca(data,
|
||||||
|
antimicrobials = c("AMC", "AMC + CIP", "AMC + GEN")
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Amoxicillin/clavulanic acid | Amoxicillin/clavulanic acid + Ciprofloxacin | Amoxicillin/clavulanic acid + Gentamicin |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| 76.8% (74.6-78.9%) | 89.6% (88-91.1%) | 93.7% (92.5-94.9%) |
|
||||||
|
|
||||||
|
### Stratify by syndrome
|
||||||
|
|
||||||
|
Use `syndromic_group` to produce separate WISCA estimates per clinical
|
||||||
|
stratum. You can pass a column name or any expression:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
wisca_out <- wisca(data,
|
||||||
|
antimicrobials = c("AMC", "AMC + CIP", "AMC + GEN"),
|
||||||
|
syndromic_group = "syndrome"
|
||||||
|
)
|
||||||
|
wisca_out
|
||||||
|
```
|
||||||
|
|
||||||
|
| Syndromic Group | Amoxicillin/clavulanic acid | Amoxicillin/clavulanic acid + Ciprofloxacin | Amoxicillin/clavulanic acid + Gentamicin |
|
||||||
|
|:---|:---|:---|:---|
|
||||||
|
| Non-UTI | 72.5% (69.9-75.1%) | 86.9% (84.8-89%) | 91.4% (89.5-93%) |
|
||||||
|
| UTI | 86% (82.5-89%) | 94.8% (92.5-96.6%) | 97.9% (96.3-99%) |
|
||||||
|
|
||||||
|
The `AMR` package is available in 28 languages, which can all be used
|
||||||
|
for the [`wisca()`](https://amr-for-r.org/reference/antibiogram.md)
|
||||||
|
function too:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
wisca(data,
|
||||||
|
antimicrobials = c("AMC", "AMC + CIP", "AMC + GEN"),
|
||||||
|
syndromic_group = gsub("UTI", "UCI", data$syndrome),
|
||||||
|
language = "Spanish"
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
| Grupo sindrómico | Amoxicilina/ácido clavulánico | Amoxicilina/ácido clavulánico + Ciprofloxacina | Amoxicilina/ácido clavulánico + Gentamicina |
|
||||||
|
|:---|:---|:---|:---|
|
||||||
|
| Non-UCI | 72.6% (69.9-75.3%) | 87% (84.9-89.1%) | 91.4% (89.7-92.9%) |
|
||||||
|
| UCI | 86% (82.7-89%) | 94.8% (92.7-96.4%) | 97.9% (96.5-99%) |
|
||||||
|
|
||||||
|
### Interpreting the output
|
||||||
|
|
||||||
|
Each row shows the estimated empirical coverage for a regimen, with a
|
||||||
|
95% credible interval. When comparing regimens:
|
||||||
|
|
||||||
|
- **Overlapping credible intervals** mean there is no statistically
|
||||||
|
significant difference in coverage. If a narrower-spectrum regimen
|
||||||
|
overlaps with a broader one, the narrower-spectrum option can be
|
||||||
|
preferred on stewardship grounds.
|
||||||
|
- **Non-overlapping credible intervals** indicate a clinically
|
||||||
|
meaningful difference in coverage.
|
||||||
|
|
||||||
|
### Plotting
|
||||||
|
|
||||||
|
WISCA results can be visualised in several ways. All plot functions work
|
||||||
|
on the output of
|
||||||
|
[`wisca()`](https://amr-for-r.org/reference/antibiogram.md) (or
|
||||||
|
`antibiogram(..., wisca = TRUE)`).
|
||||||
|
|
||||||
|
Below we use the `wisca_out` object that was generated above.
|
||||||
|
|
||||||
|
#### Coverage with credible intervals
|
||||||
|
|
||||||
|
The extended
|
||||||
|
[`autoplot()`](https://ggplot2.tidyverse.org/reference/autoplot.html)
|
||||||
|
method from the `ggplot2()` package produces a point-and-interval plot
|
||||||
|
showing the coverage estimate and 95% credible interval for each
|
||||||
|
regimen, grouped by syndromic stratum. This is the most direct way to
|
||||||
|
compare regimens: overlapping intervals suggest clinical
|
||||||
|
non-inferiority, non-overlapping intervals indicate a meaningful
|
||||||
|
difference.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
ggplot2::autoplot(wisca_out)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### Susceptibility vs. incidence weight
|
||||||
|
|
||||||
|
[`wisca_plot()`](https://amr-for-r.org/reference/antibiogram.md)
|
||||||
|
produces a scatter plot of the Monte Carlo simulation draws, showing
|
||||||
|
each pathogen’s susceptibility (x-axis) against its incidence weight
|
||||||
|
(y-axis) for each regimen. Each dot represents one of 1,000 simulated
|
||||||
|
draws, so the spread reflects posterior uncertainty. This plot reveals
|
||||||
|
*why* a regimen achieves its coverage: you can see which pathogens
|
||||||
|
dominate the syndrome (high on the y-axis), how susceptible they are
|
||||||
|
(position on the x-axis), and how uncertain both estimates are (spread
|
||||||
|
of the cloud). The dashed vertical lines denote the point estimates,
|
||||||
|
i.e., the coverage percentages. The ribbon behind the dashed lines
|
||||||
|
denote the credible interval, which is 95% at default.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
wisca_plot(wisca_out)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### Posterior coverage distributions
|
||||||
|
|
||||||
|
Setting `wisca_plot_type = "posterior_coverage"` shows the full
|
||||||
|
posterior distribution of coverage for each regimen as a density curve.
|
||||||
|
This is the most complete representation of what the Bayesian model
|
||||||
|
produces: each curve shows the relative likelihood of each coverage
|
||||||
|
value across all 1,000 simulations. Narrow, tall peaks indicate high
|
||||||
|
certainty; wide, flat curves indicate greater uncertainty. Where two
|
||||||
|
curves overlap, the regimens cannot be confidently distinguished.
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
wisca_plot(wisca_out, wisca_plot_type = "posterior_coverage")
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Sensible defaults, which can be customised
|
||||||
|
|
||||||
|
- `simulations = 1000`: number of Monte Carlo draws
|
||||||
|
- `conf_interval = 0.95`: coverage interval width
|
||||||
|
- `combine_SI = TRUE`: count “I” and “SDD” as susceptible
|
||||||
|
|
||||||
|
## Practical considerations
|
||||||
|
|
||||||
|
- **First isolates only**: always deduplicate using
|
||||||
|
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)
|
||||||
|
before running WISCA. Repeat isolates introduce bias.
|
||||||
|
- **Pathogen selection**: consider filtering with
|
||||||
|
[`top_n_microorganisms()`](https://amr-for-r.org/reference/top_n_microorganisms.md).
|
||||||
|
Including rare contaminants (e.g. CoNS without clinical context) can
|
||||||
|
distort estimates and may artificially lower coverage (Cook *et al.*,
|
||||||
|
2022).
|
||||||
|
- **Sample size**: coverage estimates become reliable with approximately
|
||||||
|
100+ isolates. For smaller datasets, consider pooling data from
|
||||||
|
multiple sites, but only after verifying that pathogen distributions
|
||||||
|
are sufficiently similar (Bielicki *et al.*, 2016).
|
||||||
|
- **Culture request bias**: WISCA is only as good as the data it is
|
||||||
|
based on. If cultures are selectively requested (e.g. only after
|
||||||
|
treatment failure), the dataset will be biased towards resistant
|
||||||
|
isolates. A robust culture policy is essential for reliable estimates.
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
|
||||||
|
- It assumes your data are representative of the patient population you
|
||||||
|
are treating
|
||||||
|
- No direct adjustment for patient-level covariates, although these can
|
||||||
|
be passed onto the `syndromic_group` argument for stratification
|
||||||
|
- WISCA does not model resistance trends over time; for that, you might
|
||||||
|
want to use `tidymodels`, for which we [wrote a basic
|
||||||
|
introduction](https://amr-for-r.org/articles/AMR_with_tidymodels.html)
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
WISCA enables:
|
||||||
|
|
||||||
|
- **Empirical regimen comparison**, answering the clinician’s actual
|
||||||
|
question
|
||||||
|
- **Syndrome-specific coverage estimation**, stratifiable by any
|
||||||
|
clinical variable
|
||||||
|
- **Fully probabilistic interpretation**, with credible intervals that
|
||||||
|
honestly communicate uncertainty
|
||||||
|
|
||||||
|
It is available in the `AMR` package via either:
|
||||||
|
|
||||||
|
``` r
|
||||||
|
|
||||||
|
wisca(...)
|
||||||
|
|
||||||
|
antibiogram(..., wisca = TRUE)
|
||||||
|
```
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
1. Hebert C, Ridgway J, Vekhter B, Brown EC, Weber SG, Robicsek A.
|
||||||
|
Demonstration of the weighted-incidence syndromic combination
|
||||||
|
antibiogram: an empiric prescribing decision aid. *Infect Control
|
||||||
|
Hosp Epidemiol.* 2012;33(4):381-388.
|
||||||
|
<https://doi.org/10.1086/664768>
|
||||||
|
2. Randhawa V, Sarwar S, Walker S, Elligsen M, Palmay L, Daneman N.
|
||||||
|
Weighted-incidence syndromic combination antibiograms to guide
|
||||||
|
empiric treatment of critical care infections: a retrospective
|
||||||
|
cohort study. *Crit Care.* 2014;18(3):R112.
|
||||||
|
<https://doi.org/10.1186/cc13901>
|
||||||
|
3. Bielicki JA, Sharland M, Johnson AP, Henderson KL, Cromwell DA.
|
||||||
|
Selecting appropriate empirical antibiotic regimens for paediatric
|
||||||
|
bloodstream infections: application of a Bayesian decision model to
|
||||||
|
local and pooled antimicrobial resistance surveillance data. *J
|
||||||
|
Antimicrob Chemother.* 2016;71(3):794-802.
|
||||||
|
<https://doi.org/10.1093/jac/dkv397>
|
||||||
|
4. Cook A, Sharland M, Yau Y, Bielicki J. Improving empiric antibiotic
|
||||||
|
prescribing in pediatric bloodstream infections: a potential
|
||||||
|
application of weighted-incidence syndromic combination antibiograms
|
||||||
|
(WISCA). *Expert Rev Anti Infect Ther.* 2022;20(3):445-456.
|
||||||
|
<https://doi.org/10.1080/14787210.2021.1967145>
|
||||||
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 173 KiB |
|
After Width: | Height: | Size: 88 KiB |
@@ -0,0 +1,565 @@
|
|||||||
|
# Download data sets for download / own use
|
||||||
|
|
||||||
|
All reference data (about microorganisms, antimicrobials, SIR
|
||||||
|
interpretation, EUCAST rules, etc.) in this `AMR` package are reliable,
|
||||||
|
up-to-date and freely available. We continually export our data sets to
|
||||||
|
formats for use in R, MS Excel, Apache Feather, Apache Parquet, SPSS,
|
||||||
|
and Stata. We also provide tab-separated text files that are
|
||||||
|
machine-readable and suitable for input in any software program, such as
|
||||||
|
laboratory information systems.
|
||||||
|
|
||||||
|
> If you are working in Python, be sure to use our [AMR for
|
||||||
|
> Python](https://amr-for-r.org/articles/AMR_for_Python.html) package.
|
||||||
|
> It allows all relevant AMR data sets to be natively available in
|
||||||
|
> Python.
|
||||||
|
|
||||||
|
## `microorganisms`: Full Microbial Taxonomy
|
||||||
|
|
||||||
|
A data set with 96 982 rows and 28 columns, containing the following
|
||||||
|
column names:
|
||||||
|
*mo*, *fullname*, *status*, *domain*, *kingdom*, *phylum*, *class*,
|
||||||
|
*order*, *family*, *genus*, *species*, *subspecies*, *rank*, *ref*,
|
||||||
|
*oxygen_tolerance*, *morphology*, *source*, *lpsn*, *lpsn_parent*,
|
||||||
|
*lpsn_renamed_to*, *mycobank*, *mycobank_parent*, *mycobank_renamed_to*,
|
||||||
|
*gbif*, *gbif_parent*, *gbif_renamed_to*, *prevalence*, and *snomed*.
|
||||||
|
|
||||||
|
This data set is in R available as `microorganisms`, after you load the
|
||||||
|
`AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 22 June 2026 23:38:13 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/microorganisms.html).
|
||||||
|
|
||||||
|
**Direct download links:**
|
||||||
|
|
||||||
|
- Download as [original R Data Structure (RDS)
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.rds)
|
||||||
|
(2.2 MB)
|
||||||
|
- Download as [tab-separated text
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.txt)
|
||||||
|
(23.1 MB)
|
||||||
|
- Download as [Microsoft Excel
|
||||||
|
workbook](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.xlsx)
|
||||||
|
(11.4 MB)
|
||||||
|
- Download as [Apache Feather
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.feather)
|
||||||
|
(11 MB)
|
||||||
|
- Download as [Apache Parquet
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.parquet)
|
||||||
|
(4.6 MB)
|
||||||
|
- Download as [IBM SPSS Statistics data
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.sav)
|
||||||
|
(35.2 MB)
|
||||||
|
- Download as [Stata DTA
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.dta)
|
||||||
|
(96.6 MB)
|
||||||
|
|
||||||
|
**NOTE: The exported files for SPSS and Stata contain only the first 50
|
||||||
|
SNOMED codes per record, as their file size would otherwise exceed 100
|
||||||
|
MB; the file size limit of GitHub.** Their file structures and
|
||||||
|
compression techniques are very inefficient. Advice? Use R instead. It’s
|
||||||
|
free and much better in many ways.
|
||||||
|
|
||||||
|
The tab-separated text file and Microsoft Excel workbook both contain
|
||||||
|
all SNOMED codes as comma separated values.
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
Included (sub)species per taxonomic kingdom:
|
||||||
|
|
||||||
|
| Kingdom | Number of (sub)species |
|
||||||
|
|:-----------------:|:----------------------:|
|
||||||
|
| | 20 |
|
||||||
|
| (unknown kingdom) | 8 |
|
||||||
|
| Animalia | 2 015 |
|
||||||
|
| Archaea | 150 |
|
||||||
|
| Bacillati | 24 200 |
|
||||||
|
| Bacteria | 2 |
|
||||||
|
|
||||||
|
First 6 rows when filtering on genus *Escherichia*:
|
||||||
|
|
||||||
|
| mo | fullname | status | domain | kingdom | phylum | class | order | family | genus | species | subspecies | rank | ref | oxygen_tolerance | morphology | source | lpsn | lpsn_parent | lpsn_renamed_to | mycobank | mycobank_parent | mycobank_renamed_to | gbif | gbif_parent | gbif_renamed_to | prevalence | snomed |
|
||||||
|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||||
|
| B_ESCHR | Escherichia | accepted | Bacteria | Pseudomonadati | Pseudomonadota | Gammaproteobacteria | Enterobacterales | Enterobacteriaceae | Escherichia | | | genus | Castellani et al., 1919 | facultative anaerobe | rods | LPSN | 515602 | 482 | | | | | CS33H | CRYWR | | 1 | 407310004, 407251000, 407281008, … |
|
||||||
|
| B_ESCHR_ADCR | Escherichia adecarboxylata | synonym | Bacteria | Pseudomonadati | Pseudomonadota | Gammaproteobacteria | Enterobacterales | Enterobacteriaceae | Escherichia | adecarboxylata | | species | Leclerc, 1962 | likely facultative anaerobe | rods | LPSN | 776052 | 515602 | 777447 | | | | CS33J | CS33H | 3SVX6 | 1 | |
|
||||||
|
| B_ESCHR_ALBR | Escherichia albertii | accepted | Bacteria | Pseudomonadati | Pseudomonadota | Gammaproteobacteria | Enterobacterales | Enterobacteriaceae | Escherichia | albertii | | species | Huys et al., 2003 | facultative anaerobe | rods | LPSN | 776053 | 515602 | | | | | 3BGTB | CS33H | | 1 | 419388003 |
|
||||||
|
| B_ESCHR_BLTT | Escherichia blattae | synonym | Bacteria | Pseudomonadati | Pseudomonadota | Gammaproteobacteria | Enterobacterales | Enterobacteriaceae | Escherichia | blattae | | species | Burgess et al., 1973 | likely facultative anaerobe | rods | LPSN | 776056 | 515602 | 788468 | | | | CS33K | CS33H | 4X4P7 | 1 | |
|
||||||
|
| B_ESCHR_COLI | Escherichia coli | accepted | Bacteria | Pseudomonadati | Pseudomonadota | Gammaproteobacteria | Enterobacterales | Enterobacteriaceae | Escherichia | coli | | species | Castellani et al., 1919 | facultative anaerobe | rods | LPSN | 776057 | 515602 | | | | | NT3L7 | CS33H | | 1 | 1095001000112106, 715307006, 737528008, … |
|
||||||
|
| B_ESCHR_COLI_COLI | Escherichia coli coli | accepted | Bacteria | Pseudomonadati | Pseudomonadota | Gammaproteobacteria | Enterobacterales | Enterobacteriaceae | Escherichia | coli | coli | subspecies | | | | GBIF | | 776057 | | | | | 12233256 | NT3L7 | | 1 | |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `antimicrobials`: Antibiotic and Antifungal Drugs
|
||||||
|
|
||||||
|
A data set with 505 rows and 14 columns, containing the following column
|
||||||
|
names:
|
||||||
|
*ab*, *cid*, *name*, *group*, *atc*, *atc_group1*, *atc_group2*,
|
||||||
|
*abbreviations*, *synonyms*, *oral_ddd*, *oral_units*, *iv_ddd*,
|
||||||
|
*iv_units*, and *loinc*.
|
||||||
|
|
||||||
|
This data set is in R available as `antimicrobials`, after you load the
|
||||||
|
`AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 23 June 2026 12:38:59 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/antimicrobials.html).
|
||||||
|
|
||||||
|
**Direct download links:**
|
||||||
|
|
||||||
|
- Download as [original R Data Structure (RDS)
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antimicrobials.rds)
|
||||||
|
(44 kB)
|
||||||
|
- Download as [tab-separated text
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antimicrobials.txt)
|
||||||
|
(0.1 MB)
|
||||||
|
- Download as [Microsoft Excel
|
||||||
|
workbook](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antimicrobials.xlsx)
|
||||||
|
(79 kB)
|
||||||
|
- Download as [Apache Feather
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antimicrobials.feather)
|
||||||
|
(0.1 MB)
|
||||||
|
- Download as [Apache Parquet
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antimicrobials.parquet)
|
||||||
|
(94 kB)
|
||||||
|
- Download as [IBM SPSS Statistics data
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antimicrobials.sav)
|
||||||
|
(0.4 MB)
|
||||||
|
- Download as [Stata DTA
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antimicrobials.dta)
|
||||||
|
(10 kB)
|
||||||
|
|
||||||
|
The tab-separated text, Microsoft Excel, SPSS, and Stata files all
|
||||||
|
contain the ATC codes, common abbreviations, trade names and LOINC codes
|
||||||
|
as comma separated values.
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
| ab | cid | name | group | atc | atc_group1 | atc_group2 | abbreviations | synonyms | oral_ddd | oral_units | iv_ddd | iv_units | loinc |
|
||||||
|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||||
|
| AMK | 37768 | Amikacin | Aminoglycosides | D06AX12, J01GB06, QD06AX12, … | Aminoglycoside antibacterials | Other aminoglycosides | ak, ami, amik, … | amikacillin, amikacina, amikacine, … | | | 1.0 | g | 101493-5, 11-7, 12-5, … |
|
||||||
|
| AMX | 33613 | Amoxicillin | Aminopenicillins, Penicillins, Beta-lactams | J01CA04, QG51AA03, QJ01CA04 | Beta-lactam antibacterials, penicillins | Penicillins with extended spectrum | ac, amox, amoxic, … | acuotricina, alfamox, alfida, … | 1.5 | g | 3.0 | g | 101498-4, 15-8, 16-6, … |
|
||||||
|
| AMC | 23665637 | Amoxicillin/clavulanic acid | Aminopenicillins, Penicillins, Beta-lactams, … | J01CR02, QJ01CR02 | Beta-lactam antibacterials, penicillins | Combinations of penicillins, incl. beta-lactamase inhibitors | a/c, amcl, aml, … | amocla, amoclan, amoclav, … | 1.5 | g | 3.0 | g | |
|
||||||
|
| AMP | 6249 | Ampicillin | Aminopenicillins, Penicillins, Beta-lactams | J01CA01, QJ01CA01, QJ51CA01, … | Beta-lactam antibacterials, penicillins | Penicillins with extended spectrum | am, amp, amp100, … | adobacillin, alpen, amblosin, … | 2.0 | g | 6.0 | g | 101477-8, 101478-6, 18864-9, … |
|
||||||
|
| AZM | 447043 | Azithromycin | Macrolides | J01FA10, QJ01FA10, QS01AA26, … | Macrolides, lincosamides and streptogramins | Macrolides | az, azi, azit, … | aritromicina, aruzilina, azasite, … | 0.3 | g | 0.5 | g | 100043-9, 16420-2, 16421-0, … |
|
||||||
|
| PEN | 5904 | Benzylpenicillin | Penicillins, Beta-lactams | J01CE01, QJ01CE01, QJ51CE01, … | Combinations of antibacterials | Combinations of antibacterials | bepe, pen, peni, … | bencilpenicilina, benzopenicillin, benzylpenicilline, … | | | 3.6 | g | |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `clinical_breakpoints`: Interpretation from MIC values & disk diameters to SIR
|
||||||
|
|
||||||
|
A data set with 45 555 rows and 14 columns, containing the following
|
||||||
|
column names:
|
||||||
|
*guideline*, *type*, *host*, *method*, *site*, *mo*, *rank_index*, *ab*,
|
||||||
|
*ref_tbl*, *disk_dose*, *breakpoint_S*, *breakpoint_R*, *uti*, and
|
||||||
|
*is_SDD*.
|
||||||
|
|
||||||
|
This data set is in R available as `clinical_breakpoints`, after you
|
||||||
|
load the `AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 22 June 2026 23:38:13 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/clinical_breakpoints.html).
|
||||||
|
|
||||||
|
**Direct download links:**
|
||||||
|
|
||||||
|
- Download as [original R Data Structure (RDS)
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/clinical_breakpoints.rds)
|
||||||
|
(92 kB)
|
||||||
|
- Download as [tab-separated text
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/clinical_breakpoints.txt)
|
||||||
|
(4.2 MB)
|
||||||
|
- Download as [Microsoft Excel
|
||||||
|
workbook](https://github.com/msberends/AMR/raw/main/data-raw/datasets/clinical_breakpoints.xlsx)
|
||||||
|
(2.7 MB)
|
||||||
|
- Download as [Apache Feather
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/clinical_breakpoints.feather)
|
||||||
|
(2 MB)
|
||||||
|
- Download as [Apache Parquet
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/clinical_breakpoints.parquet)
|
||||||
|
(0.1 MB)
|
||||||
|
- Download as [IBM SPSS Statistics data
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/clinical_breakpoints.sav)
|
||||||
|
(7.5 MB)
|
||||||
|
- Download as [Stata DTA
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/clinical_breakpoints.dta)
|
||||||
|
(12.6 MB)
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
| guideline | type | host | method | site | mo | mo_name | rank_index | ab | ab_name | ref_tbl | disk_dose | breakpoint_S | breakpoint_R | uti | is_SDD |
|
||||||
|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||||
|
| EUCAST 2026 | human | human | DISK | | B_ACHRMB_XYLS | Achromobacter xylosoxidans | 2 | MEM | Meropenem | A. xylosoxidans | 10 mcg | 26.000 | 20.000 | FALSE | FALSE |
|
||||||
|
| EUCAST 2026 | human | human | MIC | | B_ACHRMB_XYLS | Achromobacter xylosoxidans | 2 | MEM | Meropenem | A. xylosoxidans | | 1.000 | 4.000 | FALSE | FALSE |
|
||||||
|
| EUCAST 2026 | human | human | DISK | | B_ACHRMB_XYLS | Achromobacter xylosoxidans | 2 | SXT | Trimethoprim/sulfamethoxazole | A. xylosoxidans | 1.25/23.75 mcg | 26.000 | 26.000 | FALSE | FALSE |
|
||||||
|
| EUCAST 2026 | human | human | MIC | | B_ACHRMB_XYLS | Achromobacter xylosoxidans | 2 | SXT | Trimethoprim/sulfamethoxazole | A. xylosoxidans | | 0.125 | 0.125 | FALSE | FALSE |
|
||||||
|
| EUCAST 2026 | human | human | DISK | | B_ACHRMB_XYLS | Achromobacter xylosoxidans | 2 | TZP | Piperacillin/tazobactam | A. xylosoxidans | 30/6 mcg | 26.000 | 26.000 | FALSE | FALSE |
|
||||||
|
| EUCAST 2026 | human | human | MIC | | B_ACHRMB_XYLS | Achromobacter xylosoxidans | 2 | TZP | Piperacillin/tazobactam | A. xylosoxidans | | 4.000 | 4.000 | FALSE | FALSE |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `microorganisms.groups`: Species Groups and Microbiological Complexes
|
||||||
|
|
||||||
|
A data set with 530 rows and 4 columns, containing the following column
|
||||||
|
names:
|
||||||
|
*mo_group*, *mo*, *mo_group_name*, and *mo_name*.
|
||||||
|
|
||||||
|
This data set is in R available as `microorganisms.groups`, after you
|
||||||
|
load the `AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 22 June 2026 23:38:13 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/microorganisms.groups.html).
|
||||||
|
|
||||||
|
**Direct download links:**
|
||||||
|
|
||||||
|
- Download as [original R Data Structure (RDS)
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.groups.rds)
|
||||||
|
(6 kB)
|
||||||
|
- Download as [tab-separated text
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.groups.txt)
|
||||||
|
(50 kB)
|
||||||
|
- Download as [Microsoft Excel
|
||||||
|
workbook](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.groups.xlsx)
|
||||||
|
(19 kB)
|
||||||
|
- Download as [Apache Feather
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.groups.feather)
|
||||||
|
(19 kB)
|
||||||
|
- Download as [Apache Parquet
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.groups.parquet)
|
||||||
|
(13 kB)
|
||||||
|
- Download as [IBM SPSS Statistics data
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.groups.sav)
|
||||||
|
(64 kB)
|
||||||
|
- Download as [Stata DTA
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.groups.dta)
|
||||||
|
(82 kB)
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
| mo_group | mo | mo_group_name | mo_name |
|
||||||
|
|:--:|:--:|:--:|:--:|
|
||||||
|
| B_ACNTB_BMNN-C | B_ACNTB_BMNN | Acinetobacter baumannii complex | Acinetobacter baumannii |
|
||||||
|
| B_ACNTB_BMNN-C | B_ACNTB_CLCC | Acinetobacter baumannii complex | Acinetobacter calcoaceticus |
|
||||||
|
| B_ACNTB_BMNN-C | B_ACNTB_LCTC | Acinetobacter baumannii complex | Acinetobacter dijkshoorniae |
|
||||||
|
| B_ACNTB_BMNN-C | B_ACNTB_NSCM | Acinetobacter baumannii complex | Acinetobacter nosocomialis |
|
||||||
|
| B_ACNTB_BMNN-C | B_ACNTB_PITT | Acinetobacter baumannii complex | Acinetobacter pittii |
|
||||||
|
| B_ACNTB_BMNN-C | B_ACNTB_SFRT | Acinetobacter baumannii complex | Acinetobacter seifertii |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `intrinsic_resistant`: Intrinsic Bacterial Resistance
|
||||||
|
|
||||||
|
A data set with 294 079 rows and 2 columns, containing the following
|
||||||
|
column names:
|
||||||
|
*mo* and *ab*.
|
||||||
|
|
||||||
|
This data set is in R available as `intrinsic_resistant`, after you load
|
||||||
|
the `AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 22 June 2026 23:38:13 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/intrinsic_resistant.html).
|
||||||
|
|
||||||
|
**Direct download links:**
|
||||||
|
|
||||||
|
- Download as [original R Data Structure (RDS)
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/intrinsic_resistant.rds)
|
||||||
|
(0.1 MB)
|
||||||
|
- Download as [tab-separated text
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/intrinsic_resistant.txt)
|
||||||
|
(10.9 MB)
|
||||||
|
- Download as [Microsoft Excel
|
||||||
|
workbook](https://github.com/msberends/AMR/raw/main/data-raw/datasets/intrinsic_resistant.xlsx)
|
||||||
|
(3.1 MB)
|
||||||
|
- Download as [Apache Feather
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/intrinsic_resistant.feather)
|
||||||
|
(2.5 MB)
|
||||||
|
- Download as [Apache Parquet
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/intrinsic_resistant.parquet)
|
||||||
|
(0.3 MB)
|
||||||
|
- Download as [IBM SPSS Statistics data
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/intrinsic_resistant.sav)
|
||||||
|
(16 MB)
|
||||||
|
- Download as [Stata DTA
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/intrinsic_resistant.dta)
|
||||||
|
(28.6 MB)
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
Example rows when filtering on *Enterobacter cloacae*:
|
||||||
|
|
||||||
|
| microorganism | antibiotic |
|
||||||
|
|:--------------------:|:---------------------------:|
|
||||||
|
| Enterobacter cloacae | Acetylmidecamycin |
|
||||||
|
| Enterobacter cloacae | Acetylspiramycin |
|
||||||
|
| Enterobacter cloacae | Amoxicillin |
|
||||||
|
| Enterobacter cloacae | Amoxicillin/clavulanic acid |
|
||||||
|
| Enterobacter cloacae | Ampicillin |
|
||||||
|
| Enterobacter cloacae | Ampicillin/sulbactam |
|
||||||
|
| Enterobacter cloacae | Avoparcin |
|
||||||
|
| Enterobacter cloacae | Azithromycin |
|
||||||
|
| Enterobacter cloacae | Benzylpenicillin |
|
||||||
|
| Enterobacter cloacae | Bleomycin |
|
||||||
|
| Enterobacter cloacae | Cadazolid |
|
||||||
|
| Enterobacter cloacae | Cefadroxil |
|
||||||
|
| Enterobacter cloacae | Cefalexin |
|
||||||
|
| Enterobacter cloacae | Cefalotin |
|
||||||
|
| Enterobacter cloacae | Cefazolin |
|
||||||
|
| Enterobacter cloacae | Cefoxitin |
|
||||||
|
| Enterobacter cloacae | Clarithromycin |
|
||||||
|
| Enterobacter cloacae | Clindamycin |
|
||||||
|
| Enterobacter cloacae | Cycloserine |
|
||||||
|
| Enterobacter cloacae | Dalbavancin |
|
||||||
|
| Enterobacter cloacae | Dirithromycin |
|
||||||
|
| Enterobacter cloacae | Erythromycin |
|
||||||
|
| Enterobacter cloacae | Flurithromycin |
|
||||||
|
| Enterobacter cloacae | Fusidic acid |
|
||||||
|
| Enterobacter cloacae | Gamithromycin |
|
||||||
|
| Enterobacter cloacae | Josamycin |
|
||||||
|
| Enterobacter cloacae | Kitasamycin |
|
||||||
|
| Enterobacter cloacae | Lincomycin |
|
||||||
|
| Enterobacter cloacae | Linezolid |
|
||||||
|
| Enterobacter cloacae | Meleumycin |
|
||||||
|
| Enterobacter cloacae | Midecamycin |
|
||||||
|
| Enterobacter cloacae | Miocamycin |
|
||||||
|
| Enterobacter cloacae | Nafithromycin |
|
||||||
|
| Enterobacter cloacae | Norvancomycin |
|
||||||
|
| Enterobacter cloacae | Oleandomycin |
|
||||||
|
| Enterobacter cloacae | Oritavancin |
|
||||||
|
| Enterobacter cloacae | Ostreogrycin |
|
||||||
|
| Enterobacter cloacae | Pirlimycin |
|
||||||
|
| Enterobacter cloacae | Primycin |
|
||||||
|
| Enterobacter cloacae | Pristinamycin |
|
||||||
|
| Enterobacter cloacae | Quinupristin/dalfopristin |
|
||||||
|
| Enterobacter cloacae | Ramoplanin |
|
||||||
|
| Enterobacter cloacae | Rifampicin |
|
||||||
|
| Enterobacter cloacae | Rokitamycin |
|
||||||
|
| Enterobacter cloacae | Roxithromycin |
|
||||||
|
| Enterobacter cloacae | Solithromycin |
|
||||||
|
| Enterobacter cloacae | Spiramycin |
|
||||||
|
| Enterobacter cloacae | Tedizolid |
|
||||||
|
| Enterobacter cloacae | Teicoplanin |
|
||||||
|
| Enterobacter cloacae | Telavancin |
|
||||||
|
| Enterobacter cloacae | Telithromycin |
|
||||||
|
| Enterobacter cloacae | Thiacetazone |
|
||||||
|
| Enterobacter cloacae | Tildipirosin |
|
||||||
|
| Enterobacter cloacae | Tilmicosin |
|
||||||
|
| Enterobacter cloacae | Troleandomycin |
|
||||||
|
| Enterobacter cloacae | Tulathromycin |
|
||||||
|
| Enterobacter cloacae | Tylosin |
|
||||||
|
| Enterobacter cloacae | Tylvalosin |
|
||||||
|
| Enterobacter cloacae | Vancomycin |
|
||||||
|
| Enterobacter cloacae | Virginiamycine |
|
||||||
|
| Enterobacter cloacae | Zorbamycin |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `dosage`: Dosage Guidelines from EUCAST
|
||||||
|
|
||||||
|
A data set with 759 rows and 9 columns, containing the following column
|
||||||
|
names:
|
||||||
|
*ab*, *name*, *type*, *dose*, *dose_times*, *administration*, *notes*,
|
||||||
|
*original_txt*, and *eucast_version*.
|
||||||
|
|
||||||
|
This data set is in R available as `dosage`, after you load the `AMR`
|
||||||
|
package.
|
||||||
|
|
||||||
|
It was last updated on 20 April 2025 10:55:31 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/dosage.html).
|
||||||
|
|
||||||
|
**Direct download links:**
|
||||||
|
|
||||||
|
- Download as [original R Data Structure (RDS)
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/dosage.rds)
|
||||||
|
(4 kB)
|
||||||
|
- Download as [tab-separated text
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/dosage.txt)
|
||||||
|
(66 kB)
|
||||||
|
- Download as [Microsoft Excel
|
||||||
|
workbook](https://github.com/msberends/AMR/raw/main/data-raw/datasets/dosage.xlsx)
|
||||||
|
(37 kB)
|
||||||
|
- Download as [Apache Feather
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/dosage.feather)
|
||||||
|
(28 kB)
|
||||||
|
- Download as [Apache Parquet
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/dosage.parquet)
|
||||||
|
(9 kB)
|
||||||
|
- Download as [IBM SPSS Statistics data
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/dosage.sav)
|
||||||
|
(97 kB)
|
||||||
|
- Download as [Stata DTA
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/dosage.dta)
|
||||||
|
(0.2 MB)
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
| ab | name | type | dose | dose_times | administration | notes | original_txt | eucast_version |
|
||||||
|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||||
|
| AMK | Amikacin | standard_dosage | 25-30 mg/kg | 1 | iv | | 25-30 mg/kg x 1 iv | 15 |
|
||||||
|
| AMX | Amoxicillin | high_dosage | 2 g | 6 | iv | | 2 g x 6 iv | 15 |
|
||||||
|
| AMX | Amoxicillin | standard_dosage | 1 g | 3 | iv | | 1 g x 3-4 iv | 15 |
|
||||||
|
| AMX | Amoxicillin | high_dosage | 0.75-1 g | 3 | oral | | 0.75-1 g x 3 oral | 15 |
|
||||||
|
| AMX | Amoxicillin | standard_dosage | 0.5 g | 3 | oral | | 0.5 g x 3 oral | 15 |
|
||||||
|
| AMX | Amoxicillin | uncomplicated_uti | 0.5 g | 3 | oral | | 0.5 g x 3 oral | 15 |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `example_isolates`: Example Data for Practice
|
||||||
|
|
||||||
|
A data set with 2 000 rows and 46 columns, containing the following
|
||||||
|
column names:
|
||||||
|
*date*, *patient*, *age*, *gender*, *ward*, *mo*, *PEN*, *OXA*, *FLC*,
|
||||||
|
*AMX*, *AMC*, *AMP*, *TZP*, *CZO*, *FEP*, *CXM*, *FOX*, *CTX*, *CAZ*,
|
||||||
|
*CRO*, *GEN*, *TOB*, *AMK*, *KAN*, *TMP*, *SXT*, *NIT*, *FOS*, *LNZ*,
|
||||||
|
*CIP*, *MFX*, *VAN*, *TEC*, *TCY*, *TGC*, *DOX*, *ERY*, *CLI*, *AZM*,
|
||||||
|
*IPM*, *MEM*, *MTR*, *CHL*, *COL*, *MUP*, and *RIF*.
|
||||||
|
|
||||||
|
This data set is in R available as `example_isolates`, after you load
|
||||||
|
the `AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 24 June 2026 16:36:47 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/example_isolates.html).
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
| date | patient | age | gender | ward | mo | PEN | OXA | FLC | AMX | AMC | AMP | TZP | CZO | FEP | CXM | FOX | CTX | CAZ | CRO | GEN | TOB | AMK | KAN | TMP | SXT | NIT | FOS | LNZ | CIP | MFX | VAN | TEC | TCY | TGC | DOX | ERY | CLI | AZM | IPM | MEM | MTR | CHL | COL | MUP | RIF |
|
||||||
|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||||
|
| 2002-01-02 | A77334 | 65 | F | Clinical | B_ESCHR_COLI | R | | | | I | | | | | I | | | | | | | | | R | R | | | R | | | R | R | R | | | R | R | R | | | | | | | R |
|
||||||
|
| 2002-01-03 | A77334 | 65 | F | Clinical | B_ESCHR_COLI | R | | | | I | | | | | I | | | | | | | | | R | R | | | R | | | R | R | R | | | R | R | R | | | | | | | R |
|
||||||
|
| 2002-01-07 | 067927 | 45 | F | ICU | B_STPHY_EPDR | R | | R | | | | | | | R | | | R | | | | | | S | S | | | | | | S | | S | S | S | R | | R | | | | | R | | |
|
||||||
|
| 2002-01-07 | 067927 | 45 | F | ICU | B_STPHY_EPDR | R | | R | | | | | | | R | | | R | | | | | | S | S | | | | | | S | | S | S | S | R | | R | | | | | R | | |
|
||||||
|
| 2002-01-13 | 067927 | 45 | F | ICU | B_STPHY_EPDR | R | | R | | | | | | | R | | | R | | | | | | R | | | | | | | S | | S | S | S | R | | R | | | | | R | | |
|
||||||
|
| 2002-01-13 | 067927 | 45 | F | ICU | B_STPHY_EPDR | R | | R | | | | | | | R | | | R | | | | | | R | | | | | | | S | | S | S | S | R | R | R | | | | | R | | |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `example_isolates_unclean`: Example Data for Practice
|
||||||
|
|
||||||
|
A data set with 3 000 rows and 8 columns, containing the following
|
||||||
|
column names:
|
||||||
|
*patient_id*, *hospital*, *date*, *bacteria*, *AMX*, *AMC*, *CIP*, and
|
||||||
|
*GEN*.
|
||||||
|
|
||||||
|
This data set is in R available as `example_isolates_unclean`, after you
|
||||||
|
load the `AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 27 August 2022 18:49:37 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/example_isolates_unclean.html).
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
| patient_id | hospital | date | bacteria | AMX | AMC | CIP | GEN |
|
||||||
|
|:----------:|:--------:|:----------:|:-------------:|:---:|:---:|:---:|:---:|
|
||||||
|
| J3 | A | 2012-11-21 | E. coli | R | I | S | S |
|
||||||
|
| R7 | A | 2018-04-03 | K. pneumoniae | R | I | S | S |
|
||||||
|
| P3 | A | 2014-09-19 | E. coli | R | S | S | S |
|
||||||
|
| P10 | A | 2015-12-10 | E. coli | S | I | S | S |
|
||||||
|
| B7 | A | 2015-03-02 | E. coli | S | S | S | S |
|
||||||
|
| W3 | A | 2018-03-31 | S. aureus | R | S | R | S |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `microorganisms.codes`: Common Laboratory Codes
|
||||||
|
|
||||||
|
A data set with 6 029 rows and 2 columns, containing the following
|
||||||
|
column names:
|
||||||
|
*code* and *mo*.
|
||||||
|
|
||||||
|
This data set is in R available as `microorganisms.codes`, after you
|
||||||
|
load the `AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 22 June 2026 23:38:13 UTC. Find more info about
|
||||||
|
the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/microorganisms.codes.html).
|
||||||
|
|
||||||
|
**Direct download links:**
|
||||||
|
|
||||||
|
- Download as [original R Data Structure (RDS)
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.codes.rds)
|
||||||
|
(27 kB)
|
||||||
|
- Download as [tab-separated text
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.codes.txt)
|
||||||
|
(0.1 MB)
|
||||||
|
- Download as [Microsoft Excel
|
||||||
|
workbook](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.codes.xlsx)
|
||||||
|
(98 kB)
|
||||||
|
- Download as [Apache Feather
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.codes.feather)
|
||||||
|
(0.1 MB)
|
||||||
|
- Download as [Apache Parquet
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.codes.parquet)
|
||||||
|
(68 kB)
|
||||||
|
- Download as [IBM SPSS Statistics data
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.codes.sav)
|
||||||
|
(0.2 MB)
|
||||||
|
- Download as [Stata DTA
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/microorganisms.codes.dta)
|
||||||
|
(0.2 MB)
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
| code | mo |
|
||||||
|
|:----:|:------------:|
|
||||||
|
| 1011 | B_GRAMP |
|
||||||
|
| 1012 | B_GRAMP |
|
||||||
|
| 1013 | B_GRAMN |
|
||||||
|
| 1014 | B_GRAMN |
|
||||||
|
| 1015 | F_YEAST |
|
||||||
|
| 103 | B_ESCHR_COLI |
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
## `antivirals`: Antiviral Drugs
|
||||||
|
|
||||||
|
A data set with 120 rows and 11 columns, containing the following column
|
||||||
|
names:
|
||||||
|
*av*, *name*, *atc*, *cid*, *atc_group*, *synonyms*, *oral_ddd*,
|
||||||
|
*oral_units*, *iv_ddd*, *iv_units*, and *loinc*.
|
||||||
|
|
||||||
|
This data set is in R available as `antivirals`, after you load the
|
||||||
|
`AMR` package.
|
||||||
|
|
||||||
|
It was last updated on 20 October 2023 12:51:48 UTC. Find more info
|
||||||
|
about the contents, (scientific) source, and structure of this [data set
|
||||||
|
here](https://amr-for-r.org/reference/antimicrobials.html).
|
||||||
|
|
||||||
|
**Direct download links:**
|
||||||
|
|
||||||
|
- Download as [original R Data Structure (RDS)
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antivirals.rds)
|
||||||
|
(6 kB)
|
||||||
|
- Download as [tab-separated text
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antivirals.txt)
|
||||||
|
(17 kB)
|
||||||
|
- Download as [Microsoft Excel
|
||||||
|
workbook](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antivirals.xlsx)
|
||||||
|
(16 kB)
|
||||||
|
- Download as [Apache Feather
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antivirals.feather)
|
||||||
|
(16 kB)
|
||||||
|
- Download as [Apache Parquet
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antivirals.parquet)
|
||||||
|
(13 kB)
|
||||||
|
- Download as [IBM SPSS Statistics data
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antivirals.sav)
|
||||||
|
(32 kB)
|
||||||
|
- Download as [Stata DTA
|
||||||
|
file](https://github.com/msberends/AMR/raw/main/data-raw/datasets/antivirals.dta)
|
||||||
|
(78 kB)
|
||||||
|
|
||||||
|
The tab-separated text, Microsoft Excel, SPSS, and Stata files all
|
||||||
|
contain the trade names and LOINC codes as comma separated values.
|
||||||
|
|
||||||
|
**Example content**
|
||||||
|
|
||||||
|
| av | name | atc | cid | atc_group | synonyms | oral_ddd | oral_units | iv_ddd | iv_units | loinc |
|
||||||
|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||||
|
| ABA | Abacavir | J05AF06 | 441300 | Nucleoside and nucleotide reverse transcriptase inhibitors | abacavir sulfate, avacavir, ziagen | 0.6 | g | | | 29113-8, 30273-7, 30287-7, … |
|
||||||
|
| ACI | Aciclovir | J05AB01 | 135398513 | Nucleosides and nucleotides excl. reverse transcriptase inhibitors | acicloftal, aciclovier, aciclovirum, … | 4.0 | g | 4 | g | |
|
||||||
|
| ADD | Adefovir dipivoxil | J05AF08 | 60871 | Nucleoside and nucleotide reverse transcriptase inhibitors | adefovir di, adefovir di ester, adefovir dipivoxyl, … | 10.0 | mg | | | |
|
||||||
|
| AME | Amenamevir | J05AX26 | 11397521 | Other antivirals | amenalief | 0.4 | g | | | |
|
||||||
|
| AMP | Amprenavir | J05AE05 | 65016 | Protease inhibitors | agenerase, carbamate, prozei | 1.2 | g | | | 29114-6, 30296-8, 30297-6, … |
|
||||||
|
| ASU | Asunaprevir | J05AP06 | 16076883 | Antivirals for treatment of HCV infections | sunvepra, sunvepratrade | 0.2 | g | | | |
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Articles • AMR (for R)</title><!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png"><link rel="icon" type="”image/svg+xml”" href="../favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png"><link rel="icon" sizes="any" href="../favicon.ico"><link rel="manifest" href="../site.webmanifest"><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet"><link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet"><script src="../extra.js"></script><meta property="og:title" content="Articles"><meta property="og:image" content="https://amr-for-r.org/logo.svg"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script></head><body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto"><li class="nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to"><li><a class="dropdown-item" href="../articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="../reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="../news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul></div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-article-index">
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="../logo.svg" class="logo" alt=""><h1>Articles</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section ">
|
||||||
|
<h3>All vignettes</h3>
|
||||||
|
<div class="section-desc"></div>
|
||||||
|
|
||||||
|
<dl><dt><a href="AMR_for_Python.html">AMR for Python</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="AMR_with_tidymodels.html">AMR with tidymodels</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="AMR.html">Conduct AMR data analysis</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="datasets.html">Download data sets for download / own use</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="EUCAST.html">Apply EUCAST rules</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="PCA.html">Conduct principal component analysis (PCA) for AMR</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="WHONET.html">Work with WHONET data</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="WISCA.html">Estimating Empirical Coverage with WISCA</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd></dl></div>
|
||||||
|
</main></div>
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Articles
|
||||||
|
|
||||||
|
### All vignettes
|
||||||
|
|
||||||
|
- [AMR for Python](https://amr-for-r.org/articles/AMR_for_Python.md):
|
||||||
|
- [AMR with
|
||||||
|
tidymodels](https://amr-for-r.org/articles/AMR_with_tidymodels.md):
|
||||||
|
- [Conduct AMR data analysis](https://amr-for-r.org/articles/AMR.md):
|
||||||
|
- [Download data sets for download / own
|
||||||
|
use](https://amr-for-r.org/articles/datasets.md):
|
||||||
|
- [Apply EUCAST rules](https://amr-for-r.org/articles/EUCAST.md):
|
||||||
|
- [Conduct principal component analysis (PCA) for
|
||||||
|
AMR](https://amr-for-r.org/articles/PCA.md):
|
||||||
|
- [Work with WHONET data](https://amr-for-r.org/articles/WHONET.md):
|
||||||
|
- [Estimating Empirical Coverage with
|
||||||
|
WISCA](https://amr-for-r.org/articles/WISCA.md):
|
||||||
@@ -0,0 +1,215 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Authors and Citation • AMR (for R)</title><!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="favicon-96x96.png"><link rel="icon" type="”image/svg+xml”" href="favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png"><link rel="icon" sizes="any" href="favicon.ico"><link rel="manifest" href="site.webmanifest"><script src="deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="deps/bootstrap-5.3.8/bootstrap.min.css" rel="stylesheet"><script src="deps/bootstrap-5.3.8/bootstrap.bundle.min.js"></script><link href="deps/Lato-0.4.10/font.css" rel="stylesheet"><link href="deps/Fira_Code-0.4.10/font.css" rel="stylesheet"><link href="deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="deps/headroom-0.11.0/headroom.min.js"></script><script src="deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="deps/search-1.0.0/fuse.min.js"></script><script src="deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="pkgdown.js"></script><link href="extra.css" rel="stylesheet"><script src="extra.js"></script><meta property="og:title" content="Authors and Citation"><meta property="og:image" content="https://amr-for-r.org/logo.svg"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script></head><body>
|
||||||
|
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
|
||||||
|
|
||||||
|
<a class="navbar-brand me-2" href="index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9075</small>
|
||||||
|
|
||||||
|
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div id="navbar" class="collapse navbar-collapse ms-3">
|
||||||
|
<ul class="navbar-nav me-auto"><li class="nav-item dropdown">
|
||||||
|
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
|
||||||
|
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to"><li><a class="dropdown-item" href="articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
|
||||||
|
<li><a class="dropdown-item" href="reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="active nav-item"><a class="nav-link" href="authors.html"><span class="fa fa-users"></span> Authors</a></li>
|
||||||
|
</ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search">
|
||||||
|
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="search.json"></form></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
|
||||||
|
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
|
||||||
|
</ul></div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav><div class="container template-citation-authors">
|
||||||
|
<div class="row">
|
||||||
|
<main id="main" class="col-md-9"><div class="page-header">
|
||||||
|
<img src="logo.svg" class="logo" alt=""><h1>Authors and Citation</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section level2">
|
||||||
|
<h2>Authors</h2>
|
||||||
|
|
||||||
|
<ul class="list-unstyled"><li>
|
||||||
|
<p><strong>Matthijs S. Berends</strong>. Author, maintainer. <a href="https://orcid.org/0000-0001-7620-1800" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Dennis Souverein</strong>. Author, contributor. <a href="https://orcid.org/0000-0003-0455-0336" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Erwin E. A. Hassing</strong>. Author, contributor.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Aislinn Cook</strong>. Contributor. <a href="https://orcid.org/0000-0002-9189-7815" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Andrew P. Norgan</strong>. Contributor. <a href="https://orcid.org/0000-0002-2955-2066" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Anita Williams</strong>. Contributor. <a href="https://orcid.org/0000-0002-5295-8451" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Annick Lenglet</strong>. Contributor. <a href="https://orcid.org/0000-0003-2013-8405" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Anthony Underwood</strong>. Contributor. <a href="https://orcid.org/0000-0002-8547-4277" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Anton Mymrikov</strong>. Contributor.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Bart C. Meijer</strong>. Contributor.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Christian F. Luz</strong>. Contributor. <a href="https://orcid.org/0000-0001-5809-5995" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Dmytro Mykhailenko</strong>. Contributor.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Eric H. L. C. M. Hazenberg</strong>. Contributor.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Gwen Knight</strong>. Contributor. <a href="https://orcid.org/0000-0002-7263-9896" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Jane Hawkey</strong>. Contributor. <a href="https://orcid.org/0000-0001-9661-5293" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Jason Stull</strong>. Contributor. <a href="https://orcid.org/0000-0002-9028-8153" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Javier Sanchez</strong>. Contributor. <a href="https://orcid.org/0000-0003-2605-8094" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Jonas Salm</strong>. Contributor.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Judith M. Fonville</strong>. Contributor.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Kathryn Holt</strong>. Contributor. <a href="https://orcid.org/0000-0003-3949-2471" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Larisse Bolton</strong>. Contributor. <a href="https://orcid.org/0000-0001-7879-2173" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Matthew Saab</strong>. Contributor. <a href="https://orcid.org/0009-0008-6626-7919" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Natacha Couto</strong>. Contributor. <a href="https://orcid.org/0000-0002-9152-5464" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Peter Dutey-Magni</strong>. Contributor. <a href="https://orcid.org/0000-0002-8942-9836" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Rogier P. Schade</strong>. Contributor. <a href="https://orcid.org/0000-0002-9487-4467" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Sofia Ny</strong>. Contributor. <a href="https://orcid.org/0000-0002-2017-1363" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Alex W. Friedrich</strong>. Thesis advisor. <a href="https://orcid.org/0000-0003-4881-038X" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Bhanu N. M. Sinha</strong>. Thesis advisor. <a href="https://orcid.org/0000-0003-1634-0010" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Casper J. Albers</strong>. Thesis advisor. <a href="https://orcid.org/0000-0002-9213-6743" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><strong>Corinna Glasner</strong>. Thesis advisor. <a href="https://orcid.org/0000-0003-1241-1328" target="orcid.widget" aria-label="ORCID" class="external-link"><span class="fab fa-orcid orcid" aria-hidden="true"></span></a>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
</ul></div>
|
||||||
|
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="citation">Citation</h2>
|
||||||
|
<p><small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/inst/CITATION" class="external-link"><code>inst/CITATION</code></a></small></p>
|
||||||
|
|
||||||
|
<p>Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C (2022).
|
||||||
|
“AMR: An R Package for Working with Antimicrobial Resistance Data.”
|
||||||
|
<em>Journal of Statistical Software</em>, <b>104</b>(3), 1–31.
|
||||||
|
<a href="https://doi.org/10.18637/jss.v104.i03" class="external-link">doi:10.18637/jss.v104.i03</a>.
|
||||||
|
</p>
|
||||||
|
<pre>@Article{,
|
||||||
|
title = {{AMR}: An {R} Package for Working with Antimicrobial Resistance Data},
|
||||||
|
author = {Matthijs S. Berends and Christian F. Luz and Alexander W. Friedrich and Bhanu N. M. Sinha and Casper J. Albers and Corinna Glasner},
|
||||||
|
journal = {Journal of Statistical Software},
|
||||||
|
year = {2022},
|
||||||
|
volume = {104},
|
||||||
|
number = {3},
|
||||||
|
pages = {1--31},
|
||||||
|
doi = {10.18637/jss.v104.i03},
|
||||||
|
}</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
|
||||||
|
</nav></aside></div>
|
||||||
|
|
||||||
|
|
||||||
|
<footer><div class="pkgdown-footer-left">
|
||||||
|
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU GPL 2.0</a>. Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands, in collaboration with <a href="https://amr-for-r.org/authors.html">many colleagues from around the world</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
# Authors and Citation
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
- **Matthijs S. Berends**. Author, maintainer.
|
||||||
|
[](https://orcid.org/0000-0001-7620-1800)
|
||||||
|
|
||||||
|
- **Dennis Souverein**. Author, contributor.
|
||||||
|
[](https://orcid.org/0000-0003-0455-0336)
|
||||||
|
|
||||||
|
- **Erwin E. A. Hassing**. Author, contributor.
|
||||||
|
|
||||||
|
- **Aislinn Cook**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-9189-7815)
|
||||||
|
|
||||||
|
- **Andrew P. Norgan**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-2955-2066)
|
||||||
|
|
||||||
|
- **Anita Williams**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-5295-8451)
|
||||||
|
|
||||||
|
- **Annick Lenglet**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0003-2013-8405)
|
||||||
|
|
||||||
|
- **Anthony Underwood**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-8547-4277)
|
||||||
|
|
||||||
|
- **Anton Mymrikov**. Contributor.
|
||||||
|
|
||||||
|
- **Bart C. Meijer**. Contributor.
|
||||||
|
|
||||||
|
- **Christian F. Luz**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0001-5809-5995)
|
||||||
|
|
||||||
|
- **Dmytro Mykhailenko**. Contributor.
|
||||||
|
|
||||||
|
- **Eric H. L. C. M. Hazenberg**. Contributor.
|
||||||
|
|
||||||
|
- **Gwen Knight**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-7263-9896)
|
||||||
|
|
||||||
|
- **Jane Hawkey**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0001-9661-5293)
|
||||||
|
|
||||||
|
- **Jason Stull**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-9028-8153)
|
||||||
|
|
||||||
|
- **Javier Sanchez**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0003-2605-8094)
|
||||||
|
|
||||||
|
- **Jonas Salm**. Contributor.
|
||||||
|
|
||||||
|
- **Judith M. Fonville**. Contributor.
|
||||||
|
|
||||||
|
- **Kathryn Holt**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0003-3949-2471)
|
||||||
|
|
||||||
|
- **Larisse Bolton**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0001-7879-2173)
|
||||||
|
|
||||||
|
- **Matthew Saab**. Contributor.
|
||||||
|
[](https://orcid.org/0009-0008-6626-7919)
|
||||||
|
|
||||||
|
- **Natacha Couto**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-9152-5464)
|
||||||
|
|
||||||
|
- **Peter Dutey-Magni**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-8942-9836)
|
||||||
|
|
||||||
|
- **Rogier P. Schade**. Contributor.
|
||||||
|
[](https://orcid.org/0000-0002-9487-4467)
|
||||||
|
|
||||||
|
- **Sofia Ny**. Contributor. [](https://orcid.org/0000-0002-2017-1363)
|
||||||
|
|
||||||
|
- **Alex W. Friedrich**. Thesis advisor.
|
||||||
|
[](https://orcid.org/0000-0003-4881-038X)
|
||||||
|
|
||||||
|
- **Bhanu N. M. Sinha**. Thesis advisor.
|
||||||
|
[](https://orcid.org/0000-0003-1634-0010)
|
||||||
|
|
||||||
|
- **Casper J. Albers**. Thesis advisor.
|
||||||
|
[](https://orcid.org/0000-0002-9213-6743)
|
||||||
|
|
||||||
|
- **Corinna Glasner**. Thesis advisor.
|
||||||
|
[](https://orcid.org/0000-0003-1241-1328)
|
||||||
|
|
||||||
|
## Citation
|
||||||
|
|
||||||
|
Source:
|
||||||
|
[`inst/CITATION`](https://github.com/msberends/AMR/blob/main/inst/CITATION)
|
||||||
|
|
||||||
|
Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C
|
||||||
|
(2022). “AMR: An R Package for Working with Antimicrobial Resistance
|
||||||
|
Data.” *Journal of Statistical Software*, **104**(3), 1–31.
|
||||||
|
[doi:10.18637/jss.v104.i03](https://doi.org/10.18637/jss.v104.i03).
|
||||||
|
|
||||||
|
@Article{,
|
||||||
|
title = {{AMR}: An {R} Package for Working with Antimicrobial Resistance Data},
|
||||||
|
author = {Matthijs S. Berends and Christian F. Luz and Alexander W. Friedrich and Bhanu N. M. Sinha and Casper J. Albers and Corinna Glasner},
|
||||||
|
journal = {Journal of Statistical Software},
|
||||||
|
year = {2022},
|
||||||
|
volume = {104},
|
||||||
|
number = {3},
|
||||||
|
pages = {1--31},
|
||||||
|
doi = {10.18637/jss.v104.i03},
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
@@ -0,0 +1,63 @@
|
|||||||
|
/* cyrillic-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(uU9eCBsR6Z2vfE9aq3bL0fxyUs4tcw4W_D1sJV37Nv7g.woff2) format('woff2');
|
||||||
|
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
}
|
||||||
|
/* cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(uU9eCBsR6Z2vfE9aq3bL0fxyUs4tcw4W_D1sJVT7Nv7g.woff2) format('woff2');
|
||||||
|
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
}
|
||||||
|
/* greek-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(uU9eCBsR6Z2vfE9aq3bL0fxyUs4tcw4W_D1sJVz7Nv7g.woff2) format('woff2');
|
||||||
|
unicode-range: U+1F00-1FFF;
|
||||||
|
}
|
||||||
|
/* greek */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(uU9eCBsR6Z2vfE9aq3bL0fxyUs4tcw4W_D1sJVP7Nv7g.woff2) format('woff2');
|
||||||
|
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
||||||
|
}
|
||||||
|
/* symbols2 */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(uU9eCBsR6Z2vfE9aq3bL0fxyUs4tcw4W_D1sJeraE8PZqw.woff2) format('woff2');
|
||||||
|
unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(uU9eCBsR6Z2vfE9aq3bL0fxyUs4tcw4W_D1sJV77Nv7g.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Fira Code';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(uU9eCBsR6Z2vfE9aq3bL0fxyUs4tcw4W_D1sJVD7Ng.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(S6uyw4BMUTPHjxAwXjeu.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(S6uyw4BMUTPHjx4wXg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(fonts/S6u8w4BMUTPHjxsAUi-qJCY.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(fonts/S6u8w4BMUTPHjxsAXC-q.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(fonts/S6uyw4BMUTPHjxAwXjeu.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(fonts/S6uyw4BMUTPHjx4wXg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
font-display: swap;
|
||||||
|
src: url(fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||