Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
@@ -1,3 +0,0 @@
|
|||||||
^.*\.Rproj$
|
|
||||||
^\.Rproj\.user$
|
|
||||||
.travis.yml
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
.Rproj.user
|
|
||||||
.Rhistory
|
|
||||||
.RData
|
|
||||||
.Ruserdata
|
|
||||||
AMR.Rproj
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
language: r
|
|
||||||
cache: packages
|
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
<!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="16x16" href="https://msberends.github.io/AMR/favicon-16x16.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="https://msberends.github.io/AMR/favicon-32x32.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="https://msberends.github.io/AMR/apple-touch-icon.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="https://msberends.github.io/AMR/apple-touch-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="https://msberends.github.io/AMR/apple-touch-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="https://msberends.github.io/AMR/apple-touch-icon-60x60.png">
|
||||||
|
<script src="https://msberends.github.io/AMR/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://msberends.github.io/AMR/deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="https://msberends.github.io/AMR/deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="https://msberends.github.io/AMR/deps/Lato-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="https://msberends.github.io/AMR/deps/Fira_Code-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="https://msberends.github.io/AMR/deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet">
|
||||||
|
<link href="https://msberends.github.io/AMR/deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet">
|
||||||
|
<script src="https://msberends.github.io/AMR/deps/headroom-0.11.0/headroom.min.js"></script><script src="https://msberends.github.io/AMR/deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="https://msberends.github.io/AMR/deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="https://msberends.github.io/AMR/deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="https://msberends.github.io/AMR/deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="https://msberends.github.io/AMR/deps/search-1.0.0/fuse.min.js"></script><script src="https://msberends.github.io/AMR/deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="https://msberends.github.io/AMR/pkgdown.js"></script><link href="https://msberends.github.io/AMR/extra.css" rel="stylesheet">
|
||||||
|
<script src="https://msberends.github.io/AMR/extra.js"></script><meta property="og:title" content="Page not found (404)">
|
||||||
|
<meta property="og:image" content="https://msberends.github.io/AMR/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://msberends.github.io/AMR/#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://msberends.github.io/AMR/index.html">AMR (for R)</a>
|
||||||
|
|
||||||
|
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9234</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://msberends.github.io/AMR/articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://msberends.github.io/AMR/reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://msberends.github.io/AMR/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://msberends.github.io/AMR/articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://msberends.github.io/AMR/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://msberends.github.io/AMR/articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://msberends.github.io/AMR/articles/MDR.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://msberends.github.io/AMR/articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://msberends.github.io/AMR/articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://msberends.github.io/AMR/reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
|
||||||
|
<li><a class="dropdown-item" href="https://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="https://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 330 KiB |
|
After Width: | Height: | Size: 384 KiB |
@@ -1,32 +0,0 @@
|
|||||||
Package: AMR
|
|
||||||
Version: 0.1.1
|
|
||||||
Date: 2018-03-13
|
|
||||||
Title: Antimicrobial Resistance Analysis
|
|
||||||
Authors@R: c(
|
|
||||||
person(
|
|
||||||
given = c("Matthijs", "S."),
|
|
||||||
family = "Berends",
|
|
||||||
email = "m.s.berends@umcg.nl",
|
|
||||||
role = c("aut", "cre")),
|
|
||||||
person(
|
|
||||||
given = c("Christian", "F."),
|
|
||||||
family = "Luz",
|
|
||||||
email = "c.f.luz@umcg.nl",
|
|
||||||
role = c("aut", "ctb")),
|
|
||||||
person(
|
|
||||||
given = c("Erwin", "E.A."),
|
|
||||||
family = "Hassing",
|
|
||||||
email = "e.hassing@certe.nl",
|
|
||||||
role = "ctb"))
|
|
||||||
Description: Functions to simplify the analysis of Antimicrobial Resistance (AMR)
|
|
||||||
of microbial isolates, by using new S3 classes and applying EUCAST expert rules
|
|
||||||
on antibiograms according to Leclercq (2013)
|
|
||||||
<doi:10.1111/j.1469-0691.2011.03703.x>.
|
|
||||||
Depends: R (>= 3.0)
|
|
||||||
Imports: dplyr (>= 0.7.0), reshape2 (>= 1.4.0), xml2, rvest
|
|
||||||
URL: https://github.com/msberends/AMR
|
|
||||||
BugReports: https://github.com/msberends/AMR/issues
|
|
||||||
License: GPL-2 | file LICENSE
|
|
||||||
Encoding: UTF-8
|
|
||||||
LazyData: true
|
|
||||||
RoxygenNote: 6.0.1.9000
|
|
||||||
@@ -1,339 +0,0 @@
|
|||||||
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.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
License is intended to guarantee your freedom to share and change free
|
|
||||||
software--to make sure the software is free for all its users. This
|
|
||||||
General Public License applies to most of the Free Software
|
|
||||||
Foundation's software and to any other program whose authors commit to
|
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
|
||||||
the GNU Lesser General Public License instead.) You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
this service if you wish), that you receive source code or can get it
|
|
||||||
if you want it, that you can change the software or use pieces of it
|
|
||||||
in new free programs; and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
|
||||||
These restrictions translate to certain responsibilities for you if you
|
|
||||||
distribute copies of the software, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must give the recipients all the rights that
|
|
||||||
you have. You must make sure that they, too, receive or can get the
|
|
||||||
source code. And you must show them these terms so they know their
|
|
||||||
rights.
|
|
||||||
|
|
||||||
We protect your rights with two steps: (1) copyright the software, and
|
|
||||||
(2) offer you this license which gives you legal permission to copy,
|
|
||||||
distribute and/or modify the software.
|
|
||||||
|
|
||||||
Also, for each author's protection and ours, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
software. If the software is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original, so
|
|
||||||
that any problems introduced by others will not reflect on the original
|
|
||||||
authors' reputations.
|
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software
|
|
||||||
patents. We wish to avoid the danger that redistributors of a free
|
|
||||||
program will individually obtain patent licenses, in effect making the
|
|
||||||
program proprietary. To prevent this, we have made it clear that any
|
|
||||||
patent must be licensed for everyone's free use or not licensed at all.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
convey the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
{description}
|
|
||||||
Copyright (C) {year} {fullname}
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License along
|
|
||||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
|
||||||
when it starts in an interactive mode:
|
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) year name of author
|
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, the commands you use may
|
|
||||||
be called something other than `show w' and `show c'; they could even be
|
|
||||||
mouse-clicks or menu items--whatever suits your program.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
||||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
||||||
|
|
||||||
{signature of Ty Coon}, 1 April 1989
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
This General Public License does not permit incorporating your program into
|
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
|
||||||
consider it more useful to permit linking proprietary applications with the
|
|
||||||
library. If this is what you want to do, use the GNU Lesser General
|
|
||||||
Public License instead of this License.
|
|
||||||
@@ -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="16x16" href="favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png"><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="apple-touch-icon.png"><link rel="apple-touch-icon" type="image/png" sizes="120x120" href="apple-touch-icon-120x120.png"><link rel="apple-touch-icon" type="image/png" sizes="76x76" href="apple-touch-icon-76x76.png"><link rel="apple-touch-icon" type="image/png" sizes="60x60" href="apple-touch-icon-60x60.png"><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.1/bootstrap.min.css" rel="stylesheet"><script src="deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="deps/Lato-0.4.9/font.css" rel="stylesheet"><link href="deps/Fira_Code-0.4.9/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://msberends.github.io/AMR/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="">2.1.1.9234</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="articles/MDR.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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
# Generated by roxygen2: do not edit by hand
|
|
||||||
|
|
||||||
S3method(as.double,mic)
|
|
||||||
S3method(as.integer,mic)
|
|
||||||
S3method(as.numeric,mic)
|
|
||||||
S3method(barplot,mic)
|
|
||||||
S3method(barplot,rsi)
|
|
||||||
S3method(plot,mic)
|
|
||||||
S3method(plot,rsi)
|
|
||||||
S3method(print,mic)
|
|
||||||
S3method(print,rsi)
|
|
||||||
S3method(summary,mic)
|
|
||||||
S3method(summary,rsi)
|
|
||||||
export(EUCAST_rules)
|
|
||||||
export(abname)
|
|
||||||
export(anti_join_bactlist)
|
|
||||||
export(as.mic)
|
|
||||||
export(as.rsi)
|
|
||||||
export(atc_property)
|
|
||||||
export(first_isolate)
|
|
||||||
export(full_join_bactlist)
|
|
||||||
export(inner_join_bactlist)
|
|
||||||
export(interpretive_reading)
|
|
||||||
export(is.mic)
|
|
||||||
export(is.rsi)
|
|
||||||
export(key_antibiotics)
|
|
||||||
export(left_join_bactlist)
|
|
||||||
export(mo_property)
|
|
||||||
export(right_join_bactlist)
|
|
||||||
export(rsi)
|
|
||||||
export(rsi_df)
|
|
||||||
export(rsi_predict)
|
|
||||||
export(semi_join_bactlist)
|
|
||||||
exportMethods(as.double.mic)
|
|
||||||
exportMethods(as.integer.mic)
|
|
||||||
exportMethods(as.numeric.mic)
|
|
||||||
exportMethods(barplot.mic)
|
|
||||||
exportMethods(barplot.rsi)
|
|
||||||
exportMethods(plot.mic)
|
|
||||||
exportMethods(plot.rsi)
|
|
||||||
exportMethods(print.mic)
|
|
||||||
exportMethods(print.rsi)
|
|
||||||
exportMethods(summary.mic)
|
|
||||||
exportMethods(summary.rsi)
|
|
||||||
importFrom(dplyr,"%>%")
|
|
||||||
importFrom(dplyr,all_vars)
|
|
||||||
importFrom(dplyr,any_vars)
|
|
||||||
importFrom(dplyr,arrange)
|
|
||||||
importFrom(dplyr,arrange_at)
|
|
||||||
importFrom(dplyr,between)
|
|
||||||
importFrom(dplyr,filter)
|
|
||||||
importFrom(dplyr,filter_at)
|
|
||||||
importFrom(dplyr,group_by)
|
|
||||||
importFrom(dplyr,group_by_at)
|
|
||||||
importFrom(dplyr,if_else)
|
|
||||||
importFrom(dplyr,lag)
|
|
||||||
importFrom(dplyr,left_join)
|
|
||||||
importFrom(dplyr,mutate)
|
|
||||||
importFrom(dplyr,n_distinct)
|
|
||||||
importFrom(dplyr,progress_estimated)
|
|
||||||
importFrom(dplyr,pull)
|
|
||||||
importFrom(dplyr,row_number)
|
|
||||||
importFrom(dplyr,select)
|
|
||||||
importFrom(dplyr,slice)
|
|
||||||
importFrom(dplyr,summarise)
|
|
||||||
importFrom(dplyr,tibble)
|
|
||||||
importFrom(dplyr,vars)
|
|
||||||
importFrom(graphics,axis)
|
|
||||||
importFrom(graphics,barplot)
|
|
||||||
importFrom(graphics,plot)
|
|
||||||
importFrom(graphics,text)
|
|
||||||
importFrom(reshape2,dcast)
|
|
||||||
importFrom(rvest,html_nodes)
|
|
||||||
importFrom(rvest,html_table)
|
|
||||||
importFrom(xml2,read_html)
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
## 0.1.1
|
|
||||||
- `EUCAST_rules` applies for amoxicillin even if ampicillin is missing
|
|
||||||
- Edited column names to comply with GLIMS, the laboratory information system
|
|
||||||
- Added more valid MIC values
|
|
||||||
- Renamed 'Daily Defined Dose' to 'Defined Daily Dose'
|
|
||||||
- Added barplots for `rsi` and `mic` classes
|
|
||||||
|
|
||||||
## 0.1.0
|
|
||||||
- First submission to CRAN.
|
|
||||||
@@ -1,660 +0,0 @@
|
|||||||
# ==================================================================== #
|
|
||||||
# TITLE #
|
|
||||||
# Antimicrobial Resistance (AMR) Analysis #
|
|
||||||
# #
|
|
||||||
# AUTHORS #
|
|
||||||
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
|
|
||||||
# #
|
|
||||||
# LICENCE #
|
|
||||||
# This program is free software; you can redistribute it and/or modify #
|
|
||||||
# it under the terms of the GNU General Public License version 2.0, #
|
|
||||||
# as published by the Free Software Foundation. #
|
|
||||||
# #
|
|
||||||
# This program is distributed in the hope that it will be useful, #
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
||||||
# GNU General Public License for more details. #
|
|
||||||
# ==================================================================== #
|
|
||||||
|
|
||||||
#' EUCAST expert rules
|
|
||||||
#'
|
|
||||||
#' Apply expert rules (like intrinsic resistance), as defined by the European Committee on Antimicrobial Susceptibility Testing (EUCAST, \url{http://eucast.org}), see \emph{Source}.
|
|
||||||
#' @param tbl table with antibiotic columns, like e.g. \code{amox} and \code{amcl}
|
|
||||||
#' @param col_bactcode column name of the bacteria ID in \code{tbl} - values of this column should be present in \code{bactlist$bactid}, see \code{\link{bactlist}}
|
|
||||||
#' @param info print progress
|
|
||||||
#' @param amcl,amik,amox,ampi,azit,aztr,cefa,cfra,cfep,cfot,cfox,cfta,cftr,cfur,chlo,cipr,clar,clin,clox,coli,czol,dapt,doxy,erta,eryt,fosf,fusi,gent,imip,kana,levo,linc,line,mero,mino,moxi,nali,neom,neti,nitr,novo,norf,oflo,peni,pita,poly,qida,rifa,roxi,siso,teic,tetr,tica,tige,tobr,trim,trsu,vanc column names of antibiotics. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing column will be skipped.
|
|
||||||
#' @param ... parameters that are passed on to \code{EUCAST_rules}
|
|
||||||
#' @rdname EUCAST
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% left_join select
|
|
||||||
#' @return table with edited variables of antibiotics.
|
|
||||||
#' @source
|
|
||||||
#' EUCAST Expert Rules Version 2.0: \cr
|
|
||||||
#' Leclercq et al. \strong{EUCAST expert rules in antimicrobial susceptibility testing.} \emph{Clin Microbiol Infect.} 2013;19(2):141-60. \cr
|
|
||||||
#' \url{https://doi.org/10.1111/j.1469-0691.2011.03703.x} \cr
|
|
||||||
#' \cr
|
|
||||||
#' EUCAST Expert Rules Version 3.1: \cr
|
|
||||||
#' \url{http://www.eucast.org/expert_rules_and_intrinsic_resistance}
|
|
||||||
#' @examples
|
|
||||||
#' a <- data.frame(bactid = c("STAAUR", # Staphylococcus aureus
|
|
||||||
#' "ENCFAE", # Enterococcus faecalis
|
|
||||||
#' "ESCCOL", # Escherichia coli
|
|
||||||
#' "KLEPNE", # Klebsiella pneumoniae
|
|
||||||
#' "PSEAER"), # Pseudomonas aeruginosa
|
|
||||||
#' vanc = "-", # Vancomycin
|
|
||||||
#' amox = "-", # Amoxicillin
|
|
||||||
#' coli = "-", # Colistin
|
|
||||||
#' cfta = "-", # Ceftazidime
|
|
||||||
#' cfur = "-", # Cefuroxime
|
|
||||||
#' stringsAsFactors = FALSE)
|
|
||||||
#' a
|
|
||||||
#'
|
|
||||||
#' b <- EUCAST_rules(a)
|
|
||||||
#' b
|
|
||||||
EUCAST_rules <- function(tbl,
|
|
||||||
col_bactcode = 'bactid',
|
|
||||||
info = TRUE,
|
|
||||||
amcl = 'amcl',
|
|
||||||
amik = 'amik',
|
|
||||||
amox = 'amox',
|
|
||||||
ampi = 'ampi',
|
|
||||||
azit = 'azit',
|
|
||||||
aztr = 'aztr',
|
|
||||||
cefa = 'cefa',
|
|
||||||
cfra = 'cfra',
|
|
||||||
cfep = 'cfep',
|
|
||||||
cfot = 'cfot',
|
|
||||||
cfox = 'cfox',
|
|
||||||
cfta = 'cfta',
|
|
||||||
cftr = 'cftr',
|
|
||||||
cfur = 'cfur',
|
|
||||||
chlo = 'chlo',
|
|
||||||
cipr = 'cipr',
|
|
||||||
clar = 'clar',
|
|
||||||
clin = 'clin',
|
|
||||||
clox = 'clox',
|
|
||||||
coli = 'coli',
|
|
||||||
czol = 'czol',
|
|
||||||
dapt = 'dapt',
|
|
||||||
doxy = 'doxy',
|
|
||||||
erta = 'erta',
|
|
||||||
eryt = 'eryt',
|
|
||||||
fosf = 'fosf',
|
|
||||||
fusi = 'fusi',
|
|
||||||
gent = 'gent',
|
|
||||||
imip = 'imip',
|
|
||||||
kana = 'kana',
|
|
||||||
levo = 'levo',
|
|
||||||
linc = 'linc',
|
|
||||||
line = 'line',
|
|
||||||
mero = 'mero',
|
|
||||||
mino = 'mino',
|
|
||||||
moxi = 'moxi',
|
|
||||||
nali = 'nali',
|
|
||||||
neom = 'neom',
|
|
||||||
neti = 'neti',
|
|
||||||
nitr = 'nitr',
|
|
||||||
novo = 'novo',
|
|
||||||
norf = 'norf',
|
|
||||||
oflo = 'oflo',
|
|
||||||
peni = 'peni',
|
|
||||||
pita = 'pita',
|
|
||||||
poly = 'poly',
|
|
||||||
qida = 'qida',
|
|
||||||
rifa = 'rifa',
|
|
||||||
roxi = 'roxi',
|
|
||||||
siso = 'siso',
|
|
||||||
teic = 'teic',
|
|
||||||
tetr = 'tetr',
|
|
||||||
tica = 'tica',
|
|
||||||
tige = 'tige',
|
|
||||||
tobr = 'tobr',
|
|
||||||
trim = 'trim',
|
|
||||||
trsu = 'trsu',
|
|
||||||
vanc = 'vanc') {
|
|
||||||
|
|
||||||
if (!col_bactcode %in% colnames(tbl)) {
|
|
||||||
stop('Column ', col_bactcode, ' not found.')
|
|
||||||
}
|
|
||||||
|
|
||||||
# kolommen controleren
|
|
||||||
col.list <- c(amcl, amik, amox, ampi, azit, aztr, cefa, cfra, cfep,
|
|
||||||
cfot, cfox, cfta, cftr, cfur, cipr, clar, clin, clox, coli, czol,
|
|
||||||
dapt, doxy, erta, eryt, fusi, gent, imip, kana, levo, linc, line,
|
|
||||||
mero, mino, moxi, nali, neom, neti, nitr, novo, norf, oflo, peni,
|
|
||||||
pita, poly, qida, rifa, roxi, siso, teic, tetr, tica, tige, tobr,
|
|
||||||
trim, trsu, vanc)
|
|
||||||
col.list <- col.list[!is.na(col.list)]
|
|
||||||
if (!all(col.list %in% colnames(tbl))) {
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('\n')
|
|
||||||
}
|
|
||||||
if (info == TRUE) {
|
|
||||||
warning('These columns do not exist and will be ignored:\n',
|
|
||||||
col.list[!(col.list %in% colnames(tbl))] %>% toString(),
|
|
||||||
immediate. = TRUE,
|
|
||||||
call. = FALSE)
|
|
||||||
}
|
|
||||||
if (!amcl %in% colnames(tbl)) { amcl <- NA }
|
|
||||||
if (!amik %in% colnames(tbl)) { amik <- NA }
|
|
||||||
if (!amox %in% colnames(tbl)) { amox <- NA }
|
|
||||||
if (!ampi %in% colnames(tbl)) { ampi <- NA }
|
|
||||||
if (!azit %in% colnames(tbl)) { azit <- NA }
|
|
||||||
if (!aztr %in% colnames(tbl)) { aztr <- NA }
|
|
||||||
if (!cefa %in% colnames(tbl)) { cefa <- NA }
|
|
||||||
if (!cfra %in% colnames(tbl)) { cfra <- NA }
|
|
||||||
if (!cfep %in% colnames(tbl)) { cfep <- NA }
|
|
||||||
if (!cfot %in% colnames(tbl)) { cfot <- NA }
|
|
||||||
if (!cfox %in% colnames(tbl)) { cfox <- NA }
|
|
||||||
if (!cfta %in% colnames(tbl)) { cfta <- NA }
|
|
||||||
if (!cftr %in% colnames(tbl)) { cftr <- NA }
|
|
||||||
if (!cfur %in% colnames(tbl)) { cfur <- NA }
|
|
||||||
if (!chlo %in% colnames(tbl)) { chlo <- NA }
|
|
||||||
if (!cipr %in% colnames(tbl)) { cipr <- NA }
|
|
||||||
if (!clar %in% colnames(tbl)) { clar <- NA }
|
|
||||||
if (!clin %in% colnames(tbl)) { clin <- NA }
|
|
||||||
if (!clox %in% colnames(tbl)) { clox <- NA }
|
|
||||||
if (!coli %in% colnames(tbl)) { coli <- NA }
|
|
||||||
if (!czol %in% colnames(tbl)) { czol <- NA }
|
|
||||||
if (!dapt %in% colnames(tbl)) { dapt <- NA }
|
|
||||||
if (!doxy %in% colnames(tbl)) { doxy <- NA }
|
|
||||||
if (!erta %in% colnames(tbl)) { erta <- NA }
|
|
||||||
if (!eryt %in% colnames(tbl)) { eryt <- NA }
|
|
||||||
if (!fosf %in% colnames(tbl)) { fosf <- NA }
|
|
||||||
if (!fusi %in% colnames(tbl)) { fusi <- NA }
|
|
||||||
if (!gent %in% colnames(tbl)) { gent <- NA }
|
|
||||||
if (!imip %in% colnames(tbl)) { imip <- NA }
|
|
||||||
if (!kana %in% colnames(tbl)) { kana <- NA }
|
|
||||||
if (!levo %in% colnames(tbl)) { levo <- NA }
|
|
||||||
if (!linc %in% colnames(tbl)) { linc <- NA }
|
|
||||||
if (!line %in% colnames(tbl)) { line <- NA }
|
|
||||||
if (!mero %in% colnames(tbl)) { mero <- NA }
|
|
||||||
if (!mino %in% colnames(tbl)) { mino <- NA }
|
|
||||||
if (!moxi %in% colnames(tbl)) { moxi <- NA }
|
|
||||||
if (!nali %in% colnames(tbl)) { nali <- NA }
|
|
||||||
if (!neom %in% colnames(tbl)) { neom <- NA }
|
|
||||||
if (!neti %in% colnames(tbl)) { neti <- NA }
|
|
||||||
if (!nitr %in% colnames(tbl)) { nitr <- NA }
|
|
||||||
if (!novo %in% colnames(tbl)) { novo <- NA }
|
|
||||||
if (!norf %in% colnames(tbl)) { norf <- NA }
|
|
||||||
if (!oflo %in% colnames(tbl)) { oflo <- NA }
|
|
||||||
if (!peni %in% colnames(tbl)) { peni <- NA }
|
|
||||||
if (!pita %in% colnames(tbl)) { pita <- NA }
|
|
||||||
if (!poly %in% colnames(tbl)) { poly <- NA }
|
|
||||||
if (!qida %in% colnames(tbl)) { qida <- NA }
|
|
||||||
if (!rifa %in% colnames(tbl)) { rifa <- NA }
|
|
||||||
if (!roxi %in% colnames(tbl)) { roxi <- NA }
|
|
||||||
if (!siso %in% colnames(tbl)) { siso <- NA }
|
|
||||||
if (!teic %in% colnames(tbl)) { teic <- NA }
|
|
||||||
if (!tetr %in% colnames(tbl)) { tetr <- NA }
|
|
||||||
if (!tica %in% colnames(tbl)) { tica <- NA }
|
|
||||||
if (!tige %in% colnames(tbl)) { tige <- NA }
|
|
||||||
if (!tobr %in% colnames(tbl)) { tobr <- NA }
|
|
||||||
if (!trim %in% colnames(tbl)) { trim <- NA }
|
|
||||||
if (!trsu %in% colnames(tbl)) { trsu <- NA }
|
|
||||||
if (!vanc %in% colnames(tbl)) { vanc <- NA }
|
|
||||||
}
|
|
||||||
|
|
||||||
total <- 0
|
|
||||||
total_rows <- integer(0)
|
|
||||||
|
|
||||||
# functie voor uitvoeren
|
|
||||||
edit_rsi <- function(to, rows, cols) {
|
|
||||||
#voortgang$tick()$print()
|
|
||||||
cols <- cols[!is.na(cols)]
|
|
||||||
if (length(rows) > 0 & length(cols) > 0) {
|
|
||||||
tbl[rows, cols] <<- to
|
|
||||||
total <<- total + (length(rows) * length(cols))
|
|
||||||
total_rows <<- c(total_rows, rows)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# bactlist aan vastknopen (bestaande kolommen krijgen extra suffix)
|
|
||||||
joinby <- colnames(AMR::bactlist)[1]
|
|
||||||
names(joinby) <- col_bactcode
|
|
||||||
tbl <- tbl %>% left_join(y = AMR::bactlist, by = joinby, suffix = c("_tempbactlist", ""))
|
|
||||||
|
|
||||||
# antibioticagroepen
|
|
||||||
aminoglycosiden <- c(tobr, gent, kana, neom, neti, siso)
|
|
||||||
tetracyclines <- c(doxy, mino, tetr) # sinds EUCAST v3.1 is tige(cycline) apart
|
|
||||||
polymyxines <- c(poly, coli)
|
|
||||||
macroliden <- c(eryt, azit, roxi, clar) # sinds EUCAST v3.1 is clinda apart
|
|
||||||
glycopeptiden <- c(vanc, teic)
|
|
||||||
streptogramines <- qida # eigenlijk pristinamycine en quinupristine/dalfopristine
|
|
||||||
cefalosporines <- c(cfep, cfot, cfox, cfra, cfta, cftr, cfur, czol)
|
|
||||||
carbapenems <- c(erta, imip, mero)
|
|
||||||
aminopenicillines <- c(ampi, amox)
|
|
||||||
ureidopenicillines <- pita # eigenlijk ook azlo en mezlo
|
|
||||||
fluorochinolonen <- c(oflo, cipr, norf, levo, moxi)
|
|
||||||
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('\nApplying rules to',
|
|
||||||
tbl[!is.na(tbl$genus),] %>% nrow() %>% format(big.mark = ","),
|
|
||||||
'rows according to "EUCAST Expert Rules Version 3.1"\n\n')
|
|
||||||
}
|
|
||||||
|
|
||||||
# Table 1: Intrinsic resistance in Enterobacteriaceae ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 1: Intrinsic resistance in Enterobacteriaceae\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(17)
|
|
||||||
# Intrisiek R voor groep
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$family == 'Enterobacteriaceae'),
|
|
||||||
cols = c(peni, glycopeptiden, fusi, macroliden, linc, streptogramines, rifa, dapt, line))
|
|
||||||
# Citrobacter
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Citrobacter (koseri|amalonaticus|sedlakii|farmeri|rodentium)'),
|
|
||||||
cols = c(aminopenicillines, tica))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Citrobacter (freundii|braakii|murliniae|werkmanii|youngae)'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfox))
|
|
||||||
# Enterobacter
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Enterobacter cloacae'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfox))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Enterobacter aerogenes'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfox))
|
|
||||||
# Escherichia
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Escherichia hermanni'),
|
|
||||||
cols = c(aminopenicillines, tica))
|
|
||||||
# Hafnia
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Hafnia alvei'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfox))
|
|
||||||
# Klebsiella
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Klebsiella'),
|
|
||||||
cols = c(aminopenicillines, tica))
|
|
||||||
# Morganella / Proteus
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Morganella morganii'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, tetracyclines, polymyxines, nitr))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Proteus mirabilis'),
|
|
||||||
cols = c(tetracyclines, tige, polymyxines, nitr))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Proteus penneri'),
|
|
||||||
cols = c(aminopenicillines, czol, cfur, tetracyclines, tige, polymyxines, nitr))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Proteus vulgaris'),
|
|
||||||
cols = c(aminopenicillines, czol, cfur, tetracyclines, tige, polymyxines, nitr))
|
|
||||||
# Providencia
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Providencia rettgeri'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfur, tetracyclines, tige, polymyxines, nitr))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Providencia stuartii'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfur, tetracyclines, tige, polymyxines, nitr))
|
|
||||||
# Raoultella
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Raoultella'),
|
|
||||||
cols = c(aminopenicillines, tica))
|
|
||||||
# Serratia
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Serratia marcescens'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfox, cfur, tetracyclines[tetracyclines != 'mino'], polymyxines, nitr))
|
|
||||||
# Yersinia
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Yersinia enterocolitica'),
|
|
||||||
cols = c(aminopenicillines, amcl, tica, czol, cfox))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Yersinia pseudotuberculosis'),
|
|
||||||
cols = c(poly, coli))
|
|
||||||
|
|
||||||
|
|
||||||
# Table 2: Intrinsic resistance in non-fermentative Gram-negative bacteria ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 2: Intrinsic resistance in non-fermentative Gram-negative bacteria\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(8)
|
|
||||||
# Intrisiek R voor groep
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus %in% c('Achromobacter',
|
|
||||||
'Acinetobacter',
|
|
||||||
'Alcaligenes',
|
|
||||||
'Bordatella',
|
|
||||||
'Burkholderia',
|
|
||||||
'Elizabethkingia',
|
|
||||||
'Flavobacterium',
|
|
||||||
'Ochrobactrum',
|
|
||||||
'Pseudomonas',
|
|
||||||
'Stenotrophomonas')),
|
|
||||||
cols = c(peni, cfox, cfur, glycopeptiden, fusi, macroliden, linc, streptogramines, rifa, dapt, line))
|
|
||||||
# Acinetobacter
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Acinetobacter (baumannii|pittii|nosocomialis|calcoaceticus)'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfot, cftr, aztr, erta, trim, fosf, tetracyclines[tetracyclines != 'mino']))
|
|
||||||
# Achromobacter
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Achromobacter (xylosoxydans|xylosoxidans)'),
|
|
||||||
cols = c(aminopenicillines, czol, cfot, cftr, erta))
|
|
||||||
# Burkholderia
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
# onder 'Burkholderia cepacia complex' vallen deze species allemaal: PMID 16217180.
|
|
||||||
rows = which(tbl$fullname %like% '^Burkholderia (cepacia|multivorans|cenocepacia|stabilis|vietnamiensis|dolosa|ambifaria|anthina|pyrrocinia|ubonensis)'),
|
|
||||||
cols = c(aminopenicillines, amcl, tica, pita, czol, cfot, cftr, aztr, erta, cipr, chlo, aminoglycosiden, trim, fosf, polymyxines))
|
|
||||||
# Elizabethkingia
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Elizabethkingia meningoseptic(a|um)'),
|
|
||||||
cols = c(aminopenicillines, amcl, tica, czol, cfot, cftr, cfta, cfep, aztr, erta, imip, mero, polymyxines))
|
|
||||||
# Ochrobactrum
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Ochrobactrum anthropi'),
|
|
||||||
cols = c(aminopenicillines, amcl, tica, pita, czol, cfot, cftr, cfta, cfep, aztr, erta))
|
|
||||||
# Pseudomonas
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Pseudomonas aeruginosa'),
|
|
||||||
cols = c(aminopenicillines, amcl, czol, cfot, cftr, erta, chlo, kana, neom, trim, trsu, tetracyclines, tige))
|
|
||||||
# Stenotrophomonas
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Stenotrophomonas maltophilia'),
|
|
||||||
cols = c(aminopenicillines, amcl, tica, pita, czol, cfot, cftr, cfta, aztr, erta, imip, mero, aminoglycosiden, trim, fosf, tetr))
|
|
||||||
|
|
||||||
|
|
||||||
# Table 3: Intrinsic resistance in other Gram-negative bacteria ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 3: Intrinsic resistance in other Gram-negative bacteria\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(7)
|
|
||||||
# Intrisiek R voor groep
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus %in% c('Haemophilus',
|
|
||||||
'Moraxella',
|
|
||||||
'Neisseria',
|
|
||||||
'Campylobacter')),
|
|
||||||
cols = c(glycopeptiden, linc, dapt, line))
|
|
||||||
# Haemophilus
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Haemophilus influenzae'),
|
|
||||||
cols = c(fusi, streptogramines))
|
|
||||||
# Moraxella
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Moraxella catarrhalis'),
|
|
||||||
cols = trim)
|
|
||||||
# Neisseria
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Neisseria'),
|
|
||||||
cols = trim)
|
|
||||||
# Campylobacter
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Campylobacter fetus'),
|
|
||||||
cols = c(fusi, streptogramines, trim, nali))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Campylobacter (jejuni|coli)'),
|
|
||||||
cols = c(fusi, streptogramines, trim))
|
|
||||||
|
|
||||||
|
|
||||||
# Table 4: Intrinsic resistance in Gram-positive bacteria ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 4: Intrinsic resistance in Gram-positive bacteria\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(14)
|
|
||||||
# Intrisiek R voor groep
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$gramstain %like% 'Positi(e|)(v|f)'),
|
|
||||||
cols = c(aztr, polymyxines, nali))
|
|
||||||
# Staphylococcus
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Staphylococcus saprophyticus'),
|
|
||||||
cols = c(fusi, cfta, fosf, novo))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Staphylococcus (cohnii|xylosus)'),
|
|
||||||
cols = c(cfta, novo))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Staphylococcus capitis'),
|
|
||||||
cols = c(cfta, fosf))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Staphylococcus (aureus|epidermidis|coagulase negatief|hominis|haemolyticus|intermedius|pseudointermedius)'),
|
|
||||||
cols = cfta)
|
|
||||||
# Streptococcus
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Streptococcus'),
|
|
||||||
cols = c(fusi, cfta, aminoglycosiden))
|
|
||||||
# Enterococcus
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Enterococcus faecalis'),
|
|
||||||
cols = c(fusi, cfta, cefalosporines[cefalosporines != cfta], aminoglycosiden, macroliden, clin, qida, trim, trsu))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Enterococcus (gallinarum|casseliflavus)'),
|
|
||||||
cols = c(fusi, cfta, cefalosporines[cefalosporines != cfta], aminoglycosiden, macroliden, clin, qida, vanc, trim, trsu))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Enterococcus faecium'),
|
|
||||||
cols = c(fusi, cfta, cefalosporines[cefalosporines != cfta], aminoglycosiden, macroliden, trim, trsu))
|
|
||||||
# Corynebacterium
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Corynebacterium'),
|
|
||||||
cols = fosf)
|
|
||||||
# Listeria
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Listeria monocytogenes'),
|
|
||||||
cols = c(cfta, cefalosporines[cefalosporines != cfta]))
|
|
||||||
# overig
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus %in% c('Leuconostoc', 'Pediococcus')),
|
|
||||||
cols = c(vanc, teic))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Lactobacillus'),
|
|
||||||
cols = c(vanc, teic))
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Clostridium (ramosum|innocuum)'),
|
|
||||||
cols = vanc)
|
|
||||||
|
|
||||||
# Table 8: Interpretive rules for B-lactam agents and Gram-positive cocci ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 8: Interpretive rules for B-lactam agents and Gram-positive cocci\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(2)
|
|
||||||
# regel 8.3
|
|
||||||
if (!is.na(peni)) {
|
|
||||||
edit_rsi(to = 'S',
|
|
||||||
rows = which(tbl$fullname %like% '^Streptococcus (pyogenes|agalactiae|dysgalactiae|groep A|groep B|groep C|groep G)'
|
|
||||||
& tbl[, peni] == 'S'),
|
|
||||||
cols = c(aminopenicillines, cefalosporines, carbapenems))
|
|
||||||
}
|
|
||||||
# regel 8.6
|
|
||||||
if (!is.na(ampi)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Enterococcus'
|
|
||||||
& tbl[, ampi] == 'R'),
|
|
||||||
cols = c(ureidopenicillines, carbapenems))
|
|
||||||
}
|
|
||||||
if (!is.na(amox)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Enterococcus'
|
|
||||||
& tbl[, amox] == 'R'),
|
|
||||||
cols = c(ureidopenicillines, carbapenems))
|
|
||||||
}
|
|
||||||
|
|
||||||
# Table 9: Interpretive rules for B-lactam agents and Gram-negative rods ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 9: Interpretive rules for B-lactam agents and Gram-negative rods\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(1)
|
|
||||||
# regel 9.3
|
|
||||||
if (!is.na(tica) & !is.na(pita)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$family == 'Enterobacteriaceae'
|
|
||||||
& tbl[, tica] == 'R'
|
|
||||||
& tbl[, pita] == 'S'),
|
|
||||||
cols = pita)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Table 10: Interpretive rules for B-lactam agents and other Gram-negative bacteria ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 10: Interpretive rules for B-lactam agents and other Gram-negative bacteria\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(1)
|
|
||||||
# regel 10.2
|
|
||||||
if (!is.na(ampi)) {
|
|
||||||
# hiervoor moeten we eerst weten of ze B-lactamase-positief zijn
|
|
||||||
# edit_rsi(to = 'R',
|
|
||||||
# rows = which(tbl$fullname %like% '^Haemophilus influenza'
|
|
||||||
# & tbl[, ampi] == 'R'),
|
|
||||||
# cols = c(ampi, amox, amcl, pita, cfur))
|
|
||||||
}
|
|
||||||
|
|
||||||
# Table 11: Interpretive rules for macrolides, lincosamides, and streptogramins ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 11: Interpretive rules for macrolides, lincosamides, and streptogramins\n')
|
|
||||||
}
|
|
||||||
# regel 11.1
|
|
||||||
if (!is.na(eryt)) {
|
|
||||||
if (!is.na(azit)) {
|
|
||||||
tbl[, azit] <- tbl[, eryt]
|
|
||||||
}
|
|
||||||
if (!is.na(clar)) {
|
|
||||||
tbl[, clar] <- tbl[, eryt]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Table 12: Interpretive rules for aminoglycosides ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 12: Interpretive rules for aminoglycosides\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(4)
|
|
||||||
# regel 12.2
|
|
||||||
if (!is.na(tobr)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Staphylococcus'
|
|
||||||
& tbl[, tobr] == 'R'),
|
|
||||||
cols = c(kana, amik))
|
|
||||||
}
|
|
||||||
# regel 12.3
|
|
||||||
if (!is.na(gent)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Staphylococcus'
|
|
||||||
& tbl[, gent] == 'R'),
|
|
||||||
cols = aminoglycosiden)
|
|
||||||
}
|
|
||||||
# regel 12.8
|
|
||||||
if (!is.na(gent) & !is.na(tobr)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$family == 'Enterobacteriaceae'
|
|
||||||
& tbl[, gent] == 'I'
|
|
||||||
& tbl[, tobr] == 'S'),
|
|
||||||
cols = gent)
|
|
||||||
}
|
|
||||||
# regel 12.9
|
|
||||||
if (!is.na(gent) & !is.na(tobr)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$family == 'Enterobacteriaceae'
|
|
||||||
& tbl[, tobr] == 'I'
|
|
||||||
& tbl[, gent] == 'R'),
|
|
||||||
cols = tobr)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Table 13: Interpretive rules for quinolones ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Table 13: Interpretive rules for quinolones\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(4)
|
|
||||||
# regel 13.2
|
|
||||||
if (!is.na(moxi)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$genus == 'Staphylococcus'
|
|
||||||
& tbl[, moxi] == 'R'),
|
|
||||||
cols = fluorochinolonen)
|
|
||||||
}
|
|
||||||
# regel 13.4
|
|
||||||
if (!is.na(moxi)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Streptococcus pneumoniae'
|
|
||||||
& tbl[, moxi] == 'R'),
|
|
||||||
cols = fluorochinolonen)
|
|
||||||
}
|
|
||||||
# regel 13.5
|
|
||||||
if (!is.na(cipr)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$family == 'Enterobacteriaceae'
|
|
||||||
& tbl[, cipr] == 'R'),
|
|
||||||
cols = fluorochinolonen)
|
|
||||||
}
|
|
||||||
# regel 13.8
|
|
||||||
if (!is.na(cipr)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl$fullname %like% '^Neisseria gonorrhoeae'
|
|
||||||
& tbl[, cipr] == 'R'),
|
|
||||||
cols = fluorochinolonen)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Other ----
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('...Other\n')
|
|
||||||
}
|
|
||||||
#voortgang <- progress_estimated(2)
|
|
||||||
if (!is.na(amcl)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl[, amcl] == 'R'),
|
|
||||||
cols = ampi)
|
|
||||||
}
|
|
||||||
if (!is.na(trsu)) {
|
|
||||||
edit_rsi(to = 'R',
|
|
||||||
rows = which(tbl[, trsu] == 'R'),
|
|
||||||
cols = trim)
|
|
||||||
}
|
|
||||||
if (!is.na(ampi) & !is.na(amox)) {
|
|
||||||
tbl[, amox] <- tbl %>% pull(ampi)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Toegevoegde kolommen weer verwijderen
|
|
||||||
bactlist.ncol <- ncol(AMR::bactlist) - 2
|
|
||||||
tbl.ncol <- ncol(tbl)
|
|
||||||
tbl <- tbl %>% select(-c((tbl.ncol - bactlist.ncol):tbl.ncol))
|
|
||||||
# en eventueel toegevoegde suffix aan bestaande kolommen weer verwijderen
|
|
||||||
colnames(tbl) <- gsub("_tempbactlist", "", colnames(tbl))
|
|
||||||
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('\nDone.\nEUCAST Expert rules applied to',
|
|
||||||
total_rows %>% unique() %>% length() %>% format(big.mark = ","),
|
|
||||||
'different rows, to a total of',
|
|
||||||
total %>% format(big.mark = ","), 'test results.\n\n')
|
|
||||||
}
|
|
||||||
|
|
||||||
tbl
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @rdname EUCAST
|
|
||||||
#' @export
|
|
||||||
interpretive_reading <- function(...) {
|
|
||||||
EUCAST_rules(...)
|
|
||||||
}
|
|
||||||
|
|
||||||
#' Poperties of a microorganism
|
|
||||||
#'
|
|
||||||
#' @param bactcode ID of a microorganisme, like \code{"STAAUR} and \code{"ESCCOL}
|
|
||||||
#' @param property One of the values \code{bactid}, \code{bactsys}, \code{family}, \code{genus}, \code{species}, \code{subspecies}, \code{fullname}, \code{type}, \code{gramstain}, \code{aerobic}
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% filter select
|
|
||||||
#' @seealso \code{\link{bactlist}}
|
|
||||||
mo_property <- function(bactcode, property = 'fullname') {
|
|
||||||
|
|
||||||
mocode <- as.character(bactcode)
|
|
||||||
|
|
||||||
for (i in 1:length(mocode)) {
|
|
||||||
bug <- mocode[i]
|
|
||||||
|
|
||||||
if (!is.na(bug)) {
|
|
||||||
result = tryCatch({
|
|
||||||
mocode[i] <-
|
|
||||||
AMR::bactlist %>%
|
|
||||||
filter(bactid == bactcode) %>%
|
|
||||||
select(property) %>%
|
|
||||||
unlist() %>%
|
|
||||||
as.character()
|
|
||||||
}, error = function(error_condition) {
|
|
||||||
warning('Code ', bug, ' not found in bacteria list.')
|
|
||||||
}, finally = {
|
|
||||||
if (mocode[i] == bug & !property %in% c('bactid', 'bactsys')) {
|
|
||||||
mocode[i] <- NA
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
mocode
|
|
||||||
}
|
|
||||||
@@ -1,226 +0,0 @@
|
|||||||
# ==================================================================== #
|
|
||||||
# TITLE #
|
|
||||||
# Antimicrobial Resistance (AMR) Analysis #
|
|
||||||
# #
|
|
||||||
# AUTHORS #
|
|
||||||
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
|
|
||||||
# #
|
|
||||||
# LICENCE #
|
|
||||||
# This program is free software; you can redistribute it and/or modify #
|
|
||||||
# it under the terms of the GNU General Public License version 2.0, #
|
|
||||||
# as published by the Free Software Foundation. #
|
|
||||||
# #
|
|
||||||
# This program is distributed in the hope that it will be useful, #
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
||||||
# GNU General Public License for more details. #
|
|
||||||
# ==================================================================== #
|
|
||||||
|
|
||||||
#' Properties of an ATC code
|
|
||||||
#'
|
|
||||||
#' Gets data from the WHO to determine properties of an ATC (e.g. an antibiotic) like name, defined daily dose (DDD) or standard unit. \strong{This function requires an internet connection.}
|
|
||||||
#' @param atc_code a character or character vector with ATC code(s) of antibiotic(s)
|
|
||||||
#' @param property property of an ATC code. Valid values are \code{"ATC code"}, \code{"Name"}, \code{"DDD"}, \code{"U"} (\code{"unit"}), \code{"Adm.R"} en \code{"Note"}.
|
|
||||||
#' @param administration type of administration, see \emph{Details}
|
|
||||||
#' @param url url of website of the WHO. The sign \code{\%s} can be used as a placeholder for ATC codes.
|
|
||||||
#' @details
|
|
||||||
#' Abbreviations for the property \code{"Adm.R"} (parameter \code{administration}):
|
|
||||||
#' \itemize{
|
|
||||||
#' \item{\code{"Implant"}}{ = Implant}
|
|
||||||
#' \item{\code{"Inhal"}}{ = Inhalation}
|
|
||||||
#' \item{\code{"Instill"}}{ = Instillation}
|
|
||||||
#' \item{\code{"N"}}{ = nasal}
|
|
||||||
#' \item{\code{"O"}}{ = oral}
|
|
||||||
#' \item{\code{"P"}}{ = parenteral}
|
|
||||||
#' \item{\code{"R"}}{ = rectal}
|
|
||||||
#' \item{\code{"SL"}}{ = sublingual/buccal}
|
|
||||||
#' \item{\code{"TD"}}{ = transdermal}
|
|
||||||
#' \item{\code{"V"}}{ = vaginal}
|
|
||||||
#' }
|
|
||||||
#'
|
|
||||||
#' Abbreviations for the property \code{"U"} (unit):
|
|
||||||
#' \itemize{
|
|
||||||
#' \item{\code{"g"}}{ = gram}
|
|
||||||
#' \item{\code{"mg"}}{ = milligram}
|
|
||||||
#' \item{\code{"mcg"}}{ = microgram}
|
|
||||||
#' \item{\code{"U"}}{ = unit}
|
|
||||||
#' \item{\code{"TU"}}{ = thousand units}
|
|
||||||
#' \item{\code{"MU"}}{ = million units}
|
|
||||||
#' \item{\code{"mmol"}}{ = millimole}
|
|
||||||
#' \item{\code{"ml"}}{ = milliliter (e.g. eyedrops)}
|
|
||||||
#' }
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% progress_estimated
|
|
||||||
#' @importFrom xml2 read_html
|
|
||||||
#' @importFrom rvest html_nodes html_table
|
|
||||||
#' @source \url{https://www.whocc.no/atc_ddd_alterations__cumulative/ddd_alterations/abbrevations/}
|
|
||||||
#' @examples
|
|
||||||
#' \donttest{
|
|
||||||
#' atc_property("J01CA04", "DDD", "O") # oral DDD (Defined Daily Dose) of amoxicillin
|
|
||||||
#' atc_property("J01CA04", "DDD", "P") # parenteral DDD (Defined Daily Dose) of amoxicillin
|
|
||||||
#' }
|
|
||||||
atc_property <- function(atc_code,
|
|
||||||
property,
|
|
||||||
administration = 'O',
|
|
||||||
url = 'https://www.whocc.no/atc_ddd_index/?code=%s&showdescription=no') {
|
|
||||||
|
|
||||||
# property <- property %>% tolower()
|
|
||||||
#
|
|
||||||
if (property %like% 'unit') {
|
|
||||||
property <- 'U'
|
|
||||||
}
|
|
||||||
|
|
||||||
# validation of properties
|
|
||||||
valid_properties.bak <- c("ATC code", "Name", "DDD", "U", "Adm.R", "Note")
|
|
||||||
valid_properties <- valid_properties.bak #%>% tolower()
|
|
||||||
if (!property %in% valid_properties) {
|
|
||||||
stop('Invalid `property`, use one of ', paste(valid_properties, collapse = ", "), '.')
|
|
||||||
}
|
|
||||||
|
|
||||||
returnvalue <- rep(NA_character_, length(atc_code))
|
|
||||||
if (property == 'DDD') {
|
|
||||||
returnvalue <- rep(NA_real_, length(atc_code))
|
|
||||||
}
|
|
||||||
|
|
||||||
progress <- progress_estimated(n = length(atc_code))
|
|
||||||
|
|
||||||
for (i in 1:length(atc_code)) {
|
|
||||||
|
|
||||||
progress$tick()$print()
|
|
||||||
|
|
||||||
atc_url <- sub('%s', atc_code[i], url, fixed = TRUE)
|
|
||||||
tbl <- xml2::read_html(atc_url) %>%
|
|
||||||
rvest::html_nodes('table') %>%
|
|
||||||
rvest::html_table(header = TRUE)
|
|
||||||
|
|
||||||
if (length(tbl) == 0) {
|
|
||||||
warning('ATC not found: ', atc_code[i], '. Please check ', atc_url, '.', call. = FALSE)
|
|
||||||
returnvalue[i] <- NA
|
|
||||||
next
|
|
||||||
}
|
|
||||||
|
|
||||||
tbl <- tbl[[1]]
|
|
||||||
|
|
||||||
if (property == 'Name') {
|
|
||||||
returnvalue[i] <- tbl[1, 2]
|
|
||||||
} else {
|
|
||||||
|
|
||||||
names(returnvalue)[i] <- tbl[1, 2] %>% as.character()
|
|
||||||
|
|
||||||
if (!'Adm.R' %in% colnames(tbl) | is.na(tbl[1, 'Adm.R'])) {
|
|
||||||
returnvalue[i] <- NA
|
|
||||||
next
|
|
||||||
} else {
|
|
||||||
for (j in 1:nrow(tbl)) {
|
|
||||||
if (tbl[j, 'Adm.R'] == administration) {
|
|
||||||
returnvalue[i] <- tbl[j, property]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cat('\n')
|
|
||||||
returnvalue
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#' Name of an antibiotic
|
|
||||||
#'
|
|
||||||
#' Convert antibiotic codes (from a laboratory information system like MOLIS or GLIMS) to a (trivial) antibiotic name or ATC code, or vice versa. This uses the data from \code{\link{ablist}}.
|
|
||||||
#' @param abcode a code or name, like \code{"AMOX"}, \code{"AMCL"} or \code{"J01CA04"}
|
|
||||||
#' @param from,to type to transform from and to. See \code{\link{ablist}} for its column names.
|
|
||||||
#' @param textbetween text to put between multiple returned texts
|
|
||||||
#' @param tolower return output as lower case with function \code{\link{tolower}}.
|
|
||||||
#' @keywords ab antibiotics
|
|
||||||
#' @source \code{\link{ablist}}
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% filter select slice
|
|
||||||
#' @examples
|
|
||||||
#' abname("AMCL")
|
|
||||||
#' # "amoxicillin and enzyme inhibitor"
|
|
||||||
#'
|
|
||||||
#' abname("AMCL+GENT")
|
|
||||||
#' # "amoxicillin and enzyme inhibitor + gentamicin"
|
|
||||||
#'
|
|
||||||
#' abname(c("AMCL", "GENT"))
|
|
||||||
#' # "amoxicillin and enzyme inhibitor" "gentamicin"
|
|
||||||
#'
|
|
||||||
#' abname("AMCL", to = "trivial_nl")
|
|
||||||
#' # "Amoxicilline/clavulaanzuur"
|
|
||||||
#'
|
|
||||||
#' abname("AMCL", to = "atc")
|
|
||||||
#' # "J01CR02"
|
|
||||||
#'
|
|
||||||
#' abname("J01CR02", from = "atc", to = "umcg")
|
|
||||||
#' # "AMCL"
|
|
||||||
abname <- function(abcode, from = 'umcg', to = 'official', textbetween = ' + ', tolower = FALSE) {
|
|
||||||
|
|
||||||
ablist <- AMR::ablist
|
|
||||||
colnames(ablist) <- colnames(ablist) %>% tolower()
|
|
||||||
from <- from %>% tolower()
|
|
||||||
to <- to %>% tolower()
|
|
||||||
|
|
||||||
if (!from %in% colnames(ablist) |
|
|
||||||
!to %in% colnames(ablist)) {
|
|
||||||
stop(paste0('Invalid `from` or `to`. Choose one of ',
|
|
||||||
colnames(ablist) %>% paste(collapse = ","), '.'), call. = FALSE)
|
|
||||||
}
|
|
||||||
|
|
||||||
abcode <- as.character(abcode)
|
|
||||||
|
|
||||||
for (i in 1:length(abcode)) {
|
|
||||||
drug <- abcode[i]
|
|
||||||
if (!grepl('+', drug, fixed = TRUE) & !grepl(' en ', drug, fixed = TRUE)) {
|
|
||||||
# bestaat maar uit 1 middel
|
|
||||||
if (any(ablist[, from] == drug)) {
|
|
||||||
abcode[i] <-
|
|
||||||
ablist %>%
|
|
||||||
filter(.[, from] == drug) %>%
|
|
||||||
select(to) %>%
|
|
||||||
slice(1) %>%
|
|
||||||
as.character()
|
|
||||||
} else {
|
|
||||||
# niet gevonden
|
|
||||||
warning('Code "', drug, '" not found in antibiotics list.', call. = FALSE)
|
|
||||||
abcode[i] <- NA
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
# meerdere middelen
|
|
||||||
if (grepl('+', drug, fixed = TRUE)) {
|
|
||||||
drug.group <-
|
|
||||||
strsplit(drug, '+', fixed = TRUE) %>%
|
|
||||||
unlist() %>%
|
|
||||||
trimws('both')
|
|
||||||
} else if (grepl(' en ', drug, fixed = TRUE)) {
|
|
||||||
drug.group <-
|
|
||||||
strsplit(drug, ' en ', fixed = TRUE) %>%
|
|
||||||
unlist() %>%
|
|
||||||
trimws('both')
|
|
||||||
} else {
|
|
||||||
warning('Invalid concat.')
|
|
||||||
abcode[i] <- NA
|
|
||||||
next
|
|
||||||
}
|
|
||||||
|
|
||||||
for (j in 1:length(drug.group)) {
|
|
||||||
drug.group[j] <-
|
|
||||||
ablist %>%
|
|
||||||
filter(.[, from] == drug.group[j]) %>%
|
|
||||||
select(to) %>%
|
|
||||||
slice(1) %>%
|
|
||||||
as.character()
|
|
||||||
if (j > 1 & to %in% c('official', 'trivial_nl')) {
|
|
||||||
drug.group[j] <- drug.group[j] %>% tolower()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
abcode[i] <- paste(drug.group, collapse = textbetween)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tolower == TRUE) {
|
|
||||||
abcode <- abcode %>% tolower()
|
|
||||||
}
|
|
||||||
|
|
||||||
abcode
|
|
||||||
}
|
|
||||||
@@ -1,408 +0,0 @@
|
|||||||
# ==================================================================== #
|
|
||||||
# TITLE #
|
|
||||||
# Antimicrobial Resistance (AMR) Analysis #
|
|
||||||
# #
|
|
||||||
# AUTHORS #
|
|
||||||
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
|
|
||||||
# #
|
|
||||||
# LICENCE #
|
|
||||||
# This program is free software; you can redistribute it and/or modify #
|
|
||||||
# it under the terms of the GNU General Public License version 2.0, #
|
|
||||||
# as published by the Free Software Foundation. #
|
|
||||||
# #
|
|
||||||
# This program is distributed in the hope that it will be useful, #
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
||||||
# GNU General Public License for more details. #
|
|
||||||
# ==================================================================== #
|
|
||||||
|
|
||||||
#' Class 'rsi'
|
|
||||||
#'
|
|
||||||
#' This transforms a vector to a new class \code{rsi}, which is an ordered factor with levels \code{S < I < R}. Invalid antimicrobial interpretations will be translated as \code{NA} with a warning.
|
|
||||||
#' @rdname as.rsi
|
|
||||||
#' @param x vector
|
|
||||||
#' @return New class \code{rsi}
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>%
|
|
||||||
#' @examples
|
|
||||||
#' rsi_data <- as.rsi(c(rep("S", 474), rep("I", 36), rep("R", 370)))
|
|
||||||
#' rsi_data <- as.rsi(c(rep("S", 474), rep("I", 36), rep("R", 370), "A", "B", "C"))
|
|
||||||
#' is.rsi(rsi_data)
|
|
||||||
#'
|
|
||||||
#' plot(rsi_data) # for percentages
|
|
||||||
#' barplot(rsi_data) # for frequencies
|
|
||||||
as.rsi <- function(x) {
|
|
||||||
if (is.rsi(x)) {
|
|
||||||
x
|
|
||||||
} else {
|
|
||||||
|
|
||||||
x <- x %>% unlist()
|
|
||||||
x.bak <- x
|
|
||||||
|
|
||||||
na_before <- x[is.na(x) | x == ''] %>% length()
|
|
||||||
x <- gsub('[^RSI]+', '', x %>% toupper())
|
|
||||||
# needed for UMCG in cases of "S;S" but also "S;I"; the latter will be NA:
|
|
||||||
x <- gsub('^S+$', 'S', x)
|
|
||||||
x <- gsub('^I+$', 'I', x)
|
|
||||||
x <- gsub('^R+$', 'R', x)
|
|
||||||
x[!x %in% c('S', 'I', 'R')] <- NA
|
|
||||||
na_after <- x[is.na(x) | x == ''] %>% length()
|
|
||||||
|
|
||||||
if (na_before != na_after) {
|
|
||||||
list_missing <- x.bak[is.na(x) & !is.na(x.bak) & x.bak != ''] %>%
|
|
||||||
unique() %>%
|
|
||||||
sort()
|
|
||||||
list_missing <- paste0('"', list_missing , '"', collapse = ", ")
|
|
||||||
warning(na_after - na_before, ' results truncated (',
|
|
||||||
round(((na_after - na_before) / length(x)) / 100),
|
|
||||||
'%) that were invalid antimicrobial interpretations: ',
|
|
||||||
list_missing, call. = FALSE)
|
|
||||||
}
|
|
||||||
|
|
||||||
x <- x %>% toupper() %>% factor(levels = c("S", "I", "R"), ordered = TRUE)
|
|
||||||
class(x) <- c('rsi', 'ordered', 'factor')
|
|
||||||
x
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @rdname as.rsi
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>%
|
|
||||||
is.rsi <- function(x) {
|
|
||||||
class(x) %>% identical(c('rsi', 'ordered', 'factor'))
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod print.rsi
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>%
|
|
||||||
#' @noRd
|
|
||||||
print.rsi <- function(x, ...) {
|
|
||||||
n_total <- x %>% length()
|
|
||||||
x <- x[!is.na(x)]
|
|
||||||
n <- x %>% length()
|
|
||||||
S <- x[x == 'S'] %>% length()
|
|
||||||
I <- x[x == 'I'] %>% length()
|
|
||||||
R <- x[x == 'R'] %>% length()
|
|
||||||
IR <- x[x %in% c('I', 'R')] %>% length()
|
|
||||||
cat("Class 'rsi': ", n, " isolates\n", sep = '')
|
|
||||||
cat('\n')
|
|
||||||
cat('<NA>: ', n_total - n, '\n')
|
|
||||||
cat('Sum of S: ', S, '\n')
|
|
||||||
cat('Sum of IR: ', IR, '\n')
|
|
||||||
cat('- Sum of R:', R, '\n')
|
|
||||||
cat('- Sum of I:', I, '\n')
|
|
||||||
cat('\n')
|
|
||||||
print(c(
|
|
||||||
`%S` = round((S / n) * 100, 1),
|
|
||||||
`%IR` = round((IR / n) * 100, 1),
|
|
||||||
`%I` = round((I / n) * 100, 1),
|
|
||||||
`%R` = round((R / n) * 100, 1)
|
|
||||||
))
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod summary.rsi
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>%
|
|
||||||
#' @noRd
|
|
||||||
summary.rsi <- function(object, ...) {
|
|
||||||
x <- object
|
|
||||||
n_total <- x %>% length()
|
|
||||||
x <- x[!is.na(x)]
|
|
||||||
n <- x %>% length()
|
|
||||||
S <- x[x == 'S'] %>% length()
|
|
||||||
I <- x[x == 'I'] %>% length()
|
|
||||||
R <- x[x == 'R'] %>% length()
|
|
||||||
IR <- x[x %in% c('I', 'R')] %>% length()
|
|
||||||
lst <- c('rsi', n_total - n, S, IR, R, I)
|
|
||||||
names(lst) <- c("Mode", "<NA>", "Sum S", "Sum IR", "Sum R", "Sum I")
|
|
||||||
lst
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod plot.rsi
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% group_by summarise filter mutate if_else n_distinct
|
|
||||||
#' @importFrom graphics plot text
|
|
||||||
#' @noRd
|
|
||||||
plot.rsi <- function(x, ...) {
|
|
||||||
x_name <- deparse(substitute(x))
|
|
||||||
|
|
||||||
data <- data.frame(x = x,
|
|
||||||
y = 1,
|
|
||||||
stringsAsFactors = TRUE) %>%
|
|
||||||
group_by(x) %>%
|
|
||||||
summarise(n = sum(y)) %>%
|
|
||||||
filter(!is.na(x)) %>%
|
|
||||||
mutate(s = round((n / sum(n)) * 100, 1))
|
|
||||||
data$x <- factor(data$x, levels = c('S', 'I', 'R'), ordered = TRUE)
|
|
||||||
|
|
||||||
ymax <- if_else(max(data$s) > 95, 105, 100)
|
|
||||||
|
|
||||||
plot(x = data$x,
|
|
||||||
y = data$s,
|
|
||||||
lwd = 2,
|
|
||||||
col = c('green', 'orange', 'red'),
|
|
||||||
ylim = c(0, ymax),
|
|
||||||
ylab = 'Percentage',
|
|
||||||
xlab = 'Antimicrobial Interpretation',
|
|
||||||
main = paste('Susceptibilty Analysis of', x_name),
|
|
||||||
axes = FALSE,
|
|
||||||
...)
|
|
||||||
# x axis
|
|
||||||
axis(side = 1, at = 1:n_distinct(data$x), labels = levels(data$x), lwd = 0)
|
|
||||||
# y axis, 0-100%
|
|
||||||
axis(side = 2, at = seq(0, 100, 5))
|
|
||||||
|
|
||||||
text(x = data$x,
|
|
||||||
y = data$s + 4,
|
|
||||||
labels = paste0(data$s, '% (n = ', data$n, ')'))
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#' @exportMethod barplot.rsi
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% group_by summarise filter mutate if_else n_distinct
|
|
||||||
#' @importFrom graphics barplot axis
|
|
||||||
#' @noRd
|
|
||||||
barplot.rsi <- function(height, ...) {
|
|
||||||
x <- height
|
|
||||||
x_name <- deparse(substitute(height))
|
|
||||||
|
|
||||||
data <- data.frame(rsi = x, cnt = 1) %>%
|
|
||||||
group_by(rsi) %>%
|
|
||||||
summarise(cnt = sum(cnt)) %>%
|
|
||||||
droplevels()
|
|
||||||
|
|
||||||
barplot(table(x),
|
|
||||||
col = c('green3', 'orange2', 'red3'),
|
|
||||||
xlab = 'Antimicrobial Interpretation',
|
|
||||||
main = paste('Susceptibilty Analysis of', x_name),
|
|
||||||
ylab = 'Frequency',
|
|
||||||
axes = FALSE,
|
|
||||||
...)
|
|
||||||
# y axis, 0-100%
|
|
||||||
axis(side = 2, at = seq(0, max(data$cnt) + max(data$cnt) * 1.1, by = 25))
|
|
||||||
}
|
|
||||||
|
|
||||||
#' Class 'mic'
|
|
||||||
#'
|
|
||||||
#' This transforms a vector to a new class\code{mic}, which is an ordered factor with valid MIC values as levels. Invalid MIC values will be translated as \code{NA} with a warning.
|
|
||||||
#' @rdname as.mic
|
|
||||||
#' @param x vector
|
|
||||||
#' @param na.rm a logical indicating whether missing values should be removed
|
|
||||||
#' @return New class \code{mic}
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>%
|
|
||||||
#' @examples
|
|
||||||
#' mic_data <- as.mic(c(">=32", "1.0", "1", "1.00", 8, "<=0.128", "8", "16", "16"))
|
|
||||||
#' is.mic(mic_data)
|
|
||||||
#'
|
|
||||||
#' plot(mic_data)
|
|
||||||
#' barplot(mic_data)
|
|
||||||
as.mic <- function(x, na.rm = FALSE) {
|
|
||||||
if (is.mic(x)) {
|
|
||||||
x
|
|
||||||
} else {
|
|
||||||
x <- x %>% unlist()
|
|
||||||
if (na.rm == TRUE) {
|
|
||||||
x <- x[!is.na(x)]
|
|
||||||
}
|
|
||||||
x.bak <- x
|
|
||||||
|
|
||||||
# comma to dot
|
|
||||||
x <- gsub(',', '.', x, fixed = TRUE)
|
|
||||||
# starting dots must start with 0
|
|
||||||
x <- gsub('^[.]', '0.', x)
|
|
||||||
# <=0.2560.512 should be 0.512
|
|
||||||
x <- gsub('.*[.].*[.]', '0.', x)
|
|
||||||
# remove ending .0
|
|
||||||
x <- gsub('[.]0$', '', x)
|
|
||||||
# remove all after last digit
|
|
||||||
x <- gsub('[^0-9]$', '', x)
|
|
||||||
# remove last zeroes
|
|
||||||
x <- gsub('[.]?0+$', '', x)
|
|
||||||
|
|
||||||
lvls <- c("<0.002", "<=0.002", "0.002", ">=0.002", ">0.002",
|
|
||||||
"<0.003", "<=0.003", "0.003", ">=0.003", ">0.003",
|
|
||||||
"<0.004", "<=0.004", "0.004", ">=0.004", ">0.004",
|
|
||||||
"<0.006", "<=0.006", "0.006", ">=0.006", ">0.006",
|
|
||||||
"<0.008", "<=0.008", "0.008", ">=0.008", ">0.008",
|
|
||||||
"<0.012", "<=0.012", "0.012", ">=0.012", ">0.012",
|
|
||||||
"<0.016", "<=0.016", "0.016", ">=0.016", ">0.016",
|
|
||||||
"<0.023", "<=0.023", "0.023", ">=0.023", ">0.023",
|
|
||||||
"<0.025", "<=0.025", "0.025", ">=0.025", ">0.025",
|
|
||||||
"<0.03", "<=0.03", "0.03", ">=0.03", ">0.03",
|
|
||||||
"<0.032", "<=0.032", "0.032", ">=0.032", ">0.032",
|
|
||||||
"<0.047", "<=0.047", "0.047", ">=0.047", ">0.047",
|
|
||||||
"<0.05", "<=0.05", "0.05", ">=0.05", ">0.05",
|
|
||||||
"<0.06", "<=0.06", "0.06", ">=0.06", ">0.06",
|
|
||||||
"<0.0625", "<=0.0625", "0.0625", ">=0.0625", ">0.0625",
|
|
||||||
"<0.063", "<=0.063", "0.063", ">=0.063", ">0.063",
|
|
||||||
"<0.064", "<=0.064", "0.064", ">=0.064", ">0.064",
|
|
||||||
"<0.09", "<=0.09", "0.09", ">=0.09", ">0.09",
|
|
||||||
"<0.094", "<=0.094", "0.094", ">=0.094", ">0.094",
|
|
||||||
"<0.12", "<=0.12", "0.12", ">=0.12", ">0.12",
|
|
||||||
"<0.125", "<=0.125", "0.125", ">=0.125", ">0.125",
|
|
||||||
"<0.128", "<=0.128", "0.128", ">=0.128", ">0.128",
|
|
||||||
"<0.16", "<=0.16", "0.16", ">=0.16", ">0.16",
|
|
||||||
"<0.19", "<=0.19", "0.19", ">=0.19", ">0.19",
|
|
||||||
"<0.25", "<=0.25", "0.25", ">=0.25", ">0.25",
|
|
||||||
"<0.256", "<=0.256", "0.256", ">=0.256", ">0.256",
|
|
||||||
"<0.32", "<=0.32", "0.32", ">=0.32", ">0.32",
|
|
||||||
"<0.38", "<=0.38", "0.38", ">=0.38", ">0.38",
|
|
||||||
"<0.5", "<=0.5", "0.5", ">=0.5", ">0.5",
|
|
||||||
"<0.512", "<=0.512", "0.512", ">=0.512", ">0.512",
|
|
||||||
"<0.64", "<=0.64", "0.64", ">=0.64", ">0.64",
|
|
||||||
"<0.75", "<=0.75", "0.75", ">=0.75", ">0.75",
|
|
||||||
"<1", "<=1", "1", ">=1", ">1",
|
|
||||||
"<1.5", "<=1.5", "1.5", ">=1.5", ">1.5",
|
|
||||||
"<2", "<=2", "2", ">=2", ">2",
|
|
||||||
"<3", "<=3", "3", ">=3", ">3",
|
|
||||||
"<4", "<=4", "4", ">=4", ">4",
|
|
||||||
"<6", "<=6", "6", ">=6", ">6",
|
|
||||||
"<8", "<=8", "8", ">=8", ">8",
|
|
||||||
"<10", "<=10", "10", ">=10", ">10",
|
|
||||||
"<12", "<=12", "12", ">=12", ">12",
|
|
||||||
"<16", "<=16", "16", ">=16", ">16",
|
|
||||||
"<20", "<=20", "20", ">=20", ">20",
|
|
||||||
"<24", "<=24", "24", ">=24", ">24",
|
|
||||||
"<32", "<=32", "32", ">=32", ">32",
|
|
||||||
"<40", "<=40", "40", ">=40", ">40",
|
|
||||||
"<48", "<=48", "48", ">=48", ">48",
|
|
||||||
"<64", "<=64", "64", ">=64", ">64",
|
|
||||||
"<80", "<=80", "80", ">=80", ">80",
|
|
||||||
"<96", "<=96", "96", ">=96", ">96",
|
|
||||||
"<128", "<=128", "128", ">=128", ">128",
|
|
||||||
"<160", "<=160", "160", ">=160", ">160",
|
|
||||||
"<256", "<=256", "256", ">=256", ">256",
|
|
||||||
"<320", "<=320", "320", ">=320", ">320",
|
|
||||||
"<512", "<=512", "512", ">=512", ">512",
|
|
||||||
"<1024", "<=1024", "1024", ">=1024", ">1024")
|
|
||||||
x <- x %>% as.character()
|
|
||||||
|
|
||||||
na_before <- x[is.na(x) | x == ''] %>% length()
|
|
||||||
x[!x %in% lvls] <- NA
|
|
||||||
na_after <- x[is.na(x) | x == ''] %>% length()
|
|
||||||
|
|
||||||
if (na_before != na_after) {
|
|
||||||
list_missing <- x.bak[is.na(x) & !is.na(x.bak) & x.bak != ''] %>%
|
|
||||||
unique() %>%
|
|
||||||
sort()
|
|
||||||
list_missing <- paste0('"', list_missing , '"', collapse = ", ")
|
|
||||||
warning(na_after - na_before, ' results truncated (',
|
|
||||||
round(((na_after - na_before) / length(x)) / 100),
|
|
||||||
'%) that were invalid MICs: ',
|
|
||||||
list_missing, call. = FALSE)
|
|
||||||
}
|
|
||||||
|
|
||||||
x <- factor(x = x,
|
|
||||||
levels = lvls,
|
|
||||||
ordered = TRUE)
|
|
||||||
class(x) <- c('mic', 'ordered', 'factor')
|
|
||||||
x
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @rdname as.mic
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>%
|
|
||||||
is.mic <- function(x) {
|
|
||||||
class(x) %>% identical(c('mic', 'ordered', 'factor'))
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod as.double.mic
|
|
||||||
#' @export
|
|
||||||
#' @noRd
|
|
||||||
as.double.mic <- function(x, ...) {
|
|
||||||
as.double(gsub('(<|=|>)+', '', as.character(x)))
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod as.integer.mic
|
|
||||||
#' @export
|
|
||||||
#' @noRd
|
|
||||||
as.integer.mic <- function(x, ...) {
|
|
||||||
as.integer(gsub('(<|=|>)+', '', as.character(x)))
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod as.numeric.mic
|
|
||||||
#' @export
|
|
||||||
#' @noRd
|
|
||||||
as.numeric.mic <- function(x, ...) {
|
|
||||||
as.numeric(gsub('(<|=|>)+', '', as.character(x)))
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod print.mic
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% tibble group_by summarise pull
|
|
||||||
#' @noRd
|
|
||||||
print.mic <- function(x, ...) {
|
|
||||||
n_total <- x %>% length()
|
|
||||||
x <- x[!is.na(x)]
|
|
||||||
n <- x %>% length()
|
|
||||||
cat("Class 'mic': ", n, " isolates\n", sep = '')
|
|
||||||
cat('\n')
|
|
||||||
cat('<NA> ', n_total - n, '\n')
|
|
||||||
cat('\n')
|
|
||||||
tbl <- tibble(x = x, y = 1) %>% group_by(x) %>% summarise(y = sum(y))
|
|
||||||
cnt <- tbl %>% pull(y)
|
|
||||||
names(cnt) <- tbl %>% pull(x)
|
|
||||||
print(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod summary.mic
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% tibble group_by summarise pull
|
|
||||||
#' @noRd
|
|
||||||
summary.mic <- function(object, ...) {
|
|
||||||
x <- object
|
|
||||||
n_total <- x %>% length()
|
|
||||||
x <- x[!is.na(x)]
|
|
||||||
n <- x %>% length()
|
|
||||||
return(c("Mode" = 'mic',
|
|
||||||
"NA" = n_total - n,
|
|
||||||
"Min." = sort(x)[1] %>% as.character(),
|
|
||||||
"Max." = sort(x)[n] %>% as.character()
|
|
||||||
))
|
|
||||||
cat("Class 'mic': ", n, " isolates\n", sep = '')
|
|
||||||
cat('\n')
|
|
||||||
cat('<NA> ', n_total - n, '\n')
|
|
||||||
cat('\n')
|
|
||||||
tbl <- tibble(x = x, y = 1) %>% group_by(x) %>% summarise(y = sum(y))
|
|
||||||
cnt <- tbl %>% pull(y)
|
|
||||||
names(cnt) <- tbl %>% pull(x)
|
|
||||||
print(cnt)
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod plot.mic
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% group_by summarise
|
|
||||||
#' @importFrom graphics plot text
|
|
||||||
#' @noRd
|
|
||||||
plot.mic <- function(x, ...) {
|
|
||||||
x_name <- deparse(substitute(x))
|
|
||||||
create_barplot_mic(x, x_name, ...)
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @exportMethod barplot.mic
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% group_by summarise
|
|
||||||
#' @importFrom graphics barplot axis
|
|
||||||
#' @noRd
|
|
||||||
barplot.mic <- function(height, ...) {
|
|
||||||
x_name <- deparse(substitute(height))
|
|
||||||
create_barplot_mic(height, x_name, ...)
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @importFrom graphics barplot axis
|
|
||||||
create_barplot_mic <- function(x, x_name, ...) {
|
|
||||||
data <- data.frame(mic = x, cnt = 1) %>%
|
|
||||||
group_by(mic) %>%
|
|
||||||
summarise(cnt = sum(cnt)) %>%
|
|
||||||
droplevels()
|
|
||||||
barplot(table(droplevels(x)),
|
|
||||||
ylab = 'Frequency',
|
|
||||||
xlab = 'MIC value',
|
|
||||||
main = paste('MIC values of', x_name),
|
|
||||||
axes = FALSE,
|
|
||||||
...)
|
|
||||||
axis(2, seq(0, max(data$cnt)))
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
# ==================================================================== #
|
|
||||||
# TITLE #
|
|
||||||
# Antimicrobial Resistance (AMR) Analysis #
|
|
||||||
# #
|
|
||||||
# AUTHORS #
|
|
||||||
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
|
|
||||||
# #
|
|
||||||
# LICENCE #
|
|
||||||
# This program is free software; you can redistribute it and/or modify #
|
|
||||||
# it under the terms of the GNU General Public License version 2.0, #
|
|
||||||
# as published by the Free Software Foundation. #
|
|
||||||
# #
|
|
||||||
# This program is distributed in the hope that it will be useful, #
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
||||||
# GNU General Public License for more details. #
|
|
||||||
# ==================================================================== #
|
|
||||||
|
|
||||||
#' Dataset with 420 antibiotics
|
|
||||||
#'
|
|
||||||
#' A dataset containing all antibiotics with a J0 code, with their DDD's.
|
|
||||||
#' @format A data.frame with 420 observations and 12 variables:
|
|
||||||
#' \describe{
|
|
||||||
#' \item{\code{atc}}{ATC code, like \code{J01CR02}}
|
|
||||||
#' \item{\code{molis}}{MOLIS code, like \code{amcl}}
|
|
||||||
#' \item{\code{umcg}}{UMCG code, like \code{AMCL}}
|
|
||||||
#' \item{\code{official}}{Official name by the WHO, like \code{"amoxicillin and enzyme inhibitor"}}
|
|
||||||
#' \item{\code{official_nl}}{Official name in the Netherlands, like \code{"Amoxicilline met enzymremmer"}}
|
|
||||||
#' \item{\code{trivial_nl}}{Trivial name in Dutch, like \code{"Amoxicilline/clavulaanzuur"}}
|
|
||||||
#' \item{\code{oral_ddd}}{Defined Daily Dose (DDD) according to the WHO, oral treatment}
|
|
||||||
#' \item{\code{oral_units}}{Units of \code{ddd_units}}
|
|
||||||
#' \item{\code{iv_ddd}}{Defined Daily Dose (DDD) according to the WHO, parenteral treatment}
|
|
||||||
#' \item{\code{iv_units}}{Units of \code{iv_ddd}}
|
|
||||||
#' \item{\code{atc_group1}}{ATC group in Dutch, like \code{"Macroliden, lincosamiden en streptograminen"}}
|
|
||||||
#' \item{\code{atc_group2}}{Subgroup of \code{atc_group1} in Dutch, like \code{"Macroliden"}}
|
|
||||||
#' }
|
|
||||||
#' @source MOLIS (LIS of Certe) - \url{https://www.certe.nl} \cr \cr GLIMS (LIS of UMCG) - \url{https://www.umcg.nl} \cr \cr World Health Organization - \url{https://www.whocc.no/atc_ddd_index/}
|
|
||||||
#' @seealso \code{\link{bactlist}}
|
|
||||||
# todo:
|
|
||||||
# ablist <- ablist %>% mutate(useful_gramnegative = if_else(atc_group2 == 'Tetracyclines', FALSE, TRUE))
|
|
||||||
# ablist <- ablist %>% mutate(useful_gramnegative = if_else(atc_group2 %like% 'Glycopept', FALSE, useful_gramnegative))
|
|
||||||
# Tbl1 Enterobacteriaceae are also intrinsically resistant to benzylpenicillin, glycopeptides, fusidic acid, macrolides (with some exceptions1), lincosamides, streptogramins, rifampicin, daptomycin and linezolid.
|
|
||||||
# Tbl2 Non-fermentative Gram-negative bacteria are also generally intrinsically resistant to benzylpenicillin, first and second generation cephalosporins, glycopeptides, fusidic acid, macrolides, lincosamides, streptogramins, rifampicin, daptomycin and linezolid
|
|
||||||
# Tbl3 Gram-negative bacteria other than Enterobacteriaceae and non-fermentative Gram-negative bacteria listed are also intrinsically resistant to glycopeptides, lincosamides, daptomycin and linezolid.
|
|
||||||
"ablist"
|
|
||||||
|
|
||||||
#' Dataset with ~2500 microorganisms
|
|
||||||
#'
|
|
||||||
#' A dataset containing all microorganisms of MOLIS. MO codes of the UMCG can be looked up using \code{\link{bactlist.umcg}}.
|
|
||||||
#' @format A data.frame with 2507 observations and 10 variables:
|
|
||||||
#' \describe{
|
|
||||||
#' \item{\code{bactid}}{ID of microorganism}
|
|
||||||
#' \item{\code{bactsys}}{Bactsyscode of microorganism}
|
|
||||||
#' \item{\code{family}}{Family name of microorganism}
|
|
||||||
#' \item{\code{genus}}{Genus name of microorganism, like \code{"Echerichia"}}
|
|
||||||
#' \item{\code{species}}{Species name of microorganism, like \code{"coli"}}
|
|
||||||
#' \item{\code{subspecies}}{Subspecies name of bio-/serovar of microorganism, like \code{"EHEC"}}
|
|
||||||
#' \item{\code{fullname}}{Full name, like \code{"Echerichia coli (EHEC)"}}
|
|
||||||
#' \item{\code{type}}{Type of microorganism in Dutch, like \code{"Bacterie"} and \code{"Schimmel/gist"}}
|
|
||||||
#' \item{\code{gramstain}}{Gram of microorganism in Dutch, like \code{"Negatieve staven"}}
|
|
||||||
#' \item{\code{aerobic}}{Type aerobe/anaerobe of bacteria}
|
|
||||||
#' }
|
|
||||||
#' @source MOLIS (LIS of Certe) - \url{https://www.certe.nl}
|
|
||||||
#' @seealso \code{\link{ablist}} \code{\link{bactlist.umcg}}
|
|
||||||
"bactlist"
|
|
||||||
|
|
||||||
#' Translation table for UMCG with ~1100 microorganisms
|
|
||||||
#'
|
|
||||||
#' A dataset containing all bacteria codes of UMCG MMB. These codes can be joined to data with an ID from \code{\link{bactlist}$bactid}, using \code{\link{left_join_bactlist}}.
|
|
||||||
#' @format A data.frame with 1090 observations and 2 variables:
|
|
||||||
#' \describe{
|
|
||||||
#' \item{\code{mocode}}{Code of microorganism according to UMCG MMB}
|
|
||||||
#' \item{\code{bactid}}{Code of microorganism in \code{\link{bactlist}}}
|
|
||||||
#' }
|
|
||||||
#' @source MOLIS (LIS of Certe) - \url{https://www.certe.nl} \cr \cr GLIMS (LIS of UMCG) - \url{https://www.umcg.nl}
|
|
||||||
#' @seealso \code{\link{bactlist}}
|
|
||||||
"bactlist.umcg"
|
|
||||||
|
|
||||||
#' Dataset with 2000 blood culture isolates of septic patients
|
|
||||||
#'
|
|
||||||
#' An anonymised dataset containing 2000 microbial blood culture isolates with their antibiogram of septic patients found in 5 different hospitals in the Netherlands, between 2001 and 2017. This data.frame can be used to practice AMR analysis e.g. with \code{\link{rsi}} or \code{\link{rsi_predict}}, or it can be used to practice other statistics.
|
|
||||||
#' @format A data.frame with 2000 observations and 47 variables:
|
|
||||||
#' \describe{
|
|
||||||
#' \item{\code{date}}{date of receipt at the laboratory}
|
|
||||||
#' \item{\code{hospital_id}}{ID of the hospital}
|
|
||||||
#' \item{\code{ward_icu}}{logical to determine if ward is an intensive care unit}
|
|
||||||
#' \item{\code{ward_clinical}}{logical to determine if ward is a regular clinical ward}
|
|
||||||
#' \item{\code{ward_outpatient}}{logical to determine if ward is an outpatient clinic}
|
|
||||||
#' \item{\code{age}}{age of the patient}
|
|
||||||
#' \item{\code{sex}}{sex of the patient}
|
|
||||||
#' \item{\code{patient_id}}{ID of the patient, first 10 characters of an SHA hash containing irretrievable information}
|
|
||||||
#' \item{\code{bactid}}{ID of microorganism, see \code{\link{bactlist}}}
|
|
||||||
#' \item{\code{peni:mupi}}{38 different antibiotics with class \code{rsi} (see \code{\link{as.rsi}}), these column names occur in \code{\link{ablist}} and can be translated with \code{\link{abname}}}
|
|
||||||
#' }
|
|
||||||
#' @source MOLIS (LIS of Certe) - \url{https://www.certe.nl}
|
|
||||||
"septic_patients"
|
|
||||||
@@ -1,504 +0,0 @@
|
|||||||
# ==================================================================== #
|
|
||||||
# TITLE #
|
|
||||||
# Antimicrobial Resistance (AMR) Analysis #
|
|
||||||
# #
|
|
||||||
# AUTHORS #
|
|
||||||
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
|
|
||||||
# #
|
|
||||||
# LICENCE #
|
|
||||||
# This program is free software; you can redistribute it and/or modify #
|
|
||||||
# it under the terms of the GNU General Public License version 2.0, #
|
|
||||||
# as published by the Free Software Foundation. #
|
|
||||||
# #
|
|
||||||
# This program is distributed in the hope that it will be useful, #
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
||||||
# GNU General Public License for more details. #
|
|
||||||
# ==================================================================== #
|
|
||||||
|
|
||||||
#' Determine first (weighted) isolates
|
|
||||||
#'
|
|
||||||
#' Determine first (weighted) isolates of all microorganisms of every patient per episode and (if needed) per specimen type.
|
|
||||||
#' @param tbl a \code{data.frame} containing isolates.
|
|
||||||
#' @param col_date column name of the result date (or date that is was received on the lab)
|
|
||||||
#' @param col_patient_id column name of the unique IDs of the patients
|
|
||||||
#' @param col_genus column name of the genus of the microorganisms
|
|
||||||
#' @param col_species column name of the species of the microorganisms
|
|
||||||
#' @param col_testcode column name of the test codes. Use \code{col_testcode = NA} to \strong{not} exclude certain test codes (like test codes for screening). In that case \code{testcodes_exclude} will be ignored.
|
|
||||||
#' @param col_specimen column name of the specimen type or group
|
|
||||||
#' @param col_icu column name of the logicals (\code{TRUE}/\code{FALSE}) whether a ward or department is an Intensive Care Unit (ICU)
|
|
||||||
#' @param col_keyantibiotics column name of the key antibiotics to determine first \emph{weighted} isolates, see \code{\link{key_antibiotics}}.
|
|
||||||
#' @param episode_days episode in days after which a genus/species combination will be determined as 'first isolate' again
|
|
||||||
#' @param testcodes_exclude character vector with test codes that should be excluded (caseINsensitive)
|
|
||||||
#' @param icu_exclude logical whether ICU isolates should be excluded
|
|
||||||
#' @param filter_specimen specimen group or type that should be excluded
|
|
||||||
#' @param output_logical return output as \code{logical} (will else the values \code{0} or \code{1})
|
|
||||||
#' @param points_threshold points until the comparison of key antibiotics will lead to inclusion of an isolate, see Details
|
|
||||||
#' @param info print progress
|
|
||||||
#' @details \strong{Why this is so important} \cr
|
|
||||||
#' To conduct an analysis of antimicrobial resistance, you should only include the first isolate of every patient per episode \href{https://www.ncbi.nlm.nih.gov/pubmed/17304462}{[1]}. If you would not do this, you could easily get an overestimate or underestimate of the resistance of an antibiotic. Imagine that a patient was admitted with an MRSA and that it was found in 5 different blood cultures the following week. The resistance percentage of oxacillin of all \emph{S. aureus} isolates would be overestimated, because you included this MRSA more than once. It would be \href{https://en.wikipedia.org/wiki/Selection_bias}{selection bias}.
|
|
||||||
#'
|
|
||||||
#' \strong{Using parameter \code{points_threshold}} \cr
|
|
||||||
#' To compare key antibiotics, the difference between antimicrobial interpretations will be measured. A difference from I to S|R (or vice versa) means 0.5 points. A difference from S to R (or vice versa) means 1 point. When the sum of points exceeds \code{points_threshold}, an isolate will be (re)selected as a first weighted isolate.
|
|
||||||
#' @keywords isolate isolates first
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr arrange_at lag between row_number filter mutate arrange
|
|
||||||
#' @return A vector to add to table, see Examples.
|
|
||||||
#' @examples
|
|
||||||
#' \dontrun{
|
|
||||||
#'
|
|
||||||
#' # set key antibiotics to a new variable
|
|
||||||
#' tbl$keyab <- key_antibiotics(tbl)
|
|
||||||
#'
|
|
||||||
#' tbl$first_isolate <-
|
|
||||||
#' first_isolate(tbl)
|
|
||||||
#'
|
|
||||||
#' tbl$first_isolate_weighed <-
|
|
||||||
#' first_isolate(tbl,
|
|
||||||
#' col_keyantibiotics = 'keyab')
|
|
||||||
#'
|
|
||||||
#' tbl$first_blood_isolate <-
|
|
||||||
#' first_isolate(tbl,
|
|
||||||
#' filter_specimen = 'Blood')
|
|
||||||
#'
|
|
||||||
#' tbl$first_blood_isolate_weighed <-
|
|
||||||
#' first_isolate(tbl,
|
|
||||||
#' filter_specimen = 'Blood',
|
|
||||||
#' col_keyantibiotics = 'keyab')
|
|
||||||
#'
|
|
||||||
#' tbl$first_urine_isolate <-
|
|
||||||
#' first_isolate(tbl,
|
|
||||||
#' filter_specimen = 'Urine')
|
|
||||||
#'
|
|
||||||
#' tbl$first_urine_isolate_weighed <-
|
|
||||||
#' first_isolate(tbl,
|
|
||||||
#' filter_specimen = 'Urine',
|
|
||||||
#' col_keyantibiotics = 'keyab')
|
|
||||||
#'
|
|
||||||
#' tbl$first_resp_isolate <-
|
|
||||||
#' first_isolate(tbl,
|
|
||||||
#' filter_specimen = 'Respiratory')
|
|
||||||
#'
|
|
||||||
#' tbl$first_resp_isolate_weighed <-
|
|
||||||
#' first_isolate(tbl,
|
|
||||||
#' filter_specimen = 'Respiratory',
|
|
||||||
#' col_keyantibiotics = 'keyab')
|
|
||||||
#' }
|
|
||||||
first_isolate <- function(tbl,
|
|
||||||
col_date,
|
|
||||||
col_patient_id,
|
|
||||||
col_genus,
|
|
||||||
col_species,
|
|
||||||
col_testcode = NA,
|
|
||||||
col_specimen,
|
|
||||||
col_icu,
|
|
||||||
col_keyantibiotics = NA,
|
|
||||||
episode_days = 365,
|
|
||||||
testcodes_exclude = '',
|
|
||||||
icu_exclude = FALSE,
|
|
||||||
filter_specimen = NA,
|
|
||||||
output_logical = TRUE,
|
|
||||||
points_threshold = 2,
|
|
||||||
info = TRUE) {
|
|
||||||
|
|
||||||
# controleren of kolommen wel bestaan
|
|
||||||
check_columns_existance <- function(column, tblname = tbl) {
|
|
||||||
if (NROW(tblname) <= 1 | NCOL(tblname) <= 1) {
|
|
||||||
stop('Please check tbl for existance.')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is.na(column)) {
|
|
||||||
if (!(column %in% colnames(tblname))) {
|
|
||||||
stop('Column ', column, ' not found.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
check_columns_existance(col_date)
|
|
||||||
check_columns_existance(col_patient_id)
|
|
||||||
check_columns_existance(col_genus)
|
|
||||||
check_columns_existance(col_species)
|
|
||||||
check_columns_existance(col_testcode)
|
|
||||||
check_columns_existance(col_icu)
|
|
||||||
check_columns_existance(col_keyantibiotics)
|
|
||||||
|
|
||||||
if (is.na(col_testcode)) {
|
|
||||||
testcodes_exclude <- NA
|
|
||||||
}
|
|
||||||
# testcodes verwijderen die ingevuld zijn
|
|
||||||
if (!is.na(testcodes_exclude[1]) & testcodes_exclude[1] != '' & info == TRUE) {
|
|
||||||
cat('Isolates from these test codes will be ignored:\n', toString(testcodes_exclude), '\n')
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is.na(col_icu)) {
|
|
||||||
icu_exclude <- FALSE
|
|
||||||
} else {
|
|
||||||
tbl <- tbl %>%
|
|
||||||
mutate(col_icu = tbl %>% pull(col_icu) %>% as.logical())
|
|
||||||
}
|
|
||||||
|
|
||||||
specgroup.notice <- ''
|
|
||||||
weighted.notice <- ''
|
|
||||||
# filteren op materiaalgroep en sleutelantibiotica gebruiken wanneer deze ingevuld zijn
|
|
||||||
if (!is.na(filter_specimen) & filter_specimen != '') {
|
|
||||||
check_columns_existance(col_specimen, tbl)
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('Isolates other than of specimen group \'', filter_specimen, '\' will be ignored. ', sep = '')
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
filter_specimen <- ''
|
|
||||||
}
|
|
||||||
if (col_keyantibiotics %in% c(NA, '')) {
|
|
||||||
col_keyantibiotics <- ''
|
|
||||||
} else {
|
|
||||||
tbl <- tbl %>% mutate(key_ab = tbl %>% pull(col_keyantibiotics))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is.na(testcodes_exclude[1])) {
|
|
||||||
testcodes_exclude <- ''
|
|
||||||
}
|
|
||||||
|
|
||||||
# nieuwe dataframe maken met de oorspronkelijke rij-index, 0-bepaling en juiste sortering
|
|
||||||
#cat('Sorting table...')
|
|
||||||
tbl <- tbl %>%
|
|
||||||
mutate(first_isolate_row_index = 1:nrow(tbl),
|
|
||||||
eersteisolaatbepaling = 0,
|
|
||||||
date_lab = tbl %>% pull(col_date),
|
|
||||||
patient_id = tbl %>% pull(col_patient_id),
|
|
||||||
species = tbl %>% pull(col_species),
|
|
||||||
genus = tbl %>% pull(col_genus)) %>%
|
|
||||||
mutate(species = if_else(is.na(species), '', species),
|
|
||||||
genus = if_else(is.na(genus), '', genus))
|
|
||||||
|
|
||||||
if (filter_specimen == '') {
|
|
||||||
|
|
||||||
if (icu_exclude == FALSE) {
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('Isolates from ICU will *NOT* be ignored.\n')
|
|
||||||
}
|
|
||||||
tbl <- tbl %>%
|
|
||||||
arrange_at(c(col_patient_id,
|
|
||||||
col_genus,
|
|
||||||
col_species,
|
|
||||||
col_date))
|
|
||||||
row.start <- 1
|
|
||||||
row.end <- nrow(tbl)
|
|
||||||
} else {
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('Isolates from ICU will be ignored.\n')
|
|
||||||
}
|
|
||||||
tbl <- tbl %>%
|
|
||||||
arrange_at(c(col_icu,
|
|
||||||
col_patient_id,
|
|
||||||
col_genus,
|
|
||||||
col_species,
|
|
||||||
col_date))
|
|
||||||
|
|
||||||
suppressWarnings(
|
|
||||||
row.start <- which(tbl %>% pull(col_icu) == FALSE) %>% min(na.rm = TRUE)
|
|
||||||
)
|
|
||||||
suppressWarnings(
|
|
||||||
row.end <- which(tbl %>% pull(col_icu) == FALSE) %>% max(na.rm = TRUE)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
# sorteren op materiaal en alleen die rijen analyseren om tijd te besparen
|
|
||||||
if (icu_exclude == FALSE) {
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('Isolates from ICU will *NOT* be ignored.\n')
|
|
||||||
}
|
|
||||||
tbl <- tbl %>%
|
|
||||||
arrange_at(c(col_specimen,
|
|
||||||
col_patient_id,
|
|
||||||
col_genus,
|
|
||||||
col_species,
|
|
||||||
col_date))
|
|
||||||
suppressWarnings(
|
|
||||||
row.start <- which(tbl %>% pull(col_specimen) == filter_specimen) %>% min(na.rm = TRUE)
|
|
||||||
)
|
|
||||||
suppressWarnings(
|
|
||||||
row.end <- which(tbl %>% pull(col_specimen) == filter_specimen) %>% max(na.rm = TRUE)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('Isolates from ICU will be ignored.\n')
|
|
||||||
}
|
|
||||||
tbl <- tbl %>%
|
|
||||||
arrange_at(c(col_icu,
|
|
||||||
col_specimen,
|
|
||||||
col_patient_id,
|
|
||||||
col_genus,
|
|
||||||
col_species,
|
|
||||||
col_date))
|
|
||||||
suppressWarnings(
|
|
||||||
row.start <- which(tbl %>% pull(col_specimen) == filter_specimen
|
|
||||||
& tbl %>% pull(col_icu) == FALSE) %>% min(na.rm = TRUE)
|
|
||||||
)
|
|
||||||
suppressWarnings(
|
|
||||||
row.end <- which(tbl %>% pull(col_specimen) == filter_specimen
|
|
||||||
& tbl %>% pull(col_icu) == FALSE) %>% max(na.rm = TRUE)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (abs(row.start) == Inf | abs(row.end) == Inf) {
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('No isolates found.\n')
|
|
||||||
}
|
|
||||||
# NA's maken waar genus niet beschikbaar is
|
|
||||||
tbl <- tbl %>%
|
|
||||||
mutate(real_first_isolate = if_else(genus == '', NA, FALSE))
|
|
||||||
if (output_logical == FALSE) {
|
|
||||||
tbl$real_first_isolate <- tbl %>% pull(real_first_isolate) %>% as.integer()
|
|
||||||
}
|
|
||||||
return(tbl %>% pull(real_first_isolate))
|
|
||||||
}
|
|
||||||
|
|
||||||
scope.size <- tbl %>%
|
|
||||||
filter(row_number() %>%
|
|
||||||
between(row.start,
|
|
||||||
row.end),
|
|
||||||
genus != '') %>%
|
|
||||||
nrow()
|
|
||||||
|
|
||||||
# Analyse van eerste isolaat ----
|
|
||||||
all_first <- tbl %>%
|
|
||||||
mutate(other_pat_or_mo = if_else(patient_id == lag(patient_id)
|
|
||||||
& genus == lag(genus)
|
|
||||||
& species == lag(species),
|
|
||||||
FALSE,
|
|
||||||
TRUE),
|
|
||||||
days_diff = 0) %>%
|
|
||||||
mutate(days_diff = if_else(other_pat_or_mo == FALSE,
|
|
||||||
(date_lab - lag(date_lab)) + lag(days_diff),
|
|
||||||
0))
|
|
||||||
|
|
||||||
if (col_keyantibiotics != '') {
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat(paste0('Comparing key antibiotics for first weighted isolates (using points threshold of '
|
|
||||||
, points_threshold, ')...\n'))
|
|
||||||
}
|
|
||||||
all_first <- all_first %>%
|
|
||||||
mutate(key_ab_lag = lag(key_ab)) %>%
|
|
||||||
mutate(key_ab_other = !key_antibiotics_equal(x = key_ab,
|
|
||||||
y = key_ab_lag,
|
|
||||||
points_threshold = points_threshold,
|
|
||||||
info = info)) %>%
|
|
||||||
mutate(
|
|
||||||
real_first_isolate =
|
|
||||||
if_else(
|
|
||||||
between(row_number(), row.start, row.end)
|
|
||||||
& genus != ''
|
|
||||||
& (other_pat_or_mo
|
|
||||||
| days_diff >= episode_days
|
|
||||||
| key_ab_other),
|
|
||||||
TRUE,
|
|
||||||
FALSE))
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('\n')
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
all_first <- all_first %>%
|
|
||||||
mutate(
|
|
||||||
real_first_isolate =
|
|
||||||
if_else(
|
|
||||||
between(row_number(), row.start, row.end)
|
|
||||||
& genus != ''
|
|
||||||
& (other_pat_or_mo
|
|
||||||
| days_diff >= episode_days),
|
|
||||||
TRUE,
|
|
||||||
FALSE))
|
|
||||||
}
|
|
||||||
|
|
||||||
# allereerst isolaat als TRUE
|
|
||||||
all_first[row.start, 'real_first_isolate'] <- TRUE
|
|
||||||
# geen testen die uitgesloten moeten worden, of ICU
|
|
||||||
if (!is.na(col_testcode)) {
|
|
||||||
all_first[which(all_first[, col_testcode] %in% tolower(testcodes_exclude)), 'real_first_isolate'] <- FALSE
|
|
||||||
}
|
|
||||||
if (icu_exclude == TRUE) {
|
|
||||||
all_first[which(all_first[, col_icu] == TRUE), 'real_first_isolate'] <- FALSE
|
|
||||||
}
|
|
||||||
|
|
||||||
# NA's maken waar genus niet beschikbaar is
|
|
||||||
all_first <- all_first %>%
|
|
||||||
mutate(real_first_isolate = if_else(genus == '', NA, real_first_isolate))
|
|
||||||
|
|
||||||
all_first <- all_first %>%
|
|
||||||
arrange(first_isolate_row_index) %>%
|
|
||||||
pull(real_first_isolate)
|
|
||||||
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat(paste0('\nFound ',
|
|
||||||
all_first %>% sum(na.rm = TRUE),
|
|
||||||
' first ', weighted.notice, 'isolates (',
|
|
||||||
(all_first %>% sum(na.rm = TRUE) / scope.size) %>% percent(),
|
|
||||||
' of isolates in scope [where genus was not empty] and ',
|
|
||||||
(all_first %>% sum(na.rm = TRUE) / tbl %>% nrow()) %>% percent(),
|
|
||||||
' of total)\n'))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (output_logical == FALSE) {
|
|
||||||
all_first <- all_first %>% as.integer()
|
|
||||||
}
|
|
||||||
|
|
||||||
all_first
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#' Key antibiotics based on bacteria ID
|
|
||||||
#'
|
|
||||||
#' @param tbl table with antibiotics coloms, like \code{amox} and \code{amcl}.
|
|
||||||
#' @param col_bactcode column of bacteria IDs in \code{tbl}; these should occur in \code{bactlist$bactid}, see \code{\link{bactlist}}
|
|
||||||
#' @param info print warnings
|
|
||||||
#' @param amcl,amox,cfot,cfta,cftr,cfur,cipr,clar,clin,clox,doxy,gent,line,mero,peni,pita,rifa,teic,trsu,vanc column names of antibiotics.
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% mutate if_else
|
|
||||||
#' @return Character of length 1.
|
|
||||||
#' @seealso \code{\link{mo_property}} \code{\link{ablist}}
|
|
||||||
#' @examples
|
|
||||||
#' \donttest{
|
|
||||||
#' #' # set key antibiotics to a new variable
|
|
||||||
#' tbl$keyab <- key_antibiotics(tbl)
|
|
||||||
#' }
|
|
||||||
key_antibiotics <- function(tbl,
|
|
||||||
col_bactcode = 'bactid',
|
|
||||||
info = TRUE,
|
|
||||||
amcl = 'amcl',
|
|
||||||
amox = 'amox',
|
|
||||||
cfot = 'cfot',
|
|
||||||
cfta = 'cfta',
|
|
||||||
cftr = 'cftr',
|
|
||||||
cfur = 'cfur',
|
|
||||||
cipr = 'cipr',
|
|
||||||
clar = 'clar',
|
|
||||||
clin = 'clin',
|
|
||||||
clox = 'clox',
|
|
||||||
doxy = 'doxy',
|
|
||||||
gent = 'gent',
|
|
||||||
line = 'line',
|
|
||||||
mero = 'mero',
|
|
||||||
peni = 'peni',
|
|
||||||
pita = 'pita',
|
|
||||||
rifa = 'rifa',
|
|
||||||
teic = 'teic',
|
|
||||||
trsu = 'trsu',
|
|
||||||
vanc = 'vanc') {
|
|
||||||
|
|
||||||
keylist <- character(length = nrow(tbl))
|
|
||||||
|
|
||||||
# check columns
|
|
||||||
col.list <- c(amox, cfot, cfta, cftr, cfur, cipr, clar,
|
|
||||||
clin, clox, doxy, gent, line, mero, peni,
|
|
||||||
pita, rifa, teic, trsu, vanc)
|
|
||||||
col.list <- col.list[!is.na(col.list)]
|
|
||||||
if (!all(col.list %in% colnames(tbl))) {
|
|
||||||
if (info == TRUE) {
|
|
||||||
warning('These columns do not exist and will be ignored:\n',
|
|
||||||
col.list[!(col.list %in% colnames(tbl))] %>% toString(),
|
|
||||||
immediate. = TRUE,
|
|
||||||
call. = FALSE)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# bactlist aan vastknopen
|
|
||||||
tbl <- tbl %>% left_join_bactlist(col_bactcode)
|
|
||||||
|
|
||||||
tbl$key_ab <- NA_character_
|
|
||||||
|
|
||||||
# Staphylococcus
|
|
||||||
list_ab <- c(clox, trsu, teic, vanc, doxy, line, clar, rifa)
|
|
||||||
list_ab <- list_ab[list_ab %in% colnames(tbl)]
|
|
||||||
tbl <- tbl %>% mutate(key_ab =
|
|
||||||
if_else(genus == 'Staphylococcus',
|
|
||||||
apply(X = tbl[, list_ab],
|
|
||||||
MARGIN = 1,
|
|
||||||
FUN = function(x) paste(x, collapse = "")),
|
|
||||||
key_ab))
|
|
||||||
|
|
||||||
# Rest of Gram +
|
|
||||||
list_ab <- c(peni, amox, teic, vanc, clin, line, clar, trsu)
|
|
||||||
list_ab <- list_ab[list_ab %in% colnames(tbl)]
|
|
||||||
tbl <- tbl %>% mutate(key_ab =
|
|
||||||
if_else(gramstain %like% '^Positi[e]?ve',
|
|
||||||
apply(X = tbl[, list_ab],
|
|
||||||
MARGIN = 1,
|
|
||||||
FUN = function(x) paste(x, collapse = "")),
|
|
||||||
key_ab))
|
|
||||||
|
|
||||||
# Gram -
|
|
||||||
list_ab <- c(amox, amcl, pita, cfur, cfot, cfta, cftr, mero, cipr, trsu, gent)
|
|
||||||
list_ab <- list_ab[list_ab %in% colnames(tbl)]
|
|
||||||
tbl <- tbl %>% mutate(key_ab =
|
|
||||||
if_else(gramstain %like% '^Negati[e]?ve',
|
|
||||||
apply(X = tbl[, list_ab],
|
|
||||||
MARGIN = 1,
|
|
||||||
FUN = function(x) paste(x, collapse = "")),
|
|
||||||
key_ab))
|
|
||||||
|
|
||||||
# format
|
|
||||||
tbl <- tbl %>%
|
|
||||||
mutate(key_ab = gsub('(NA|NULL)', '-', key_ab) %>% toupper())
|
|
||||||
|
|
||||||
tbl$key_ab
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @importFrom dplyr progress_estimated %>%
|
|
||||||
#' @noRd
|
|
||||||
key_antibiotics_equal <- function(x, y, points_threshold = 2, info = FALSE) {
|
|
||||||
# x is active row, y is lag
|
|
||||||
|
|
||||||
if (length(x) != length(y)) {
|
|
||||||
stop('Length of `x` and `y` must be equal.')
|
|
||||||
}
|
|
||||||
|
|
||||||
result <- logical(length(x))
|
|
||||||
|
|
||||||
if (info == TRUE) {
|
|
||||||
p <- dplyr::progress_estimated(length(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i in 1:length(x)) {
|
|
||||||
|
|
||||||
if (info == TRUE) {
|
|
||||||
p$tick()$print()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is.na(x[i])) {
|
|
||||||
x[i] <- ''
|
|
||||||
}
|
|
||||||
if (is.na(y[i])) {
|
|
||||||
y[i] <- ''
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nchar(x[i]) != nchar(y[i])) {
|
|
||||||
|
|
||||||
result[i] <- FALSE
|
|
||||||
|
|
||||||
} else if (x[i] == '' & y[i] == '') {
|
|
||||||
|
|
||||||
result[i] <- TRUE
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
# count points for every single character:
|
|
||||||
# - no change is 0 points
|
|
||||||
# - I <-> S|R is 0.5 point
|
|
||||||
# - S|R <-> R|S is 1 point
|
|
||||||
# use the levels of as.rsi (S = 1, I = 2, R = 3)
|
|
||||||
|
|
||||||
x2 <- strsplit(x[i], "")[[1]] %>% as.rsi() %>% as.double()
|
|
||||||
y2 <- strsplit(y[i], "")[[1]] %>% as.rsi() %>% as.double()
|
|
||||||
|
|
||||||
points <- (x2 - y2) %>% abs() %>% sum(na.rm = TRUE)
|
|
||||||
result[i] <- ((points / 2) >= points_threshold)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('\n')
|
|
||||||
}
|
|
||||||
result
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
# ==================================================================== #
|
|
||||||
# TITLE #
|
|
||||||
# Antimicrobial Resistance (AMR) Analysis #
|
|
||||||
# #
|
|
||||||
# AUTHORS #
|
|
||||||
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
|
|
||||||
# #
|
|
||||||
# LICENCE #
|
|
||||||
# This program is free software; you can redistribute it and/or modify #
|
|
||||||
# it under the terms of the GNU General Public License version 2.0, #
|
|
||||||
# as published by the Free Software Foundation. #
|
|
||||||
# #
|
|
||||||
# This program is distributed in the hope that it will be useful, #
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
||||||
# GNU General Public License for more details. #
|
|
||||||
# ==================================================================== #
|
|
||||||
|
|
||||||
globalVariables(c('.',
|
|
||||||
'abname',
|
|
||||||
'bactid',
|
|
||||||
'cnt',
|
|
||||||
'date_lab',
|
|
||||||
'days_diff',
|
|
||||||
'first_isolate_row_index',
|
|
||||||
'genus',
|
|
||||||
'gramstain',
|
|
||||||
'key_ab',
|
|
||||||
'key_ab_lag',
|
|
||||||
'key_ab_other',
|
|
||||||
'mic',
|
|
||||||
'n',
|
|
||||||
'other_pat_or_mo',
|
|
||||||
'patient_id',
|
|
||||||
'real_first_isolate',
|
|
||||||
'species',
|
|
||||||
'y'))
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
#' Join a table with \code{bactlist}
|
|
||||||
#'
|
|
||||||
#' Join the list of microorganisms \code{\link{bactlist}} easily to an existing table.
|
|
||||||
#' @rdname join
|
|
||||||
#' @name join
|
|
||||||
#' @aliases join inner_join
|
|
||||||
#' @param x existing table to join
|
|
||||||
#' @param by a variable to join by - could be a column name of \code{x} with values that exist in \code{bactlist$bactid} (like \code{by = "bacteria_id"}), or another column in \code{\link{bactlist}} (but then it should be named, like \code{by = c("my_genus_species" = "fullname")})
|
|
||||||
#' @param ... other parameters to pass on to \code{dplyr::\link[dplyr]{join}}.
|
|
||||||
#' @details As opposed to the \code{\link[dplyr]{join}} functions of \code{dplyr}, at default existing columns will get a suffix \code{"2"} and the newly joined columns will not get a suffix. See \code{\link[dplyr]{join}} for more information.
|
|
||||||
#' @export
|
|
||||||
#' @examples
|
|
||||||
#' df <- data.frame(date = seq(from = as.Date("2018-01-01"),
|
|
||||||
#' to = as.Date("2018-01-07"),
|
|
||||||
#' by = 1),
|
|
||||||
#' bacteria_id = c("STAAUR", "STAAUR", "STAAUR", "STAAUR",
|
|
||||||
#' "ESCCOL", "ESCCOL", "ESCCOL"),
|
|
||||||
#' stringsAsFactors = FALSE)
|
|
||||||
#'
|
|
||||||
#' colnames(df)
|
|
||||||
#' df2 <- left_join_bactlist(df, "bacteria_id")
|
|
||||||
#' colnames(df2)
|
|
||||||
inner_join_bactlist <- function(x, by = 'bactid', ...) {
|
|
||||||
# no name set to `by` parameter
|
|
||||||
if (is.null(names(by))) {
|
|
||||||
joinby <- colnames(AMR::bactlist)[1]
|
|
||||||
names(joinby) <- by
|
|
||||||
} else {
|
|
||||||
joinby <- by
|
|
||||||
}
|
|
||||||
join <- dplyr::inner_join(x = x, y = AMR::bactlist, by = joinby, suffix = c("2", ""), ...)
|
|
||||||
if (nrow(join) > nrow(x)) {
|
|
||||||
warning('the newly joined tbl contains ', nrow(join) - nrow(x), ' rows more that its original')
|
|
||||||
}
|
|
||||||
join
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @rdname join
|
|
||||||
#' @export
|
|
||||||
left_join_bactlist <- function(x, by = 'bactid', ...) {
|
|
||||||
# no name set to `by` parameter
|
|
||||||
if (is.null(names(by))) {
|
|
||||||
joinby <- colnames(AMR::bactlist)[1]
|
|
||||||
names(joinby) <- by
|
|
||||||
} else {
|
|
||||||
joinby <- by
|
|
||||||
}
|
|
||||||
join <- dplyr::left_join(x = x, y = AMR::bactlist, by = joinby, suffix = c("2", ""), ...)
|
|
||||||
if (nrow(join) > nrow(x)) {
|
|
||||||
warning('the newly joined tbl contains ', nrow(join) - nrow(x), ' rows more that its original')
|
|
||||||
}
|
|
||||||
join
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @rdname join
|
|
||||||
#' @export
|
|
||||||
right_join_bactlist <- function(x, by = 'bactid', ...) {
|
|
||||||
# no name set to `by` parameter
|
|
||||||
if (is.null(names(by))) {
|
|
||||||
joinby <- colnames(AMR::bactlist)[1]
|
|
||||||
names(joinby) <- by
|
|
||||||
} else {
|
|
||||||
joinby <- by
|
|
||||||
}
|
|
||||||
join <- dplyr::right_join(x = x, y = AMR::bactlist, by = joinby, suffix = c("2", ""), ...)
|
|
||||||
if (nrow(join) > nrow(x)) {
|
|
||||||
warning('the newly joined tbl contains ', nrow(join) - nrow(x), ' rows more that its original')
|
|
||||||
}
|
|
||||||
join
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @rdname join
|
|
||||||
#' @export
|
|
||||||
full_join_bactlist <- function(x, by = 'bactid', ...) {
|
|
||||||
# no name set to `by` parameter
|
|
||||||
if (is.null(names(by))) {
|
|
||||||
joinby <- colnames(AMR::bactlist)[1]
|
|
||||||
names(joinby) <- by
|
|
||||||
} else {
|
|
||||||
joinby <- by
|
|
||||||
}
|
|
||||||
dplyr::full_join(x = x, y = AMR::bactlist, by = joinby, suffix = c("2", ""), ...)
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @rdname join
|
|
||||||
#' @export
|
|
||||||
semi_join_bactlist <- function(x, by = 'bactid', ...) {
|
|
||||||
# no name set to `by` parameter
|
|
||||||
if (is.null(names(by))) {
|
|
||||||
joinby <- colnames(AMR::bactlist)[1]
|
|
||||||
names(joinby) <- by
|
|
||||||
} else {
|
|
||||||
joinby <- by
|
|
||||||
}
|
|
||||||
dplyr::semi_join(x = x, y = AMR::bactlist, by = joinby, ...)
|
|
||||||
}
|
|
||||||
|
|
||||||
#' @rdname join
|
|
||||||
#' @export
|
|
||||||
anti_join_bactlist <- function(x, by = 'bactid', ...) {
|
|
||||||
# no name set to `by` parameter
|
|
||||||
if (is.null(names(by))) {
|
|
||||||
joinby <- colnames(AMR::bactlist)[1]
|
|
||||||
names(joinby) <- by
|
|
||||||
} else {
|
|
||||||
joinby <- by
|
|
||||||
}
|
|
||||||
dplyr::anti_join(x = x, y = AMR::bactlist, by = joinby, ...)
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
# ==================================================================== #
|
|
||||||
# TITLE #
|
|
||||||
# Antimicrobial Resistance (AMR) Analysis #
|
|
||||||
# #
|
|
||||||
# AUTHORS #
|
|
||||||
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
|
|
||||||
# #
|
|
||||||
# LICENCE #
|
|
||||||
# This program is free software; you can redistribute it and/or modify #
|
|
||||||
# it under the terms of the GNU General Public License version 2.0, #
|
|
||||||
# as published by the Free Software Foundation. #
|
|
||||||
# #
|
|
||||||
# This program is distributed in the hope that it will be useful, #
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
||||||
# GNU General Public License for more details. #
|
|
||||||
# ==================================================================== #
|
|
||||||
|
|
||||||
# No export, no Rd
|
|
||||||
"%like%" <- function(vector, pattern) {
|
|
||||||
# Source: https://github.com/Rdatatable/data.table/blob/master/R/like.R
|
|
||||||
if (is.factor(vector)) {
|
|
||||||
as.integer(vector) %in% grep(pattern, levels(vector))
|
|
||||||
} else {
|
|
||||||
grepl(pattern, vector)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
percent <- function(x, round = 1, ...) {
|
|
||||||
base::paste0(base::round(x * 100, digits = round), "%")
|
|
||||||
}
|
|
||||||
|
|
||||||
quasiquotate <- function(deparsed, parsed) {
|
|
||||||
# when text: remove first and last "
|
|
||||||
if (any(deparsed %like% '^".+"$' | deparsed %like% "^'.+'$")) {
|
|
||||||
deparsed <- deparsed %>% substr(2, nchar(.) - 1)
|
|
||||||
}
|
|
||||||
# apply if needed
|
|
||||||
if (any(!deparsed %like% '[[$:()]'
|
|
||||||
& !deparsed %in% c('""', "''", "", # empty text
|
|
||||||
".", ".data", # dplyr references
|
|
||||||
"TRUE", "FALSE", # logicals
|
|
||||||
"NA", "NaN", "NULL", # empty values
|
|
||||||
ls(.GlobalEnv)))) {
|
|
||||||
deparsed
|
|
||||||
} else {
|
|
||||||
parsed
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,426 +0,0 @@
|
|||||||
# ==================================================================== #
|
|
||||||
# TITLE #
|
|
||||||
# Antimicrobial Resistance (AMR) Analysis #
|
|
||||||
# #
|
|
||||||
# AUTHORS #
|
|
||||||
# Berends MS (m.s.berends@umcg.nl), Luz CF (c.f.luz@umcg.nl) #
|
|
||||||
# #
|
|
||||||
# LICENCE #
|
|
||||||
# This program is free software; you can redistribute it and/or modify #
|
|
||||||
# it under the terms of the GNU General Public License version 2.0, #
|
|
||||||
# as published by the Free Software Foundation. #
|
|
||||||
# #
|
|
||||||
# This program is distributed in the hope that it will be useful, #
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
||||||
# GNU General Public License for more details. #
|
|
||||||
# ==================================================================== #
|
|
||||||
|
|
||||||
#' Resistance of isolates in data.frame
|
|
||||||
#'
|
|
||||||
#' \strong{NOTE: use \code{\link{rsi}} in dplyr functions like \code{\link[dplyr]{summarise}}.} \cr Calculate the percentage of S, SI, I, IR or R of a \code{data.frame} containing isolates.
|
|
||||||
#' @param tbl \code{data.frame} containing columns with antibiotic interpretations.
|
|
||||||
#' @param antibiotics character vector with 1, 2 or 3 antibiotics that occur as column names in \code{tbl}, like \code{antibiotics = c("amox", "amcl")}
|
|
||||||
#' @param interpretation antimicrobial interpretation of which the portion must be calculated. Valid values are \code{"S"}, \code{"SI"}, \code{"I"}, \code{"IR"} or \code{"R"}.
|
|
||||||
#' @param minimum minimal amount of available isolates. Any number lower than \code{minimum} will return \code{NA} with a warning (when \code{warning = TRUE}).
|
|
||||||
#' @param percent return output as percent (text), will else (at default) be a double
|
|
||||||
#' @param info calculate the amount of available isolates and print it, like \code{n = 423}
|
|
||||||
#' @param warning show a warning when the available amount of isolates is below \code{minimum}
|
|
||||||
#' @details Remember that you should filter your table to let it contain \strong{only first isolates}!
|
|
||||||
#' @keywords rsi antibiotics isolate isolates
|
|
||||||
#' @return Double or, when \code{percent = TRUE}, a character.
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% n_distinct filter filter_at pull vars all_vars any_vars
|
|
||||||
#' @seealso \code{\link{rsi}} for the function that can be used with \code{\link[dplyr]{summarise}} directly.
|
|
||||||
#' @examples
|
|
||||||
#' \dontrun{
|
|
||||||
#' rsi_df(tbl_with_bloodcultures, 'amcl')
|
|
||||||
#'
|
|
||||||
#' rsi_df(tbl_with_bloodcultures, c('amcl', 'gent'), interpretation = 'IR')
|
|
||||||
#'
|
|
||||||
#' library(dplyr)
|
|
||||||
#' # calculate current empiric therapy of Helicobacter gastritis:
|
|
||||||
#' my_table %>%
|
|
||||||
#' filter(first_isolate == TRUE,
|
|
||||||
#' genus == "Helicobacter") %>%
|
|
||||||
#' rsi_df(antibiotics = c("amox", "metr"))
|
|
||||||
#' }
|
|
||||||
rsi_df <- function(tbl,
|
|
||||||
antibiotics,
|
|
||||||
interpretation = 'IR',
|
|
||||||
minimum = 30,
|
|
||||||
percent = FALSE,
|
|
||||||
info = TRUE,
|
|
||||||
warning = TRUE) {
|
|
||||||
|
|
||||||
# we willen niet dat tbl$interpretation toevallig ook bestaat, dus:
|
|
||||||
te_testen_uitslag_ab <- interpretation
|
|
||||||
|
|
||||||
# validatie:
|
|
||||||
if (min(grepl('^[a-z]{3,4}$', antibiotics)) == 0 &
|
|
||||||
min(grepl('^rsi[1-2]$', antibiotics)) == 0) {
|
|
||||||
for (i in 1:length(antibiotics)) {
|
|
||||||
antibiotics[i] <- paste0('rsi', i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!grepl('^(S|SI|IS|I|IR|RI|R){1}$', te_testen_uitslag_ab)) {
|
|
||||||
stop('Invalid `interpretation`; must be "S", "SI", "I", "IR", or "R".')
|
|
||||||
}
|
|
||||||
if ('is_ic' %in% colnames(tbl)) {
|
|
||||||
if (n_distinct(tbl$is_ic) > 1) {
|
|
||||||
warning('Dataset contains isolates from the Intensive Care. Exclude them from proper epidemiological analysis.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# transformeren wanneer gezocht wordt op verschillende uitslagen
|
|
||||||
if (te_testen_uitslag_ab %in% c('SI', 'IS')) {
|
|
||||||
for (i in 1:length(antibiotics)) {
|
|
||||||
lijst <- tbl[, antibiotics[i]]
|
|
||||||
if ('I' %in% lijst) {
|
|
||||||
tbl[which(tbl[antibiotics[i]] == 'I'), ][antibiotics[i]] <- 'S'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
te_testen_uitslag_ab <- 'S'
|
|
||||||
}
|
|
||||||
if (te_testen_uitslag_ab %in% c('RI', 'IR')) {
|
|
||||||
for (i in 1:length(antibiotics)) {
|
|
||||||
lijst <- tbl[, antibiotics[i]]
|
|
||||||
if ('I' %in% lijst) {
|
|
||||||
tbl[which(tbl[antibiotics[i]] == 'I'), ][antibiotics[i]] <- 'R'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
te_testen_uitslag_ab <- 'R'
|
|
||||||
}
|
|
||||||
|
|
||||||
# breuk samenstellen
|
|
||||||
if (length(antibiotics) == 1) {
|
|
||||||
numerator <- tbl %>%
|
|
||||||
filter(pull(., antibiotics[1]) == te_testen_uitslag_ab) %>%
|
|
||||||
nrow()
|
|
||||||
|
|
||||||
denominator <- tbl %>%
|
|
||||||
filter(pull(., antibiotics[1]) %in% c("S", "I", "R")) %>%
|
|
||||||
nrow()
|
|
||||||
|
|
||||||
} else if (length(antibiotics) == 2) {
|
|
||||||
numerator <- tbl %>%
|
|
||||||
filter_at(vars(antibiotics[1], antibiotics[2]),
|
|
||||||
any_vars(. == te_testen_uitslag_ab)) %>%
|
|
||||||
filter_at(vars(antibiotics[1], antibiotics[2]),
|
|
||||||
all_vars(. %in% c("S", "R", "I"))) %>%
|
|
||||||
nrow()
|
|
||||||
|
|
||||||
denominator <- tbl %>%
|
|
||||||
filter_at(vars(antibiotics[1], antibiotics[2]),
|
|
||||||
all_vars(. %in% c("S", "R", "I"))) %>%
|
|
||||||
nrow()
|
|
||||||
|
|
||||||
} else if (length(antibiotics) == 3) {
|
|
||||||
numerator <- tbl %>%
|
|
||||||
filter_at(vars(antibiotics[1], antibiotics[2], antibiotics[3]),
|
|
||||||
any_vars(. == te_testen_uitslag_ab)) %>%
|
|
||||||
filter_at(vars(antibiotics[1], antibiotics[2], antibiotics[3]),
|
|
||||||
all_vars(. %in% c("S", "R", "I"))) %>%
|
|
||||||
nrow()
|
|
||||||
|
|
||||||
denominator <- tbl %>%
|
|
||||||
filter_at(vars(antibiotics[1], antibiotics[2], antibiotics[3]),
|
|
||||||
all_vars(. %in% c("S", "R", "I"))) %>%
|
|
||||||
nrow()
|
|
||||||
|
|
||||||
} else {
|
|
||||||
stop('Maximum of 3 drugs allowed.')
|
|
||||||
}
|
|
||||||
|
|
||||||
# tekstdeel opbouwen
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('n =', denominator)
|
|
||||||
info.txt1 <- percent(denominator / nrow(tbl))
|
|
||||||
if (denominator == 0) {
|
|
||||||
info.txt1 <- 'none'
|
|
||||||
}
|
|
||||||
info.txt2 <- gsub(',', ' and',
|
|
||||||
antibiotics %>%
|
|
||||||
abname(to = 'trivial',
|
|
||||||
tolower = TRUE) %>%
|
|
||||||
toString(), fixed = TRUE)
|
|
||||||
info.txt2 <- gsub('rsi1 and rsi2', 'these two drugs', info.txt2, fixed = TRUE)
|
|
||||||
info.txt2 <- gsub('rsi1', 'this drug', info.txt2, fixed = TRUE)
|
|
||||||
cat(paste0(' (of ', nrow(tbl), ' in total; ', info.txt1, ' tested on ', info.txt2, ')\n'))
|
|
||||||
}
|
|
||||||
|
|
||||||
# rekenen en opmaken
|
|
||||||
y <- numerator / denominator
|
|
||||||
if (percent == TRUE) {
|
|
||||||
y <- percent(y)
|
|
||||||
}
|
|
||||||
if (denominator < minimum) {
|
|
||||||
if (warning == TRUE) {
|
|
||||||
warning(paste0('TOO FEW ISOLATES OF ', toString(antibiotics), ' (n = ', denominator, ', n < ', minimum, '); NO RESULT.'))
|
|
||||||
}
|
|
||||||
y <- NA
|
|
||||||
}
|
|
||||||
|
|
||||||
# output
|
|
||||||
y
|
|
||||||
}
|
|
||||||
|
|
||||||
#' Resistance of isolates
|
|
||||||
#'
|
|
||||||
#' This function can be used in \code{dplyr}s \code{\link[dplyr]{summarise}}, see \emph{Examples}. Calculate the percentage S, SI, I, IR or R of a vector of isolates.
|
|
||||||
#' @param ab1,ab2 list with interpretations of an antibiotic
|
|
||||||
#' @inheritParams rsi_df
|
|
||||||
#' @details This function uses the \code{\link{rsi_df}} function internally.
|
|
||||||
#' @keywords rsi antibiotics isolate isolates
|
|
||||||
#' @return Double or, when \code{percent = TRUE}, a character.
|
|
||||||
#' @export
|
|
||||||
#' @examples
|
|
||||||
#' \dontrun{
|
|
||||||
#' tbl %>%
|
|
||||||
#' group_by(hospital) %>%
|
|
||||||
#' summarise(cipr = rsi(cipr))
|
|
||||||
#'
|
|
||||||
#' tbl %>%
|
|
||||||
#' group_by(year, hospital) %>%
|
|
||||||
#' summarise(
|
|
||||||
#' isolates = n(),
|
|
||||||
#' cipro = rsi(cipr %>% as.rsi(), percent = TRUE),
|
|
||||||
#' amoxi = rsi(amox %>% as.rsi(), percent = TRUE))
|
|
||||||
#'
|
|
||||||
#' rsi(as.rsi(isolates$amox))
|
|
||||||
#'
|
|
||||||
#' rsi(as.rsi(isolates$amcl), interpretation = "S")
|
|
||||||
#' }
|
|
||||||
rsi <- function(ab1, ab2 = NA, interpretation = 'IR', minimum = 30, percent = FALSE, info = FALSE, warning = FALSE) {
|
|
||||||
function_text <- as.character(match.call())
|
|
||||||
# param 1 = functienaam
|
|
||||||
# param 2 = ab1
|
|
||||||
# param 3 = ab2
|
|
||||||
ab1.naam <- function_text[2]
|
|
||||||
if (!grepl('^[a-z]{3,4}$', ab1.naam)) {
|
|
||||||
ab1.naam <- 'rsi1'
|
|
||||||
}
|
|
||||||
ab2.naam <- function_text[3]
|
|
||||||
if (!grepl('^[a-z]{3,4}$', ab2.naam)) {
|
|
||||||
ab2.naam <- 'rsi2'
|
|
||||||
}
|
|
||||||
|
|
||||||
tbl <- tibble(rsi1 = ab1, rsi2 = ab2)
|
|
||||||
|
|
||||||
colnames(tbl) <- c(ab1.naam, ab2.naam)
|
|
||||||
|
|
||||||
if (length(ab2) == 1) {
|
|
||||||
return(rsi_df(tbl = tbl,
|
|
||||||
antibiotics = ab1.naam,
|
|
||||||
interpretation = interpretation,
|
|
||||||
minimum = minimum,
|
|
||||||
percent = percent,
|
|
||||||
info = info,
|
|
||||||
warning = warning))
|
|
||||||
} else {
|
|
||||||
if (length(ab1) != length(ab2)) {
|
|
||||||
stop('`ab1` (n = ', length(ab1), ') and `ab2` (n = ', length(ab2), ') must be of same length.', call. = FALSE)
|
|
||||||
}
|
|
||||||
if (interpretation != 'S') {
|
|
||||||
warning('`interpretation` is not set to S, albeit analysing a combination therapy.')
|
|
||||||
}
|
|
||||||
return(rsi_df(tbl = tbl,
|
|
||||||
antibiotics = c(ab1.naam, ab2.naam),
|
|
||||||
interpretation = interpretation,
|
|
||||||
minimum = minimum,
|
|
||||||
percent = percent,
|
|
||||||
info = info,
|
|
||||||
warning = warning))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#' Predict antimicrobial resistance
|
|
||||||
#'
|
|
||||||
#' Create a prediction model to predict antimicrobial resistance for the next years on statistical solid ground. Standard errors (SE) will be returned as columns \code{se_min} and \code{se_max}. See Examples for a real live example.
|
|
||||||
#' @param tbl table that contains columns \code{col_ab} and \code{col_date}
|
|
||||||
#' @param col_ab column name of \code{tbl} with antimicrobial interpretations (\code{R}, \code{I} and \code{S}), supports tidyverse-like quotation
|
|
||||||
#' @param col_date column name of the date, will be used to calculate years if this column doesn't consist of years already, supports tidyverse-like quotation
|
|
||||||
#' @param year_max highest year to use in the prediction model, deafults to 15 years after today
|
|
||||||
#' @param year_every unit of sequence between lowest year found in the data and \code{year_max}
|
|
||||||
#' @param model the statistical model of choice. Valid values are \code{"binomial"} (or \code{"binom"} or \code{"logit"}) or \code{"loglin"} or \code{"linear"} (or \code{"lin"}).
|
|
||||||
#' @param I_as_R treat \code{I} as \code{R}
|
|
||||||
#' @param preserve_measurements overwrite predictions of years that are actually available in the data, with the original data. The standard errors of those years will be \code{NA}.
|
|
||||||
#' @param info print textual analysis with the name and \code{\link{summary}} of the model.
|
|
||||||
#' @return \code{data.frame} with columns \code{year}, \code{probR}, \code{se_min} and \code{se_max}.
|
|
||||||
#' @seealso \code{\link{lm}} \cr \code{\link{glm}}
|
|
||||||
#' @export
|
|
||||||
#' @importFrom dplyr %>% pull mutate group_by_at summarise filter
|
|
||||||
#' @importFrom reshape2 dcast
|
|
||||||
#' @examples
|
|
||||||
#' \dontrun{
|
|
||||||
#' # use it directly:
|
|
||||||
#' rsi_predict(tbl = tbl[which(first_isolate == TRUE & genus == "Haemophilus"),],
|
|
||||||
#' col_ab = "amcl", col_date = "date")
|
|
||||||
#'
|
|
||||||
#' # or with dplyr so you can actually read it:
|
|
||||||
#' library(dplyr)
|
|
||||||
#' tbl %>%
|
|
||||||
#' filter(first_isolate == TRUE,
|
|
||||||
#' genus == "Haemophilus") %>%
|
|
||||||
#' rsi_predict(amcl, date)
|
|
||||||
#' }
|
|
||||||
#'
|
|
||||||
#'
|
|
||||||
#' # real live example:
|
|
||||||
#' library(dplyr)
|
|
||||||
#' septic_patients %>%
|
|
||||||
#' # get bacteria properties like genus and species
|
|
||||||
#' left_join_bactlist("bactid") %>%
|
|
||||||
#' # calculate first isolates
|
|
||||||
#' mutate(first_isolate =
|
|
||||||
#' first_isolate(.,
|
|
||||||
#' "date",
|
|
||||||
#' "patient_id",
|
|
||||||
#' "genus",
|
|
||||||
#' "species",
|
|
||||||
#' col_specimen = NA,
|
|
||||||
#' col_icu = NA)) %>%
|
|
||||||
#' # filter on first E. coli isolates
|
|
||||||
#' filter(genus == "Escherichia",
|
|
||||||
#' species == "coli",
|
|
||||||
#' first_isolate == TRUE) %>%
|
|
||||||
#' # predict resistance of cefotaxime for next years
|
|
||||||
#' rsi_predict(col_ab = cfot,
|
|
||||||
#' col_date = date,
|
|
||||||
#' year_max = 2025,
|
|
||||||
#' preserve_measurements = FALSE)
|
|
||||||
#'
|
|
||||||
rsi_predict <- function(tbl,
|
|
||||||
col_ab,
|
|
||||||
col_date,
|
|
||||||
year_max = as.integer(format(as.Date(Sys.Date()), '%Y')) + 15,
|
|
||||||
year_every = 1,
|
|
||||||
model = 'binomial',
|
|
||||||
I_as_R = TRUE,
|
|
||||||
preserve_measurements = TRUE,
|
|
||||||
info = TRUE) {
|
|
||||||
|
|
||||||
col_ab <- quasiquotate(deparse(substitute(col_ab)), col_ab)
|
|
||||||
if (!col_ab %in% colnames(tbl)) {
|
|
||||||
stop('Column ', col_ab, ' not found.')
|
|
||||||
}
|
|
||||||
col_date <- quasiquotate(deparse(substitute(col_date)), col_date)
|
|
||||||
if (!col_date %in% colnames(tbl)) {
|
|
||||||
stop('Column ', col_date, ' not found.')
|
|
||||||
}
|
|
||||||
if ('grouped_df' %in% class(tbl)) {
|
|
||||||
# no grouped tibbles please, mutate will throw errors
|
|
||||||
tbl <- base::as.data.frame(tbl, stringsAsFactors = FALSE)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (I_as_R == TRUE) {
|
|
||||||
tbl[, col_ab] <- gsub('I', 'R', tbl %>% pull(col_ab))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!all(tbl %>% pull(col_ab) %>% as.rsi() %in% c(NA, 'S', 'I', 'R'))) {
|
|
||||||
stop('Column ', col_ab, ' must contain antimicrobial interpretations (S, I, R).')
|
|
||||||
}
|
|
||||||
|
|
||||||
year <- function(x) {
|
|
||||||
if (all(grepl('^[0-9]{4}$', x))) {
|
|
||||||
x
|
|
||||||
} else {
|
|
||||||
as.integer(format(as.Date(x), '%Y'))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
years_predict <- seq(from = min(year(tbl %>% pull(col_date))), to = year_max, by = year_every)
|
|
||||||
|
|
||||||
df <- tbl %>%
|
|
||||||
mutate(year = year(tbl %>% pull(col_date))) %>%
|
|
||||||
group_by_at(c('year', col_ab)) %>%
|
|
||||||
summarise(n())
|
|
||||||
colnames(df) <- c('year', 'antibiotic', 'count')
|
|
||||||
df <- df %>%
|
|
||||||
reshape2::dcast(year ~ antibiotic, value.var = 'count')
|
|
||||||
|
|
||||||
if (model %in% c('binomial', 'binom', 'logit')) {
|
|
||||||
logitmodel <- with(df, glm(cbind(R, S) ~ year, family = binomial))
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('\nLogistic regression model (logit) with binomial distribution')
|
|
||||||
cat('\n------------------------------------------------------------\n')
|
|
||||||
print(summary(logitmodel))
|
|
||||||
}
|
|
||||||
|
|
||||||
predictmodel <- stats::predict(logitmodel, newdata = with(df, list(year = years_predict)), type = "response", se.fit = TRUE)
|
|
||||||
prediction <- predictmodel$fit
|
|
||||||
se <- predictmodel$se.fit
|
|
||||||
|
|
||||||
} else if (model == 'loglin') {
|
|
||||||
loglinmodel <- with(df, glm(R ~ year, family = poisson))
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('\nLog-linear regression model (loglin) with poisson distribution')
|
|
||||||
cat('\n--------------------------------------------------------------\n')
|
|
||||||
print(summary(loglinmodel))
|
|
||||||
}
|
|
||||||
|
|
||||||
predictmodel <- stats::predict(loglinmodel, newdata = with(df, list(year = years_predict)), type = "response", se.fit = TRUE)
|
|
||||||
prediction <- predictmodel$fit
|
|
||||||
se <- predictmodel$se.fit
|
|
||||||
|
|
||||||
} else if (model %in% c('lin', 'linear')) {
|
|
||||||
linmodel <- with(df, lm((R / (R + S)) ~ year))
|
|
||||||
if (info == TRUE) {
|
|
||||||
cat('\nLinear regression model')
|
|
||||||
cat('\n-----------------------\n')
|
|
||||||
print(summary(linmodel))
|
|
||||||
}
|
|
||||||
|
|
||||||
predictmodel <- stats::predict(linmodel, newdata = with(df, list(year = years_predict)), se.fit = TRUE)
|
|
||||||
prediction <- predictmodel$fit
|
|
||||||
se <- predictmodel$se.fit
|
|
||||||
|
|
||||||
} else {
|
|
||||||
stop('No valid model selected.')
|
|
||||||
}
|
|
||||||
|
|
||||||
# prepare the output dataframe
|
|
||||||
prediction <- data.frame(year = years_predict, probR = prediction, stringsAsFactors = FALSE)
|
|
||||||
|
|
||||||
prediction$se_min <- prediction$probR - se
|
|
||||||
prediction$se_max <- prediction$probR + se
|
|
||||||
|
|
||||||
if (model == 'loglin') {
|
|
||||||
prediction$probR <- prediction$probR %>%
|
|
||||||
format(scientific = FALSE) %>%
|
|
||||||
as.integer()
|
|
||||||
prediction$se_min <- prediction$se_min %>% as.integer()
|
|
||||||
prediction$se_max <- prediction$se_max %>% as.integer()
|
|
||||||
|
|
||||||
colnames(prediction) <- c('year', 'amountR', 'se_max', 'se_min')
|
|
||||||
} else {
|
|
||||||
prediction$se_max[which(prediction$se_max > 1)] <- 1
|
|
||||||
}
|
|
||||||
prediction$se_min[which(prediction$se_min < 0)] <- 0
|
|
||||||
|
|
||||||
total <- prediction
|
|
||||||
|
|
||||||
if (preserve_measurements == TRUE) {
|
|
||||||
# geschatte data vervangen door gemeten data
|
|
||||||
if (I_as_R == TRUE) {
|
|
||||||
if (!'I' %in% colnames(df)) {
|
|
||||||
df$I <- 0
|
|
||||||
}
|
|
||||||
df$probR <- df$R / rowSums(df[, c('R', 'S', 'I')])
|
|
||||||
} else {
|
|
||||||
df$probR <- df$R / rowSums(df[, c('R', 'S')])
|
|
||||||
}
|
|
||||||
measurements <- data.frame(year = df$year,
|
|
||||||
probR = df$probR,
|
|
||||||
se_min = NA,
|
|
||||||
se_max = NA,
|
|
||||||
stringsAsFactors = FALSE)
|
|
||||||
colnames(measurements) <- colnames(prediction)
|
|
||||||
prediction <- prediction %>% filter(!year %in% df$year)
|
|
||||||
|
|
||||||
total <- rbind(measurements, prediction)
|
|
||||||
}
|
|
||||||
|
|
||||||
total
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,182 +0,0 @@
|
|||||||
# `AMR`
|
|
||||||
This is an [R package](https://www.r-project.org) to simplify the analysis and prediction of Antimicrobial Resistance (AMR).
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
This R package was created for academic research by PhD students of the Faculty of Medical Sciences of the [University of Groningen](https://www.rug.nl/) and the Medical Microbiology & Infection Prevention department of the University Medical Center Groningen (UMCG). They also maintain this package, see [Authors](#authors).
|
|
||||||
|
|
||||||
## Why this package?
|
|
||||||
This R package contains functions to make microbiological, epidemiological data analysis easier. It allows the use of some new S3 classes to work with MIC values and antimicrobial interpretations (i.e. values S, I and R).
|
|
||||||
|
|
||||||
AMR can also be predicted for the forthcoming years with the `rsi_predict` function. For use with the `dplyr` package, the `rsi` function can be used in conjunction with `summarise` to calculate the resistance percentages of different antibiotic columns of a table.
|
|
||||||
|
|
||||||
It also contains functions to translate antibiotic codes from the lab (like `"AMOX"`) or the [WHO](https://www.whocc.no/atc_ddd_index/?code=J01CA04&showdescription=no) (like `"J01CA04"`) to trivial names (like `"amoxicillin"`) and vice versa.
|
|
||||||
|
|
||||||
## How to get it?
|
|
||||||
This package is available on CRAN and also here on GitHub.
|
|
||||||
|
|
||||||
### From CRAN (recommended, latest stable version)
|
|
||||||
[](http://cran.r-project.org/package=AMR)
|
|
||||||
[](http://cran.r-project.org/package=AMR)
|
|
||||||
|
|
||||||
- RStudio:
|
|
||||||
- Click on `Tools` and then `Install Packages...`
|
|
||||||
- Type in `AMR` and press <kbd>Install</kbd>
|
|
||||||
|
|
||||||
- R console:
|
|
||||||
- `install.packages("AMR")`
|
|
||||||
|
|
||||||
### From GitHub (latest development version)
|
|
||||||
[](https://travis-ci.org/msberends/AMR)
|
|
||||||
[](https://github.com/msberends/AMR/releases)
|
|
||||||
[](https://github.com/msberends/AMR/commits/master)
|
|
||||||
|
|
||||||
```r
|
|
||||||
install.packages("devtools")
|
|
||||||
devtools::install_github("msberends/AMR")
|
|
||||||
```
|
|
||||||
|
|
||||||
## How to use it?
|
|
||||||
```r
|
|
||||||
# Call it with:
|
|
||||||
library(AMR)
|
|
||||||
|
|
||||||
# For a list of functions:
|
|
||||||
help(package = "AMR")
|
|
||||||
```
|
|
||||||
### Overwrite/force resistance based on EUCAST rules
|
|
||||||
This is also called *interpretive reading*.
|
|
||||||
```r
|
|
||||||
before <- data.frame(bactid = c("STAAUR", # Staphylococcus aureus
|
|
||||||
"ENCFAE", # Enterococcus faecalis
|
|
||||||
"ESCCOL", # Escherichia coli
|
|
||||||
"KLEPNE", # Klebsiella pneumoniae
|
|
||||||
"PSEAER"), # Pseudomonas aeruginosa
|
|
||||||
vanc = "-", # Vancomycin
|
|
||||||
amox = "-", # Amoxicillin
|
|
||||||
coli = "-", # Colistin
|
|
||||||
cfta = "-", # Ceftazidime
|
|
||||||
cfur = "-", # Cefuroxime
|
|
||||||
stringsAsFactors = FALSE)
|
|
||||||
before
|
|
||||||
# bactid vanc amox coli cfta cfur
|
|
||||||
# 1 STAAUR - - - - -
|
|
||||||
# 2 ENCFAE - - - - -
|
|
||||||
# 3 ESCCOL - - - - -
|
|
||||||
# 4 KLEPNE - - - - -
|
|
||||||
# 5 PSEAER - - - - -
|
|
||||||
|
|
||||||
# Now apply those rules; just need a column with bacteria ID's and antibiotic results:
|
|
||||||
after <- EUCAST_rules(before)
|
|
||||||
after
|
|
||||||
# bactid vanc amox coli cfta cfur
|
|
||||||
# 1 STAAUR - - R R -
|
|
||||||
# 2 ENCFAE - - R R R
|
|
||||||
# 3 ESCCOL R - - - -
|
|
||||||
# 4 KLEPNE R R - - -
|
|
||||||
# 5 PSEAER R R - - R
|
|
||||||
```
|
|
||||||
|
|
||||||
### New classes
|
|
||||||
This package contains two new S3 classes: `mic` for MIC values (e.g. from Vitek or Phoenix) and `rsi` for antimicrobial drug interpretations (i.e. S, I and R). Both are actually ordered factors under the hood (an MIC of `2` being higher than `<=1` but lower than `>=32`, and for class `rsi` factors are ordered as `S < I < R`).
|
|
||||||
Both classes have extensions for existing generic functions like `print`, `summary` and `plot`.
|
|
||||||
|
|
||||||
```r
|
|
||||||
# Transform values to new classes
|
|
||||||
mic_data <- as.mic(c(">=32", "1.0", "8", "<=0.128", "8", "16", "16"))
|
|
||||||
rsi_data <- as.rsi(c(rep("S", 474), rep("I", 36), rep("R", 370)))
|
|
||||||
```
|
|
||||||
These functions also try to coerce valid values.
|
|
||||||
|
|
||||||
Quick overviews when just printing objects:
|
|
||||||
```r
|
|
||||||
mic_data
|
|
||||||
# Class 'mic': 7 isolates
|
|
||||||
#
|
|
||||||
# <NA> 0
|
|
||||||
#
|
|
||||||
# <=0.128 1 8 16 >=32
|
|
||||||
# 1 1 2 2 1
|
|
||||||
|
|
||||||
rsi_data
|
|
||||||
# Class 'rsi': 880 isolates
|
|
||||||
#
|
|
||||||
# <NA>: 0
|
|
||||||
# Sum of S: 474
|
|
||||||
# Sum of IR: 406
|
|
||||||
# - Sum of R: 370
|
|
||||||
# - Sum of I: 36
|
|
||||||
#
|
|
||||||
# %S %IR %I %R
|
|
||||||
# 53.9 46.1 4.1 42.0
|
|
||||||
```
|
|
||||||
|
|
||||||
A plot of `rsi_data`:
|
|
||||||
```r
|
|
||||||
plot(rsi_data)
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Other epidemiological functions:
|
|
||||||
|
|
||||||
```r
|
|
||||||
# Determine key antibiotic based on bacteria ID
|
|
||||||
key_antibiotics(...)
|
|
||||||
|
|
||||||
# Selection of first isolates of any patient
|
|
||||||
first_isolate(...)
|
|
||||||
|
|
||||||
# Calculate resistance levels of antibiotics, can be used with `summarise` (dplyr)
|
|
||||||
rsi(...)
|
|
||||||
# Predict resistance levels of antibiotics
|
|
||||||
rsi_predict(...)
|
|
||||||
|
|
||||||
# Get name of antibiotic by ATC code
|
|
||||||
abname(...)
|
|
||||||
abname("J01CR02", from = "atc", to = "umcg") # "AMCL"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Databases included in package
|
|
||||||
Datasets to work with antibiotics and bacteria properties.
|
|
||||||
```r
|
|
||||||
# Dataset with ATC antibiotics codes, official names and DDD's (oral and parenteral)
|
|
||||||
ablist # A tibble: 420 x 12
|
|
||||||
|
|
||||||
# Dataset with bacteria codes and properties like gram stain and aerobic/anaerobic
|
|
||||||
bactlist # A tibble: 2,507 x 10
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Authors
|
|
||||||
|
|
||||||
- [Berends MS](https://github.com/msberends)<sup>1,2</sup>, PhD Student
|
|
||||||
- [Luz CF](https://github.com/ceefluz)<sup>1</sup>, PhD Student
|
|
||||||
- [Hassing EEA](https://github.com/erwinhassing)<sup>2</sup>, Data Analyst (contributor)
|
|
||||||
|
|
||||||
<sup>1</sup> Department of Medical Microbiology, University of Groningen, University Medical Center Groningen, Groningen, the Netherlands
|
|
||||||
|
|
||||||
<sup>2</sup> Department of Medical, Market and Innovation (MMI), Certe Medische diagnostiek & advies, Groningen, the Netherlands
|
|
||||||
|
|
||||||
## Copyright
|
|
||||||
[](https://github.com/msberends/AMR/blob/master/LICENSE)
|
|
||||||
|
|
||||||
This R package is licensed under the [GNU General Public License (GPL) v2.0](https://github.com/msberends/AMR/blob/master/LICENSE). In a nutshell, this means that this package:
|
|
||||||
|
|
||||||
- May be used for commercial purposes
|
|
||||||
|
|
||||||
- May be used for private 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
|
|
||||||
|
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: 34 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 51 KiB |
@@ -0,0 +1,661 @@
|
|||||||
|
<!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="16x16" href="../favicon-16x16.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
|
||||||
|
<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.1/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.9/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="">2.1.1.9234</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="../articles/MDR.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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,707 @@
|
|||||||
|
<!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 with tidymodels • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
|
||||||
|
<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.1/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.9/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 with tidymodels">
|
||||||
|
<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="">2.1.1.9234</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="../articles/MDR.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>AMR with tidymodels</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/AMR_with_tidymodels.Rmd" class="external-link"><code>vignettes/AMR_with_tidymodels.Rmd</code></a></small>
|
||||||
|
<div class="d-none name"><code>AMR_with_tidymodels.Rmd</code></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<p>This page was entirely written by our <a href="https://chatgpt.com/g/g-M4UNLwFi5-amr-for-r-assistant" class="external-link">AMR for R
|
||||||
|
Assistant</a>, a ChatGPT manually-trained model able to answer any
|
||||||
|
question about the AMR package.</p>
|
||||||
|
</blockquote>
|
||||||
|
<p>Antimicrobial resistance (AMR) is a global health crisis, and
|
||||||
|
understanding resistance patterns is crucial for managing effective
|
||||||
|
treatments. The <code>AMR</code> R package provides robust tools for
|
||||||
|
analysing AMR data, including convenient antimicrobial selector
|
||||||
|
functions like <code><a href="../reference/antimicrobial_selectors.html">aminoglycosides()</a></code> and
|
||||||
|
<code><a href="../reference/antimicrobial_selectors.html">betalactams()</a></code>.</p>
|
||||||
|
<p>In this post, we will explore how to use the <code>tidymodels</code>
|
||||||
|
framework to predict resistance patterns in the
|
||||||
|
<code>example_isolates</code> dataset in two examples.</p>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="example-1-using-antimicrobial-selectors">Example 1: Using Antimicrobial Selectors<a class="anchor" aria-label="anchor" href="#example-1-using-antimicrobial-selectors"></a>
|
||||||
|
</h2>
|
||||||
|
<p>By leveraging the power of <code>tidymodels</code> and the
|
||||||
|
<code>AMR</code> 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.</p>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="objective">
|
||||||
|
<strong>Objective</strong><a class="anchor" aria-label="anchor" href="#objective"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Our goal is to build a predictive model using the
|
||||||
|
<code>tidymodels</code> framework to determine the Gramstain of the
|
||||||
|
microorganism based on microbial data. We will:</p>
|
||||||
|
<ol style="list-style-type: decimal">
|
||||||
|
<li>Preprocess data using the selector functions
|
||||||
|
<code><a href="../reference/antimicrobial_selectors.html">aminoglycosides()</a></code> and <code><a href="../reference/antimicrobial_selectors.html">betalactams()</a></code>.</li>
|
||||||
|
<li>Define a logistic regression model for prediction.</li>
|
||||||
|
<li>Use a structured <code>tidymodels</code> workflow to preprocess,
|
||||||
|
train, and evaluate the model.</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="data-preparation">
|
||||||
|
<strong>Data Preparation</strong><a class="anchor" aria-label="anchor" href="#data-preparation"></a>
|
||||||
|
</h3>
|
||||||
|
<p>We begin by loading the required libraries and preparing the
|
||||||
|
<code>example_isolates</code> dataset from the <code>AMR</code>
|
||||||
|
package.</p>
|
||||||
|
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Load required libraries</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/AMR/">AMR</a></span><span class="op">)</span> <span class="co"># For AMR data analysis</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://tidymodels.tidymodels.org" class="external-link">tidymodels</a></span><span class="op">)</span> <span class="co"># For machine learning workflows, and data manipulation (dplyr, tidyr, ...)</span></span></code></pre></div>
|
||||||
|
<p>Prepare the data:</p>
|
||||||
|
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Your data could look like this:</span></span>
|
||||||
|
<span><span class="va">example_isolates</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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #B2B2B2;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #B2B2B2;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #080808; background-color: #FFAFAF;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #080808; background-color: #FFAFAF;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> 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: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #B2B2B2;"> 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"># Select relevant columns for prediction</span></span>
|
||||||
|
<span><span class="va">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="co"># select AB results dynamically</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">mo</span>, <span class="fu"><a href="../reference/antimicrobial_selectors.html">aminoglycosides</a></span><span class="op">(</span><span class="op">)</span>, <span class="fu"><a href="../reference/antimicrobial_selectors.html">betalactams</a></span><span class="op">(</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"># replace NAs with NI (not-interpretable)</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><span class="fu"><a href="https://dplyr.tidyverse.org/reference/across.html" class="external-link">across</a></span><span class="op">(</span><span class="fu"><a href="https://tidyselect.r-lib.org/reference/where.html" class="external-link">where</a></span><span class="op">(</span><span class="va">is.sir</span><span class="op">)</span>,</span>
|
||||||
|
<span> <span class="op">~</span><span class="fu">replace_na</span><span class="op">(</span><span class="va">.x</span>, <span class="st">"NI"</span><span class="op">)</span><span class="op">)</span>,</span>
|
||||||
|
<span> <span class="co"># make factors of SIR columns</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/across.html" class="external-link">across</a></span><span class="op">(</span><span class="fu"><a href="https://tidyselect.r-lib.org/reference/where.html" class="external-link">where</a></span><span class="op">(</span><span class="va">is.sir</span><span class="op">)</span>,</span>
|
||||||
|
<span> <span class="va">as.integer</span><span class="op">)</span>,</span>
|
||||||
|
<span> <span class="co"># get Gramstain of microorganisms</span></span>
|
||||||
|
<span> mo <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/factor.html" class="external-link">as.factor</a></span><span class="op">(</span><span class="fu"><a href="../reference/mo_property.html">mo_gramstain</a></span><span class="op">(</span><span class="va">mo</span><span class="op">)</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"># drop NAs - the ones without a Gramstain (fungi, etc.)</span></span>
|
||||||
|
<span> <span class="fu">drop_na</span><span class="op">(</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #0000BB;">ℹ For </span><span style="color: #0000BB; background-color: #EEEEEE;">aminoglycosides()</span><span style="color: #0000BB;"> using columns '</span><span style="color: #0000BB; font-weight: bold;">GEN</span><span style="color: #0000BB;">' (gentamicin), '</span><span style="color: #0000BB; font-weight: bold;">TOB</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (tobramycin), '</span><span style="color: #0000BB; font-weight: bold;">AMK</span><span style="color: #0000BB;">' (amikacin), and '</span><span style="color: #0000BB; font-weight: bold;">KAN</span><span style="color: #0000BB;">' (kanamycin)</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #0000BB;">ℹ For </span><span style="color: #0000BB; background-color: #EEEEEE;">betalactams()</span><span style="color: #0000BB;"> using columns '</span><span style="color: #0000BB; font-weight: bold;">PEN</span><span style="color: #0000BB;">' (benzylpenicillin), '</span><span style="color: #0000BB; font-weight: bold;">OXA</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (oxacillin), '</span><span style="color: #0000BB; font-weight: bold;">FLC</span><span style="color: #0000BB;">' (flucloxacillin), '</span><span style="color: #0000BB; font-weight: bold;">AMX</span><span style="color: #0000BB;">' (amoxicillin), '</span><span style="color: #0000BB; font-weight: bold;">AMC</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (amoxicillin/clavulanic acid), '</span><span style="color: #0000BB; font-weight: bold;">AMP</span><span style="color: #0000BB;">' (ampicillin), '</span><span style="color: #0000BB; font-weight: bold;">TZP</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (piperacillin/tazobactam), '</span><span style="color: #0000BB; font-weight: bold;">CZO</span><span style="color: #0000BB;">' (cefazolin), '</span><span style="color: #0000BB; font-weight: bold;">FEP</span><span style="color: #0000BB;">' (cefepime), '</span><span style="color: #0000BB; font-weight: bold;">CXM</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (cefuroxime), '</span><span style="color: #0000BB; font-weight: bold;">FOX</span><span style="color: #0000BB;">' (cefoxitin), '</span><span style="color: #0000BB; font-weight: bold;">CTX</span><span style="color: #0000BB;">' (cefotaxime), '</span><span style="color: #0000BB; font-weight: bold;">CAZ</span><span style="color: #0000BB;">' (ceftazidime),</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> '</span><span style="color: #0000BB; font-weight: bold;">CRO</span><span style="color: #0000BB;">' (ceftriaxone), '</span><span style="color: #0000BB; font-weight: bold;">IPM</span><span style="color: #0000BB;">' (imipenem), and '</span><span style="color: #0000BB; font-weight: bold;">MEM</span><span style="color: #0000BB;">' (meropenem)</span></span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code><a href="../reference/antimicrobial_selectors.html">aminoglycosides()</a></code> and <code><a href="../reference/antimicrobial_selectors.html">betalactams()</a></code>
|
||||||
|
dynamically select columns for antimicrobials in these classes.</li>
|
||||||
|
<li>
|
||||||
|
<code>drop_na()</code> ensures the model receives complete cases for
|
||||||
|
training.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="defining-the-workflow">
|
||||||
|
<strong>Defining the Workflow</strong><a class="anchor" aria-label="anchor" href="#defining-the-workflow"></a>
|
||||||
|
</h3>
|
||||||
|
<p>We now define the <code>tidymodels</code> workflow, which consists of
|
||||||
|
three steps: preprocessing, model specification, and fitting.</p>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="preprocessing-with-a-recipe">1. Preprocessing with a Recipe<a class="anchor" aria-label="anchor" href="#preprocessing-with-a-recipe"></a>
|
||||||
|
</h4>
|
||||||
|
<p>We create a recipe to preprocess the data for modelling.</p>
|
||||||
|
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Define the recipe for data preprocessing</span></span>
|
||||||
|
<span><span class="va">resistance_recipe</span> <span class="op"><-</span> <span class="fu">recipe</span><span class="op">(</span><span class="va">mo</span> <span class="op">~</span> <span class="va">.</span>, data <span class="op">=</span> <span class="va">data</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">step_corr</span><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="fu"><a href="../reference/antimicrobial_selectors.html">aminoglycosides</a></span><span class="op">(</span><span class="op">)</span>, <span class="fu"><a href="../reference/antimicrobial_selectors.html">betalactams</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span>, threshold <span class="op">=</span> <span class="fl">0.9</span><span class="op">)</span></span>
|
||||||
|
<span><span class="va">resistance_recipe</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">──</span> <span style="font-weight: bold;">Recipe</span> <span style="color: #00BBBB;">──────────────────────────────────────────────────────────────────────</span></span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Inputs</span></span>
|
||||||
|
<span><span class="co">#> Number of variables by role</span></span>
|
||||||
|
<span><span class="co">#> outcome: 1</span></span>
|
||||||
|
<span><span class="co">#> predictor: 20</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Operations</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">•</span> Correlation filter on: <span style="color: #0000BB;">c(aminoglycosides(), betalactams())</span></span></span></code></pre></div>
|
||||||
|
<p>For a recipe that includes at least one preprocessing operation, like
|
||||||
|
we have with <code>step_corr()</code>, the necessary parameters can be
|
||||||
|
estimated from a training set using <code>prep()</code>:</p>
|
||||||
|
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu">prep</span><span class="op">(</span><span class="va">resistance_recipe</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #0000BB;">ℹ For </span><span style="color: #0000BB; background-color: #EEEEEE;">aminoglycosides()</span><span style="color: #0000BB;"> using columns '</span><span style="color: #0000BB; font-weight: bold;">GEN</span><span style="color: #0000BB;">' (gentamicin), '</span><span style="color: #0000BB; font-weight: bold;">TOB</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (tobramycin), '</span><span style="color: #0000BB; font-weight: bold;">AMK</span><span style="color: #0000BB;">' (amikacin), and '</span><span style="color: #0000BB; font-weight: bold;">KAN</span><span style="color: #0000BB;">' (kanamycin)</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #0000BB;">ℹ For </span><span style="color: #0000BB; background-color: #EEEEEE;">betalactams()</span><span style="color: #0000BB;"> using columns '</span><span style="color: #0000BB; font-weight: bold;">PEN</span><span style="color: #0000BB;">' (benzylpenicillin), '</span><span style="color: #0000BB; font-weight: bold;">OXA</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (oxacillin), '</span><span style="color: #0000BB; font-weight: bold;">FLC</span><span style="color: #0000BB;">' (flucloxacillin), '</span><span style="color: #0000BB; font-weight: bold;">AMX</span><span style="color: #0000BB;">' (amoxicillin), '</span><span style="color: #0000BB; font-weight: bold;">AMC</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (amoxicillin/clavulanic acid), '</span><span style="color: #0000BB; font-weight: bold;">AMP</span><span style="color: #0000BB;">' (ampicillin), '</span><span style="color: #0000BB; font-weight: bold;">TZP</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (piperacillin/tazobactam), '</span><span style="color: #0000BB; font-weight: bold;">CZO</span><span style="color: #0000BB;">' (cefazolin), '</span><span style="color: #0000BB; font-weight: bold;">FEP</span><span style="color: #0000BB;">' (cefepime), '</span><span style="color: #0000BB; font-weight: bold;">CXM</span><span style="color: #0000BB;">'</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> (cefuroxime), '</span><span style="color: #0000BB; font-weight: bold;">FOX</span><span style="color: #0000BB;">' (cefoxitin), '</span><span style="color: #0000BB; font-weight: bold;">CTX</span><span style="color: #0000BB;">' (cefotaxime), '</span><span style="color: #0000BB; font-weight: bold;">CAZ</span><span style="color: #0000BB;">' (ceftazidime),</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> '</span><span style="color: #0000BB; font-weight: bold;">CRO</span><span style="color: #0000BB;">' (ceftriaxone), '</span><span style="color: #0000BB; font-weight: bold;">IPM</span><span style="color: #0000BB;">' (imipenem), and '</span><span style="color: #0000BB; font-weight: bold;">MEM</span><span style="color: #0000BB;">' (meropenem)</span></span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">──</span> <span style="font-weight: bold;">Recipe</span> <span style="color: #00BBBB;">──────────────────────────────────────────────────────────────────────</span></span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Inputs</span></span>
|
||||||
|
<span><span class="co">#> Number of variables by role</span></span>
|
||||||
|
<span><span class="co">#> outcome: 1</span></span>
|
||||||
|
<span><span class="co">#> predictor: 20</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Training information</span></span>
|
||||||
|
<span><span class="co">#> Training data contained 1968 data points and no incomplete rows.</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Operations</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">•</span> Correlation filter on: <span style="color: #0000BB;">AMX</span> <span style="color: #0000BB;">CTX</span> | <span style="font-style: italic;">Trained</span></span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>recipe(mo ~ ., data = data)</code> will take the
|
||||||
|
<code>mo</code> column as outcome and all other columns as
|
||||||
|
predictors.</li>
|
||||||
|
<li>
|
||||||
|
<code>step_corr()</code> removes predictors (i.e., antibiotic
|
||||||
|
columns) that have a higher correlation than 90%.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Notice how the recipe contains just the antimicrobial selector
|
||||||
|
functions - no need to define the columns specifically. In the
|
||||||
|
preparation (retrieved with <code>prep()</code>) we can see that the
|
||||||
|
columns or variables ‘AMX’ and ‘CTX’ were removed as they correlate too
|
||||||
|
much with existing, other variables.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="specifying-the-model">2. Specifying the Model<a class="anchor" aria-label="anchor" href="#specifying-the-model"></a>
|
||||||
|
</h4>
|
||||||
|
<p>We define a logistic regression model since resistance prediction is
|
||||||
|
a binary classification task.</p>
|
||||||
|
<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Specify a logistic regression model</span></span>
|
||||||
|
<span><span class="va">logistic_model</span> <span class="op"><-</span> <span class="fu">logistic_reg</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="fu">set_engine</span><span class="op">(</span><span class="st">"glm"</span><span class="op">)</span> <span class="co"># Use the Generalised Linear Model engine</span></span>
|
||||||
|
<span><span class="va">logistic_model</span></span>
|
||||||
|
<span><span class="co">#> Logistic Regression Model Specification (classification)</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> Computational engine: glm</span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>logistic_reg()</code> sets up a logistic regression
|
||||||
|
model.</li>
|
||||||
|
<li>
|
||||||
|
<code>set_engine("glm")</code> specifies the use of R’s built-in GLM
|
||||||
|
engine.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="building-the-workflow">3. Building the Workflow<a class="anchor" aria-label="anchor" href="#building-the-workflow"></a>
|
||||||
|
</h4>
|
||||||
|
<p>We bundle the recipe and model together into a <code>workflow</code>,
|
||||||
|
which organises the entire modeling process.</p>
|
||||||
|
<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Combine the recipe and model into a workflow</span></span>
|
||||||
|
<span><span class="va">resistance_workflow</span> <span class="op"><-</span> <span class="fu">workflow</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="fu">add_recipe</span><span class="op">(</span><span class="va">resistance_recipe</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"># Add the preprocessing recipe</span></span>
|
||||||
|
<span> <span class="fu">add_model</span><span class="op">(</span><span class="va">logistic_model</span><span class="op">)</span> <span class="co"># Add the logistic regression model</span></span>
|
||||||
|
<span><span class="va">resistance_workflow</span></span>
|
||||||
|
<span><span class="co">#> ══ Workflow ════════════════════════════════════════════════════════════════════</span></span>
|
||||||
|
<span><span class="co">#> <span style="font-style: italic;">Preprocessor:</span> Recipe</span></span>
|
||||||
|
<span><span class="co">#> <span style="font-style: italic;">Model:</span> logistic_reg()</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Preprocessor ────────────────────────────────────────────────────────────────</span></span>
|
||||||
|
<span><span class="co">#> 1 Recipe Step</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> • step_corr()</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Model ───────────────────────────────────────────────────────────────────────</span></span>
|
||||||
|
<span><span class="co">#> Logistic Regression Model Specification (classification)</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> Computational engine: glm</span></span></code></pre></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="training-and-evaluating-the-model">
|
||||||
|
<strong>Training and Evaluating the Model</strong><a class="anchor" aria-label="anchor" href="#training-and-evaluating-the-model"></a>
|
||||||
|
</h3>
|
||||||
|
<p>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.</p>
|
||||||
|
<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Split data into training and testing sets</span></span>
|
||||||
|
<span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">123</span><span class="op">)</span> <span class="co"># For reproducibility</span></span>
|
||||||
|
<span><span class="va">data_split</span> <span class="op"><-</span> <span class="fu">initial_split</span><span class="op">(</span><span class="va">data</span>, prop <span class="op">=</span> <span class="fl">0.8</span><span class="op">)</span> <span class="co"># 80% training, 20% testing</span></span>
|
||||||
|
<span><span class="va">training_data</span> <span class="op"><-</span> <span class="fu">training</span><span class="op">(</span><span class="va">data_split</span><span class="op">)</span> <span class="co"># Training set</span></span>
|
||||||
|
<span><span class="va">testing_data</span> <span class="op"><-</span> <span class="fu">testing</span><span class="op">(</span><span class="va">data_split</span><span class="op">)</span> <span class="co"># Testing set</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Fit the workflow to the training data</span></span>
|
||||||
|
<span><span class="va">fitted_workflow</span> <span class="op"><-</span> <span class="va">resistance_workflow</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu">fit</span><span class="op">(</span><span class="va">training_data</span><span class="op">)</span> <span class="co"># Train the model</span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>initial_split()</code> splits the data into training and
|
||||||
|
testing sets.</li>
|
||||||
|
<li>
|
||||||
|
<code>fit()</code> trains the workflow on the training set.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Notice how in <code>fit()</code>, the antimicrobial selector
|
||||||
|
functions are internally called again. For training, these functions are
|
||||||
|
called since they are stored in the recipe.</p>
|
||||||
|
<p>Next, we evaluate the model on the testing data.</p>
|
||||||
|
<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Make predictions on the testing set</span></span>
|
||||||
|
<span><span class="va">predictions</span> <span class="op"><-</span> <span class="va">fitted_workflow</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://rdrr.io/r/stats/predict.html" class="external-link">predict</a></span><span class="op">(</span><span class="va">testing_data</span><span class="op">)</span> <span class="co"># Generate predictions</span></span>
|
||||||
|
<span><span class="va">probabilities</span> <span class="op"><-</span> <span class="va">fitted_workflow</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://rdrr.io/r/stats/predict.html" class="external-link">predict</a></span><span class="op">(</span><span class="va">testing_data</span>, type <span class="op">=</span> <span class="st">"prob"</span><span class="op">)</span> <span class="co"># Generate probabilities</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">predictions</span> <span class="op"><-</span> <span class="va">predictions</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/bind_cols.html" class="external-link">bind_cols</a></span><span class="op">(</span><span class="va">probabilities</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/bind_cols.html" class="external-link">bind_cols</a></span><span class="op">(</span><span class="va">testing_data</span><span class="op">)</span> <span class="co"># Combine with true labels</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">predictions</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 394 × 24</span></span></span>
|
||||||
|
<span><span class="co">#> .pred_class `.pred_Gram-negative` `.pred_Gram-positive` mo GEN TOB</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><fct></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;"><fct></span> <span style="color: #949494; font-style: italic;"><int></span> <span style="color: #949494; font-style: italic;"><int></span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 1</span> Gram-positive 1.07<span style="color: #949494;">e</span><span style="color: #BB0000;">- 1</span> 8.93<span style="color: #949494;">e</span><span style="color: #BB0000;">- 1</span> Gram-p… 5 5</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 2</span> Gram-positive 3.17<span style="color: #949494;">e</span><span style="color: #BB0000;">- 8</span> 1.00<span style="color: #949494;">e</span>+ 0 Gram-p… 5 1</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 3</span> Gram-negative 9.99<span style="color: #949494;">e</span><span style="color: #BB0000;">- 1</span> 1.42<span style="color: #949494;">e</span><span style="color: #BB0000;">- 3</span> Gram-n… 5 5</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 4</span> Gram-positive 2.22<span style="color: #949494;">e</span><span style="color: #BB0000;">-16</span> 1 <span style="color: #949494;">e</span>+ 0 Gram-p… 5 5</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 5</span> Gram-negative 9.46<span style="color: #949494;">e</span><span style="color: #BB0000;">- 1</span> 5.42<span style="color: #949494;">e</span><span style="color: #BB0000;">- 2</span> Gram-n… 5 5</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 6</span> Gram-positive 1.07<span style="color: #949494;">e</span><span style="color: #BB0000;">- 1</span> 8.93<span style="color: #949494;">e</span><span style="color: #BB0000;">- 1</span> Gram-p… 5 5</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 7</span> Gram-positive 2.22<span style="color: #949494;">e</span><span style="color: #BB0000;">-16</span> 1 <span style="color: #949494;">e</span>+ 0 Gram-p… 1 5</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 8</span> Gram-positive 2.22<span style="color: #949494;">e</span><span style="color: #BB0000;">-16</span> 1 <span style="color: #949494;">e</span>+ 0 Gram-p… 4 4</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 9</span> Gram-negative 1 <span style="color: #949494;">e</span>+ 0 2.22<span style="color: #949494;">e</span><span style="color: #BB0000;">-16</span> Gram-n… 1 1</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">10</span> Gram-positive 6.05<span style="color: #949494;">e</span><span style="color: #BB0000;">-11</span> 1.00<span style="color: #949494;">e</span>+ 0 Gram-p… 4 4</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># ℹ 384 more rows</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># ℹ 18 more variables: AMK <int>, KAN <int>, PEN <int>, OXA <int>, FLC <int>,</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># AMX <int>, AMC <int>, AMP <int>, TZP <int>, CZO <int>, FEP <int>,</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># CXM <int>, FOX <int>, CTX <int>, CAZ <int>, CRO <int>, IPM <int>, MEM <int></span></span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Evaluate model performance</span></span>
|
||||||
|
<span><span class="va">metrics</span> <span class="op"><-</span> <span class="va">predictions</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu">metrics</span><span class="op">(</span>truth <span class="op">=</span> <span class="va">mo</span>, estimate <span class="op">=</span> <span class="va">.pred_class</span><span class="op">)</span> <span class="co"># Calculate performance metrics</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">metrics</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 2 × 3</span></span></span>
|
||||||
|
<span><span class="co">#> .metric .estimator .estimate</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></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> accuracy binary 0.995</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> kap binary 0.989</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># To assess some other model properties, you can make our own `metrics()` function</span></span>
|
||||||
|
<span><span class="va">our_metrics</span> <span class="op"><-</span> <span class="fu">metric_set</span><span class="op">(</span><span class="va">accuracy</span>, <span class="va">kap</span>, <span class="va">ppv</span>, <span class="va">npv</span><span class="op">)</span> <span class="co"># add Positive Predictive Value and Negative Predictive Value</span></span>
|
||||||
|
<span><span class="va">metrics2</span> <span class="op"><-</span> <span class="va">predictions</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu">our_metrics</span><span class="op">(</span>truth <span class="op">=</span> <span class="va">mo</span>, estimate <span class="op">=</span> <span class="va">.pred_class</span><span class="op">)</span> <span class="co"># run again on our `our_metrics()` function</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">metrics2</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 4 × 3</span></span></span>
|
||||||
|
<span><span class="co">#> .metric .estimator .estimate</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></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> accuracy binary 0.995</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> kap binary 0.989</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">3</span> ppv binary 0.987</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">4</span> npv binary 1</span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code><a href="https://rdrr.io/r/stats/predict.html" class="external-link">predict()</a></code> generates predictions on the testing
|
||||||
|
set.</li>
|
||||||
|
<li>
|
||||||
|
<code>metrics()</code> computes evaluation metrics like accuracy and
|
||||||
|
kappa.</li>
|
||||||
|
</ul>
|
||||||
|
<p>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:</p>
|
||||||
|
<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">predictions</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu">roc_curve</span><span class="op">(</span><span class="va">mo</span>, <span class="va">`.pred_Gram-negative`</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://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="AMR_with_tidymodels_files/figure-html/unnamed-chunk-8-1.png" width="720"></p>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="conclusion">
|
||||||
|
<strong>Conclusion</strong><a class="anchor" aria-label="anchor" href="#conclusion"></a>
|
||||||
|
</h3>
|
||||||
|
<p>In this post, we demonstrated how to build a machine learning
|
||||||
|
pipeline with the <code>tidymodels</code> framework and the
|
||||||
|
<code>AMR</code> package. By combining selector functions like
|
||||||
|
<code><a href="../reference/antimicrobial_selectors.html">aminoglycosides()</a></code> and <code><a href="../reference/antimicrobial_selectors.html">betalactams()</a></code> with
|
||||||
|
<code>tidymodels</code>, we efficiently prepared data, trained a model,
|
||||||
|
and evaluated its performance.</p>
|
||||||
|
<p>This workflow is extensible to other antimicrobial classes and
|
||||||
|
resistance patterns, empowering users to analyse AMR data systematically
|
||||||
|
and reproducibly.</p>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level2">
|
||||||
|
<h2 id="example-2-predicting-amr-over-time">Example 2: Predicting AMR Over Time<a class="anchor" aria-label="anchor" href="#example-2-predicting-amr-over-time"></a>
|
||||||
|
</h2>
|
||||||
|
<p>In this second example, we aim to predict antimicrobial resistance
|
||||||
|
(AMR) trends over time using <code>tidymodels</code>. We will model
|
||||||
|
resistance to three antibiotics (amoxicillin <code>AMX</code>,
|
||||||
|
amoxicillin-clavulanic acid <code>AMC</code>, and ciprofloxacin
|
||||||
|
<code>CIP</code>), based on historical data grouped by year and hospital
|
||||||
|
ward.</p>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="objective-1">
|
||||||
|
<strong>Objective</strong><a class="anchor" aria-label="anchor" href="#objective-1"></a>
|
||||||
|
</h3>
|
||||||
|
<p>Our goal is to:</p>
|
||||||
|
<ol style="list-style-type: decimal">
|
||||||
|
<li>Prepare the dataset by aggregating resistance data over time.</li>
|
||||||
|
<li>Define a regression model to predict AMR trends.</li>
|
||||||
|
<li>Use <code>tidymodels</code> to preprocess, train, and evaluate the
|
||||||
|
model.</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="data-preparation-1">
|
||||||
|
<strong>Data Preparation</strong><a class="anchor" aria-label="anchor" href="#data-preparation-1"></a>
|
||||||
|
</h3>
|
||||||
|
<p>We start by transforming the <code>example_isolates</code> dataset
|
||||||
|
into a structured time-series format.</p>
|
||||||
|
<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Load required libraries</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/AMR/">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://tidymodels.tidymodels.org" class="external-link">tidymodels</a></span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Transform dataset</span></span>
|
||||||
|
<span><span class="va">data_time</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="../reference/top_n_microorganisms.html">top_n_microorganisms</a></span><span class="op">(</span>n <span class="op">=</span> <span class="fl">10</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"># Filter on the top #10 species</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>year <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/integer.html" class="external-link">as.integer</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/format.html" class="external-link">format</a></span><span class="op">(</span><span class="va">date</span>, <span class="st">"%Y"</span><span class="op">)</span><span class="op">)</span>, <span class="co"># Extract year from date</span></span>
|
||||||
|
<span> gramstain <span class="op">=</span> <span class="fu"><a href="../reference/mo_property.html">mo_gramstain</a></span><span class="op">(</span><span class="va">mo</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 class="co"># Get taxonomic names</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">year</span>, <span class="va">gramstain</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/summarise.html" class="external-link">summarise</a></span><span class="op">(</span><span class="fu"><a href="https://dplyr.tidyverse.org/reference/across.html" class="external-link">across</a></span><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="va">AMX</span>, <span class="va">AMC</span>, <span class="va">CIP</span><span class="op">)</span>, </span>
|
||||||
|
<span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu"><a href="../reference/proportion.html">resistance</a></span><span class="op">(</span><span class="va">x</span>, minimum <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span>
|
||||||
|
<span> .names <span class="op">=</span> <span class="st">"res_{.col}"</span><span class="op">)</span>, </span>
|
||||||
|
<span> .groups <span class="op">=</span> <span class="st">"drop"</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/filter.html" class="external-link">filter</a></span><span class="op">(</span><span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/NA.html" class="external-link">is.na</a></span><span class="op">(</span><span class="va">res_AMX</span><span class="op">)</span> <span class="op">&</span> <span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/NA.html" class="external-link">is.na</a></span><span class="op">(</span><span class="va">res_AMC</span><span class="op">)</span> <span class="op">&</span> <span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/NA.html" class="external-link">is.na</a></span><span class="op">(</span><span class="va">res_CIP</span><span class="op">)</span><span class="op">)</span> <span class="co"># Drop missing values</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #0000BB;">ℹ Using column '</span><span style="color: #0000BB; font-weight: bold;">mo</span><span style="color: #0000BB;">' as input for </span><span style="color: #0000BB; background-color: #EEEEEE;">col_mo</span><span style="color: #0000BB;">.</span></span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">data_time</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 32 × 5</span></span></span>
|
||||||
|
<span><span class="co">#> year gramstain res_AMX res_AMC res_CIP</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><int></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></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 1</span> <span style="text-decoration: underline;">2</span>002 Gram-negative 1 0.105 0.060<span style="text-decoration: underline;">6</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 2</span> <span style="text-decoration: underline;">2</span>002 Gram-positive 0.838 0.182 0.162 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 3</span> <span style="text-decoration: underline;">2</span>003 Gram-negative 1 0.071<span style="text-decoration: underline;">4</span> 0 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 4</span> <span style="text-decoration: underline;">2</span>003 Gram-positive 0.714 0.244 0.154 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 5</span> <span style="text-decoration: underline;">2</span>004 Gram-negative 0.464 0.093<span style="text-decoration: underline;">8</span> 0 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 6</span> <span style="text-decoration: underline;">2</span>004 Gram-positive 0.849 0.299 0.244 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 7</span> <span style="text-decoration: underline;">2</span>005 Gram-negative 0.412 0.132 0.058<span style="text-decoration: underline;">8</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 8</span> <span style="text-decoration: underline;">2</span>005 Gram-positive 0.882 0.382 0.154 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;"> 9</span> <span style="text-decoration: underline;">2</span>006 Gram-negative 0.379 0 0.1 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">10</span> <span style="text-decoration: underline;">2</span>006 Gram-positive 0.778 0.333 0.353 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># ℹ 22 more rows</span></span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>mo_name(mo)</code>: Converts microbial codes into proper
|
||||||
|
species names.</li>
|
||||||
|
<li>
|
||||||
|
<code><a href="../reference/proportion.html">resistance()</a></code>: Converts AMR results into numeric values
|
||||||
|
(proportion of resistant isolates).</li>
|
||||||
|
<li>
|
||||||
|
<code>group_by(year, ward, species)</code>: Aggregates resistance
|
||||||
|
rates by year and ward.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="defining-the-workflow-1">
|
||||||
|
<strong>Defining the Workflow</strong><a class="anchor" aria-label="anchor" href="#defining-the-workflow-1"></a>
|
||||||
|
</h3>
|
||||||
|
<p>We now define the modeling workflow, which consists of a
|
||||||
|
preprocessing step, a model specification, and the fitting process.</p>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="preprocessing-with-a-recipe-1">1. Preprocessing with a Recipe<a class="anchor" aria-label="anchor" href="#preprocessing-with-a-recipe-1"></a>
|
||||||
|
</h4>
|
||||||
|
<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Define the recipe</span></span>
|
||||||
|
<span><span class="va">resistance_recipe_time</span> <span class="op"><-</span> <span class="fu">recipe</span><span class="op">(</span><span class="va">res_AMX</span> <span class="op">~</span> <span class="va">year</span> <span class="op">+</span> <span class="va">gramstain</span>, data <span class="op">=</span> <span class="va">data_time</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">step_dummy</span><span class="op">(</span><span class="va">gramstain</span>, one_hot <span class="op">=</span> <span class="cn">TRUE</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"># Convert categorical to numerical</span></span>
|
||||||
|
<span> <span class="fu">step_normalize</span><span class="op">(</span><span class="va">year</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"># Normalise year for better model performance</span></span>
|
||||||
|
<span> <span class="fu">step_nzv</span><span class="op">(</span><span class="fu">all_predictors</span><span class="op">(</span><span class="op">)</span><span class="op">)</span> <span class="co"># Remove near-zero variance predictors</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">resistance_recipe_time</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">──</span> <span style="font-weight: bold;">Recipe</span> <span style="color: #00BBBB;">──────────────────────────────────────────────────────────────────────</span></span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Inputs</span></span>
|
||||||
|
<span><span class="co">#> Number of variables by role</span></span>
|
||||||
|
<span><span class="co">#> outcome: 1</span></span>
|
||||||
|
<span><span class="co">#> predictor: 2</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Operations</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">•</span> Dummy variables from: <span style="color: #0000BB;">gramstain</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">•</span> Centering and scaling for: <span style="color: #0000BB;">year</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #00BBBB;">•</span> Sparse, unbalanced variable filter on: <span style="color: #0000BB;">all_predictors()</span></span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>step_dummy()</code>: Encodes categorical variables
|
||||||
|
(<code>ward</code>, <code>species</code>) as numerical indicators.</li>
|
||||||
|
<li>
|
||||||
|
<code>step_normalize()</code>: Normalises the <code>year</code>
|
||||||
|
variable.</li>
|
||||||
|
<li>
|
||||||
|
<code>step_nzv()</code>: Removes near-zero variance predictors.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="specifying-the-model-1">2. Specifying the Model<a class="anchor" aria-label="anchor" href="#specifying-the-model-1"></a>
|
||||||
|
</h4>
|
||||||
|
<p>We use a linear regression model to predict resistance trends.</p>
|
||||||
|
<div class="sourceCode" id="cb12"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Define the linear regression model</span></span>
|
||||||
|
<span><span class="va">lm_model</span> <span class="op"><-</span> <span class="fu">linear_reg</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="fu">set_engine</span><span class="op">(</span><span class="st">"lm"</span><span class="op">)</span> <span class="co"># Use linear regression</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">lm_model</span></span>
|
||||||
|
<span><span class="co">#> Linear Regression Model Specification (regression)</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> Computational engine: lm</span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>linear_reg()</code>: Defines a linear regression model.</li>
|
||||||
|
<li>
|
||||||
|
<code>set_engine("lm")</code>: Uses R’s built-in linear regression
|
||||||
|
engine.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="building-the-workflow-1">3. Building the Workflow<a class="anchor" aria-label="anchor" href="#building-the-workflow-1"></a>
|
||||||
|
</h4>
|
||||||
|
<p>We combine the preprocessing recipe and model into a workflow.</p>
|
||||||
|
<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Create workflow</span></span>
|
||||||
|
<span><span class="va">resistance_workflow_time</span> <span class="op"><-</span> <span class="fu">workflow</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="fu">add_recipe</span><span class="op">(</span><span class="va">resistance_recipe_time</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">add_model</span><span class="op">(</span><span class="va">lm_model</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">resistance_workflow_time</span></span>
|
||||||
|
<span><span class="co">#> ══ Workflow ════════════════════════════════════════════════════════════════════</span></span>
|
||||||
|
<span><span class="co">#> <span style="font-style: italic;">Preprocessor:</span> Recipe</span></span>
|
||||||
|
<span><span class="co">#> <span style="font-style: italic;">Model:</span> linear_reg()</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Preprocessor ────────────────────────────────────────────────────────────────</span></span>
|
||||||
|
<span><span class="co">#> 3 Recipe Steps</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> • step_dummy()</span></span>
|
||||||
|
<span><span class="co">#> • step_normalize()</span></span>
|
||||||
|
<span><span class="co">#> • step_nzv()</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> ── Model ───────────────────────────────────────────────────────────────────────</span></span>
|
||||||
|
<span><span class="co">#> Linear Regression Model Specification (regression)</span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> Computational engine: lm</span></span></code></pre></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="training-and-evaluating-the-model-1">
|
||||||
|
<strong>Training and Evaluating the Model</strong><a class="anchor" aria-label="anchor" href="#training-and-evaluating-the-model-1"></a>
|
||||||
|
</h3>
|
||||||
|
<p>We split the data into training and testing sets, fit the model, and
|
||||||
|
evaluate performance.</p>
|
||||||
|
<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># Split the data</span></span>
|
||||||
|
<span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">123</span><span class="op">)</span></span>
|
||||||
|
<span><span class="va">data_split_time</span> <span class="op"><-</span> <span class="fu">initial_split</span><span class="op">(</span><span class="va">data_time</span>, prop <span class="op">=</span> <span class="fl">0.8</span><span class="op">)</span></span>
|
||||||
|
<span><span class="va">train_time</span> <span class="op"><-</span> <span class="fu">training</span><span class="op">(</span><span class="va">data_split_time</span><span class="op">)</span></span>
|
||||||
|
<span><span class="va">test_time</span> <span class="op"><-</span> <span class="fu">testing</span><span class="op">(</span><span class="va">data_split_time</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Train the model</span></span>
|
||||||
|
<span><span class="va">fitted_workflow_time</span> <span class="op"><-</span> <span class="va">resistance_workflow_time</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu">fit</span><span class="op">(</span><span class="va">train_time</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Make predictions</span></span>
|
||||||
|
<span><span class="va">predictions_time</span> <span class="op"><-</span> <span class="va">fitted_workflow_time</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://rdrr.io/r/stats/predict.html" class="external-link">predict</a></span><span class="op">(</span><span class="va">test_time</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/bind_cols.html" class="external-link">bind_cols</a></span><span class="op">(</span><span class="va">test_time</span><span class="op">)</span> </span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Evaluate model</span></span>
|
||||||
|
<span><span class="va">metrics_time</span> <span class="op"><-</span> <span class="va">predictions_time</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||||
|
<span> <span class="fu">metrics</span><span class="op">(</span>truth <span class="op">=</span> <span class="va">res_AMX</span>, estimate <span class="op">=</span> <span class="va">.pred</span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="va">metrics_time</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #949494;"># A tibble: 3 × 3</span></span></span>
|
||||||
|
<span><span class="co">#> .metric .estimator .estimate</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></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> rmse standard 0.077<span style="text-decoration: underline;">4</span></span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> rsq standard 0.711 </span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #BCBCBC;">3</span> mae standard 0.070<span style="text-decoration: underline;">4</span></span></span></code></pre></div>
|
||||||
|
<p><strong>Explanation:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<code>initial_split()</code>: Splits data into training and testing
|
||||||
|
sets.</li>
|
||||||
|
<li>
|
||||||
|
<code>fit()</code>: Trains the workflow.</li>
|
||||||
|
<li>
|
||||||
|
<code><a href="https://rdrr.io/r/stats/predict.html" class="external-link">predict()</a></code>: Generates resistance predictions.</li>
|
||||||
|
<li>
|
||||||
|
<code>metrics()</code>: Evaluates model performance.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="visualising-predictions">
|
||||||
|
<strong>Visualising Predictions</strong><a class="anchor" aria-label="anchor" href="#visualising-predictions"></a>
|
||||||
|
</h3>
|
||||||
|
<p>We plot resistance trends over time for amoxicillin.</p>
|
||||||
|
<div class="sourceCode" id="cb15"><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://ggplot2.tidyverse.org" class="external-link">ggplot2</a></span><span class="op">)</span></span>
|
||||||
|
<span></span>
|
||||||
|
<span><span class="co"># Plot actual vs predicted resistance over time</span></span>
|
||||||
|
<span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="va">predictions_time</span>, <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>x <span class="op">=</span> <span class="va">year</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_point.html" class="external-link">geom_point</a></span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>y <span class="op">=</span> <span class="va">res_AMX</span>, color <span class="op">=</span> <span class="st">"Actual"</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_path.html" class="external-link">geom_line</a></span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>y <span class="op">=</span> <span class="va">.pred</span>, color <span class="op">=</span> <span class="st">"Predicted"</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<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">"Predicted vs Actual AMX Resistance Over Time"</span>,</span>
|
||||||
|
<span> x <span class="op">=</span> <span class="st">"Year"</span>,</span>
|
||||||
|
<span> y <span class="op">=</span> <span class="st">"Resistance Proportion"</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggtheme.html" class="external-link">theme_minimal</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="AMR_with_tidymodels_files/figure-html/unnamed-chunk-14-1.png" width="720"></p>
|
||||||
|
<p>Additionally, we can visualise resistance trends in
|
||||||
|
<code>ggplot2</code> and directly add linear models there:</p>
|
||||||
|
<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="va">data_time</span>, <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>x <span class="op">=</span> <span class="va">year</span>, y <span class="op">=</span> <span class="va">res_AMX</span>, color <span class="op">=</span> <span class="va">gramstain</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_path.html" class="external-link">geom_line</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<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">"AMX Resistance Trends"</span>,</span>
|
||||||
|
<span> x <span class="op">=</span> <span class="st">"Year"</span>,</span>
|
||||||
|
<span> y <span class="op">=</span> <span class="st">"Resistance Proportion"</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<span> <span class="co"># add a linear model directly in ggplot2:</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_smooth.html" class="external-link">geom_smooth</a></span><span class="op">(</span>method <span class="op">=</span> <span class="st">"lm"</span>,</span>
|
||||||
|
<span> formula <span class="op">=</span> <span class="va">y</span> <span class="op">~</span> <span class="va">x</span>,</span>
|
||||||
|
<span> alpha <span class="op">=</span> <span class="fl">0.25</span><span class="op">)</span> <span class="op">+</span></span>
|
||||||
|
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggtheme.html" class="external-link">theme_minimal</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><img src="AMR_with_tidymodels_files/figure-html/unnamed-chunk-15-1.png" width="720"></p>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="conclusion-1">
|
||||||
|
<strong>Conclusion</strong><a class="anchor" aria-label="anchor" href="#conclusion-1"></a>
|
||||||
|
</h3>
|
||||||
|
<p>In this example, we demonstrated how to analyze AMR trends over time
|
||||||
|
using <code>tidymodels</code>. By aggregating resistance rates by year
|
||||||
|
and hospital ward, we built a predictive model to track changes in
|
||||||
|
resistance to amoxicillin (<code>AMX</code>), amoxicillin-clavulanic
|
||||||
|
acid (<code>AMC</code>), and ciprofloxacin (<code>CIP</code>).</p>
|
||||||
|
<p>This method can be extended to other antibiotics and resistance
|
||||||
|
patterns, providing valuable insights into AMR dynamics in healthcare
|
||||||
|
settings.</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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,338 @@
|
|||||||
|
<!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>How to apply EUCAST rules • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
|
||||||
|
<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.1/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.9/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="How to 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="">2.1.1.9234</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="../articles/MDR.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>How to 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/eucast_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/eucast_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: #FFAFAF;"> 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/eucast_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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,407 @@
|
|||||||
|
<!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>How to determine multi-drug resistance (MDR) • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
|
||||||
|
<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.1/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.9/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="How to determine multi-drug resistance (MDR)">
|
||||||
|
<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="">2.1.1.9234</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="../articles/MDR.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>How to determine multi-drug resistance (MDR)</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/MDR.Rmd" class="external-link"><code>vignettes/MDR.Rmd</code></a></small>
|
||||||
|
<div class="d-none name"><code>MDR.Rmd</code></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>With the function <code><a href="../reference/mdro.html">mdro()</a></code>, you can determine which
|
||||||
|
micro-organisms are multi-drug resistant organisms (MDRO).</p>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="type-of-input">Type of input<a class="anchor" aria-label="anchor" href="#type-of-input"></a>
|
||||||
|
</h3>
|
||||||
|
<p>The <code><a href="../reference/mdro.html">mdro()</a></code> function takes a data set as input, such as a
|
||||||
|
regular <code>data.frame</code>. It tries to automatically determine the
|
||||||
|
right columns for info about your isolates, such as the name of the
|
||||||
|
species and all columns with results of antimicrobial agents. See the
|
||||||
|
help page for more info about how to set the right settings for your
|
||||||
|
data with the command <code><a href="../reference/mdro.html">?mdro</a></code>.</p>
|
||||||
|
<p>For WHONET data (and most other data), all settings are automatically
|
||||||
|
set correctly.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="guidelines">Guidelines<a class="anchor" aria-label="anchor" href="#guidelines"></a>
|
||||||
|
</h3>
|
||||||
|
<p>The <code><a href="../reference/mdro.html">mdro()</a></code> function support multiple guidelines. You can
|
||||||
|
select a guideline with the <code>guideline</code> parameter. Currently
|
||||||
|
supported guidelines are (case-insensitive):</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<p><code>guideline = "CMI2012"</code> (default)</p>
|
||||||
|
<p>Magiorakos AP, Srinivasan A <em>et al.</em> “Multidrug-resistant,
|
||||||
|
extensively drug-resistant and pandrug-resistant bacteria: an
|
||||||
|
international expert proposal for interim standard definitions for
|
||||||
|
acquired resistance.” Clinical Microbiology and Infection (2012) (<a href="https://www.clinicalmicrobiologyandinfection.com/article/S1198-743X(14)61632-3/fulltext" class="external-link">link</a>)</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><code>guideline = "EUCAST3.2"</code> (or simply
|
||||||
|
<code>guideline = "EUCAST"</code>)</p>
|
||||||
|
<p>The European international guideline - EUCAST Expert Rules Version
|
||||||
|
3.2 “Intrinsic Resistance and Unusual Phenotypes” (<a href="https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/2020/Intrinsic_Resistance_and_Unusual_Phenotypes_Tables_v3.2_20200225.pdf" class="external-link">link</a>)</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><code>guideline = "EUCAST3.1"</code></p>
|
||||||
|
<p>The European international guideline - EUCAST Expert Rules Version
|
||||||
|
3.1 “Intrinsic Resistance and Exceptional Phenotypes Tables” (<a href="https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/Expert_rules_intrinsic_exceptional_V3.1.pdf" class="external-link">link</a>)</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><code>guideline = "TB"</code></p>
|
||||||
|
<p>The international guideline for multi-drug resistant tuberculosis -
|
||||||
|
World Health Organization “Companion handbook to the WHO guidelines for
|
||||||
|
the programmatic management of drug-resistant tuberculosis” (<a href="https://www.who.int/tb/publications/pmdt_companionhandbook/en/" class="external-link">link</a>)</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><code>guideline = "MRGN"</code></p>
|
||||||
|
<p>The German national guideline - Mueller <em>et al.</em> (2015)
|
||||||
|
Antimicrobial Resistance and Infection Control 4:7. DOI:
|
||||||
|
10.1186/s13756-015-0047-6</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><code>guideline = "BRMO"</code></p>
|
||||||
|
<p>The Dutch national guideline - Rijksinstituut voor Volksgezondheid en
|
||||||
|
Milieu “WIP-richtlijn BRMO (Bijzonder Resistente Micro-Organismen)
|
||||||
|
(ZKH)” (<a href="https://www.rivm.nl/wip-richtlijn-brmo-bijzonder-resistente-micro-organismen-zkh" class="external-link">link</a>)</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>Please suggest your own (country-specific) guidelines by letting us
|
||||||
|
know: <a href="https://github.com/msberends/AMR/issues/new" class="external-link uri">https://github.com/msberends/AMR/issues/new</a>.</p>
|
||||||
|
<div class="section level4">
|
||||||
|
<h4 id="custom-guidelines">Custom Guidelines<a class="anchor" aria-label="anchor" href="#custom-guidelines"></a>
|
||||||
|
</h4>
|
||||||
|
<p>You can also use your own custom guideline. Custom guidelines can be
|
||||||
|
set with the <code><a href="../reference/mdro.html">custom_mdro_guideline()</a></code> function. This is of
|
||||||
|
great importance if you have custom rules to determine MDROs in your
|
||||||
|
hospital, e.g., rules that are dependent on ward, state of contact
|
||||||
|
isolation or other variables in your data.</p>
|
||||||
|
<p>If you are familiar with <code><a href="https://dplyr.tidyverse.org/reference/case_when.html" class="external-link">case_when()</a></code> of the
|
||||||
|
<code>dplyr</code> package, you will recognise the input method to set
|
||||||
|
your own rules. Rules must be set using what R considers to be the
|
||||||
|
‘formula notation’:</p>
|
||||||
|
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">custom</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mdro.html">custom_mdro_guideline</a></span><span class="op">(</span></span>
|
||||||
|
<span> <span class="va">CIP</span> <span class="op">==</span> <span class="st">"R"</span> <span class="op">&</span> <span class="va">age</span> <span class="op">></span> <span class="fl">60</span> <span class="op">~</span> <span class="st">"Elderly Type A"</span>,</span>
|
||||||
|
<span> <span class="va">ERY</span> <span class="op">==</span> <span class="st">"R"</span> <span class="op">&</span> <span class="va">age</span> <span class="op">></span> <span class="fl">60</span> <span class="op">~</span> <span class="st">"Elderly Type B"</span></span>
|
||||||
|
<span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p>If a row/an isolate matches the first rule, the value after the first
|
||||||
|
<code>~</code> (in this case <em>‘Elderly Type A’</em>) will be set as
|
||||||
|
MDRO value. Otherwise, the second rule will be tried and so on. The
|
||||||
|
maximum number of rules is unlimited.</p>
|
||||||
|
<p>You can print the rules set in the console for an overview. Colours
|
||||||
|
will help reading it if your console supports colours.</p>
|
||||||
|
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">custom</span></span>
|
||||||
|
<span><span class="co">#> A set of custom MDRO rules:</span></span>
|
||||||
|
<span><span class="co">#> 1. <span style="font-weight: bold;">If </span><span style="color: #0000BB;">CIP</span><span style="color: #080808;"> is </span><span style="color: #080808; background-color: #FFAFAF;"> R </span><span style="color: #080808; font-weight: bold;"> and </span><span style="color: #0000BB;">age</span><span style="color: #080808;"> is higher than </span><span style="color: #0000BB;">60</span><span style="font-weight: bold;"> then: </span><span style="color: #BB0000;">Elderly Type A</span></span></span>
|
||||||
|
<span><span class="co">#> 2. <span style="font-weight: bold;">If </span><span style="color: #0000BB;">ERY</span><span style="color: #080808;"> is </span><span style="color: #080808; background-color: #FFAFAF;"> R </span><span style="color: #080808; font-weight: bold;"> and </span><span style="color: #0000BB;">age</span><span style="color: #080808;"> is higher than </span><span style="color: #0000BB;">60</span><span style="font-weight: bold;"> then: </span><span style="color: #BB0000;">Elderly Type B</span></span></span>
|
||||||
|
<span><span class="co">#> 3. <span style="font-weight: bold;">Otherwise: </span><span style="color: #BB0000;">Negative</span></span></span>
|
||||||
|
<span><span class="co">#> </span></span>
|
||||||
|
<span><span class="co">#> Unmatched rows will return <span style="color: #BB0000;">NA</span>.</span></span>
|
||||||
|
<span><span class="co">#> Results will be of class 'factor', with ordered levels: Negative < Elderly Type A < Elderly Type B</span></span></code></pre></div>
|
||||||
|
<p>The outcome of the function can be used for the
|
||||||
|
<code>guideline</code> argument in the <code><a href="../reference/mdro.html">mdro()</a></code> function:</p>
|
||||||
|
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">x</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mdro.html">mdro</a></span><span class="op">(</span><span class="va">example_isolates</span>, guideline <span class="op">=</span> <span class="va">custom</span><span class="op">)</span></span>
|
||||||
|
<span><span class="fu"><a href="https://rdrr.io/r/base/table.html" class="external-link">table</a></span><span class="op">(</span><span class="va">x</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> x</span></span>
|
||||||
|
<span><span class="co">#> Negative Elderly Type A Elderly Type B </span></span>
|
||||||
|
<span><span class="co">#> 1070 198 732</span></span></code></pre></div>
|
||||||
|
<p>The rules set (the <code>custom</code> object in this case) could be
|
||||||
|
exported to a shared file location using <code><a href="https://rdrr.io/r/base/readRDS.html" class="external-link">saveRDS()</a></code> if you
|
||||||
|
collaborate with multiple users. The custom rules set could then be
|
||||||
|
imported using <code><a href="https://rdrr.io/r/base/readRDS.html" class="external-link">readRDS()</a></code>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section level3">
|
||||||
|
<h3 id="examples">Examples<a class="anchor" aria-label="anchor" href="#examples"></a>
|
||||||
|
</h3>
|
||||||
|
<p>The <code><a href="../reference/mdro.html">mdro()</a></code> function always returns an ordered
|
||||||
|
<code>factor</code> for predefined guidelines. For example, the output
|
||||||
|
of the default guideline by Magiorakos <em>et al.</em> returns a
|
||||||
|
<code>factor</code> with levels ‘Negative’, ‘MDR’, ‘XDR’ or ‘PDR’ in
|
||||||
|
that order.</p>
|
||||||
|
<p>The next example uses the <code>example_isolates</code> data set.
|
||||||
|
This is a data set included with this package and contains full
|
||||||
|
antibiograms of 2,000 microbial isolates. It reflects reality and can be
|
||||||
|
used to practise AMR data analysis. If we test the MDR/XDR/PDR guideline
|
||||||
|
on this data set, we get:</p>
|
||||||
|
<div class="sourceCode" id="cb4"><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"># to support pipes: %>%</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>
|
||||||
|
<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><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="../reference/mdro.html">mdro</a></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="fu"><a href="https://msberends.github.io/cleaner/reference/freq.html" class="external-link">freq</a></span><span class="op">(</span><span class="op">)</span> <span class="co"># show frequency table of the result</span></span>
|
||||||
|
<span><span class="co">#> Warning: in <span style="background-color: #EEEEEE;">mdro()</span>: NA introduced for isolates where the available percentage of</span></span>
|
||||||
|
<span><span class="co">#> antimicrobial classes was below 50% (set with <span style="background-color: #EEEEEE;">pct_required_classes</span>)</span></span></code></pre></div>
|
||||||
|
<p><strong>Frequency table</strong></p>
|
||||||
|
<p>Class: factor > ordered (numeric)<br>
|
||||||
|
Length: 2,000<br>
|
||||||
|
Levels: 4: Negative < Multi-drug-resistant (MDR) < Extensively
|
||||||
|
drug-resistant …<br>
|
||||||
|
Available: 1,745 (87.25%, NA: 255 = 12.75%)<br>
|
||||||
|
Unique: 2</p>
|
||||||
|
<table style="width:100%;" class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="4%">
|
||||||
|
<col width="38%">
|
||||||
|
<col width="9%">
|
||||||
|
<col width="12%">
|
||||||
|
<col width="16%">
|
||||||
|
<col width="19%">
|
||||||
|
</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">Negative</td>
|
||||||
|
<td align="right">1617</td>
|
||||||
|
<td align="right">92.66%</td>
|
||||||
|
<td align="right">1617</td>
|
||||||
|
<td align="right">92.66%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">2</td>
|
||||||
|
<td align="left">Multi-drug-resistant (MDR)</td>
|
||||||
|
<td align="right">128</td>
|
||||||
|
<td align="right">7.34%</td>
|
||||||
|
<td align="right">1745</td>
|
||||||
|
<td align="right">100.00%</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>For another example, I will create a data set to determine multi-drug
|
||||||
|
resistant TB:</p>
|
||||||
|
<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="co"># random_sir() is a helper function to generate</span></span>
|
||||||
|
<span><span class="co"># a random vector with values S, I and R</span></span>
|
||||||
|
<span><span class="va">my_TB_data</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span>
|
||||||
|
<span> rifampicin <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> isoniazid <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> gatifloxacin <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> ethambutol <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> pyrazinamide <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> moxifloxacin <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> kanamycin <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span></span>
|
||||||
|
<span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p>Because all column names are automatically verified for valid drug
|
||||||
|
names or codes, this would have worked exactly the same way:</p>
|
||||||
|
<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">my_TB_data</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span></span>
|
||||||
|
<span> RIF <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> INH <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> GAT <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> ETH <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> PZA <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> MFX <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span>,</span>
|
||||||
|
<span> KAN <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_sir</a></span><span class="op">(</span><span class="fl">5000</span><span class="op">)</span></span>
|
||||||
|
<span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p>The data set now looks like this:</p>
|
||||||
|
<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><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">my_TB_data</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> rifampicin isoniazid gatifloxacin ethambutol pyrazinamide moxifloxacin</span></span>
|
||||||
|
<span><span class="co">#> 1 I R S S S S</span></span>
|
||||||
|
<span><span class="co">#> 2 S S I R R S</span></span>
|
||||||
|
<span><span class="co">#> 3 R I I I R I</span></span>
|
||||||
|
<span><span class="co">#> 4 I S S S S S</span></span>
|
||||||
|
<span><span class="co">#> 5 I I I S I S</span></span>
|
||||||
|
<span><span class="co">#> 6 R S R S I I</span></span>
|
||||||
|
<span><span class="co">#> kanamycin</span></span>
|
||||||
|
<span><span class="co">#> 1 R</span></span>
|
||||||
|
<span><span class="co">#> 2 I</span></span>
|
||||||
|
<span><span class="co">#> 3 S</span></span>
|
||||||
|
<span><span class="co">#> 4 I</span></span>
|
||||||
|
<span><span class="co">#> 5 I</span></span>
|
||||||
|
<span><span class="co">#> 6 I</span></span></code></pre></div>
|
||||||
|
<p>We can now add the interpretation of MDR-TB to our data set. You can
|
||||||
|
use:</p>
|
||||||
|
<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="fu"><a href="../reference/mdro.html">mdro</a></span><span class="op">(</span><span class="va">my_TB_data</span>, guideline <span class="op">=</span> <span class="st">"TB"</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p>or its shortcut <code><a href="../reference/mdro.html">mdr_tb()</a></code>:</p>
|
||||||
|
<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><span><span class="va">my_TB_data</span><span class="op">$</span><span class="va">mdr</span> <span class="op"><-</span> <span class="fu"><a href="../reference/mdro.html">mdr_tb</a></span><span class="op">(</span><span class="va">my_TB_data</span><span class="op">)</span></span>
|
||||||
|
<span><span class="co">#> <span style="color: #0000BB;">ℹ No column found as input for </span><span style="color: #0000BB; background-color: #EEEEEE;">col_mo</span><span style="color: #0000BB;">, </span><span style="color: #0000BB; font-weight: bold;">assuming all rows contain</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB; font-weight: bold;">#> </span><span style="color: #0000BB; font-weight: bold; font-style: italic;">Mycobacterium tuberculosis</span><span style="color: #0000BB; font-weight: bold;">.</span></span></span></code></pre></div>
|
||||||
|
<p>Create a frequency table of the results:</p>
|
||||||
|
<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r">
|
||||||
|
<code class="sourceCode R"><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">my_TB_data</span><span class="op">$</span><span class="va">mdr</span><span class="op">)</span></span></code></pre></div>
|
||||||
|
<p><strong>Frequency table</strong></p>
|
||||||
|
<p>Class: factor > ordered (numeric)<br>
|
||||||
|
Length: 5,000<br>
|
||||||
|
Levels: 5: Negative < Mono-resistant < Poly-resistant <
|
||||||
|
Multi-drug-resistant <…<br>
|
||||||
|
Available: 5,000 (100%, NA: 0 = 0%)<br>
|
||||||
|
Unique: 5</p>
|
||||||
|
<table style="width:100%;" class="table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="4%">
|
||||||
|
<col width="38%">
|
||||||
|
<col width="9%">
|
||||||
|
<col width="12%">
|
||||||
|
<col width="16%">
|
||||||
|
<col width="19%">
|
||||||
|
</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">Mono-resistant</td>
|
||||||
|
<td align="right">3223</td>
|
||||||
|
<td align="right">64.46%</td>
|
||||||
|
<td align="right">3223</td>
|
||||||
|
<td align="right">64.46%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">2</td>
|
||||||
|
<td align="left">Negative</td>
|
||||||
|
<td align="right">967</td>
|
||||||
|
<td align="right">19.34%</td>
|
||||||
|
<td align="right">4190</td>
|
||||||
|
<td align="right">83.80%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">3</td>
|
||||||
|
<td align="left">Multi-drug-resistant</td>
|
||||||
|
<td align="right">454</td>
|
||||||
|
<td align="right">9.08%</td>
|
||||||
|
<td align="right">4644</td>
|
||||||
|
<td align="right">92.88%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td align="left">4</td>
|
||||||
|
<td align="left">Poly-resistant</td>
|
||||||
|
<td align="right">245</td>
|
||||||
|
<td align="right">4.90%</td>
|
||||||
|
<td align="right">4889</td>
|
||||||
|
<td align="right">97.78%</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td align="left">5</td>
|
||||||
|
<td align="left">Extensively drug-resistant</td>
|
||||||
|
<td align="right">111</td>
|
||||||
|
<td align="right">2.22%</td>
|
||||||
|
<td align="right">5000</td>
|
||||||
|
<td align="right">100.00%</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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,249 @@
|
|||||||
|
<!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>How to conduct principal component analysis (PCA) for AMR • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
|
||||||
|
<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.1/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.9/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="How to 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="">2.1.1.9234</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="../articles/MDR.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>How to 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://msberends.github.io/AMR/">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>
|
||||||
|
<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: #0000BB;">ℹ Columns selected for PCA: "</span><span style="color: #0000BB; font-weight: bold;">AMC</span><span style="color: #0000BB;">", "</span><span style="color: #0000BB; font-weight: bold;">CAZ</span><span style="color: #0000BB;">", "</span><span style="color: #0000BB; font-weight: bold;">CTX</span><span style="color: #0000BB;">", "</span><span style="color: #0000BB; font-weight: bold;">CXM</span><span style="color: #0000BB;">", "</span><span style="color: #0000BB; font-weight: bold;">GEN</span><span style="color: #0000BB;">", "</span><span style="color: #0000BB; font-weight: bold;">SXT</span><span style="color: #0000BB;">",</span></span></span>
|
||||||
|
<span><span class="co"><span style="color: #0000BB;">#> "</span><span style="color: #0000BB; font-weight: bold;">TMP</span><span style="color: #0000BB;">", and "</span><span style="color: #0000BB; font-weight: bold;">TOB</span><span style="color: #0000BB;">". Total observations available: 7.</span></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" 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" 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" 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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 93 KiB |
@@ -0,0 +1,339 @@
|
|||||||
|
<!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>How to work with WHONET data • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
|
||||||
|
<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.1/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.9/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="How to 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="">2.1.1.9234</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="../articles/MDR.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>How to 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://msberends.github.io/AMR/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://msberends.github.io/AMR/">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://msberends.github.io/AMR/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></code></pre></div>
|
||||||
|
<p><strong>Frequency table</strong></p>
|
||||||
|
<p>Class: factor > ordered > sir (numeric)<br>
|
||||||
|
Length: 500<br>
|
||||||
|
Levels: 5: S < SDD < I < R < NI<br>
|
||||||
|
Available: 481 (96.2%, NA: 19 = 3.8%)<br>
|
||||||
|
Unique: 3</p>
|
||||||
|
<p>Drug: Amoxicillin/clavulanic acid (AMC, J01CR02)<br>
|
||||||
|
Drug group: Beta-lactams/penicillins<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" 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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 61 KiB |
@@ -0,0 +1,91 @@
|
|||||||
|
<!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="16x16" href="../favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png"><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png"><link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png"><link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png"><link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png"><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.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.9/font.css" rel="stylesheet"><link href="../deps/Fira_Code-0.4.9/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://msberends.github.io/AMR/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="">2.1.1.9234</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="../articles/MDR.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">How to conduct AMR data analysis</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="datasets.html">Data sets for download / own use</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="EUCAST.html">How to apply EUCAST rules</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="MDR.html">How to determine multi-drug resistance (MDR)</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="PCA.html">How to conduct principal component analysis (PCA) for AMR</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="welcome_to_AMR.html">Welcome to the `AMR` package</a></dt>
|
||||||
|
<dd>
|
||||||
|
</dd><dt><a href="WHONET.html">How to work with WHONET data</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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
@@ -0,0 +1,208 @@
|
|||||||
|
<!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>Welcome to the `AMR` package • AMR (for R)</title>
|
||||||
|
<!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
|
||||||
|
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
|
||||||
|
<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.1/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.9/font.css" rel="stylesheet">
|
||||||
|
<link href="../deps/Fira_Code-0.4.9/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="Welcome to the `AMR` package">
|
||||||
|
<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="">2.1.1.9234</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="../articles/MDR.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>Welcome to the `AMR` package</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/welcome_to_AMR.Rmd" class="external-link"><code>vignettes/welcome_to_AMR.Rmd</code></a></small>
|
||||||
|
<div class="d-none name"><code>welcome_to_AMR.Rmd</code></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Note: to keep the package size as small as possible, we only include
|
||||||
|
this vignette on CRAN. You can read more vignettes on our website about
|
||||||
|
how to conduct AMR data analysis, determine MDROs, find explanation of
|
||||||
|
EUCAST and CLSI breakpoints, and much more: <a href="https://msberends.github.io/AMR/articles/" class="uri">https://msberends.github.io/AMR/articles/</a>.</p>
|
||||||
|
<hr>
|
||||||
|
<p>The <code>AMR</code> package is a <a href="https://msberends.github.io/AMR/#copyright">free and
|
||||||
|
open-source</a> R package with <a href="https://en.wikipedia.org/wiki/Dependency_hell" class="external-link">zero
|
||||||
|
dependencies</a> to simplify the analysis and prediction of
|
||||||
|
Antimicrobial Resistance (AMR) and to work with microbial and
|
||||||
|
antimicrobial data and properties, by using evidence-based methods.
|
||||||
|
<strong>Our aim is to provide a standard</strong> for clean and
|
||||||
|
reproducible AMR data analysis, that can therefore empower
|
||||||
|
epidemiological analyses to continuously enable surveillance and
|
||||||
|
treatment evaluation in any setting. <a href="https://msberends.github.io/AMR/authors.html">Many different
|
||||||
|
researchers</a> from around the globe are continually helping us to make
|
||||||
|
this a successful and durable project!</p>
|
||||||
|
<p>This work was published in the Journal of Statistical Software
|
||||||
|
(Volume 104(3); <a href="https://doi.org/10.18637/jss.v104.i03" class="external-link">DOI
|
||||||
|
10.18637/jss.v104.i03</a>) and formed the basis of two PhD theses (<a href="https://doi.org/10.33612/diss.177417131" class="external-link">DOI
|
||||||
|
10.33612/diss.177417131</a> and <a href="https://doi.org/10.33612/diss.192486375" class="external-link">DOI
|
||||||
|
10.33612/diss.192486375</a>).</p>
|
||||||
|
<p>After installing this package, R knows ~79 000 distinct microbial
|
||||||
|
species and all ~620 antibiotic, antimycotic and antiviral drugs by name
|
||||||
|
and code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC and SNOMED
|
||||||
|
CT), and knows all about valid SIR and MIC values. The integral
|
||||||
|
breakpoint guidelines from CLSI and EUCAST are included from the last 10
|
||||||
|
years. It supports and can read any data format, including WHONET
|
||||||
|
data.</p>
|
||||||
|
<p>With the help of contributors from all corners of the world, the
|
||||||
|
<code>AMR</code> package is available in English, Czech, Chinese,
|
||||||
|
Danish, Dutch, Finnish, French, German, Greek, Italian, Japanese,
|
||||||
|
Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish,
|
||||||
|
Turkish, and Ukrainian. Antimicrobial drug (group) names and colloquial
|
||||||
|
microorganism names are provided in these languages.</p>
|
||||||
|
<p>This package is fully independent of any other R package and works on
|
||||||
|
Windows, macOS and Linux with all versions of R since R-3.0 (April
|
||||||
|
2013). <strong>It was designed to work in any setting, including those
|
||||||
|
with very limited resources</strong>. Since its first public release in
|
||||||
|
early 2018, this package has been downloaded from more than 175
|
||||||
|
countries.</p>
|
||||||
|
<p>This package can be used for:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Reference for the taxonomy of microorganisms, since the package
|
||||||
|
contains all microbial (sub)species from the List of Prokaryotic names
|
||||||
|
with Standing in Nomenclature (LPSN) and the Global Biodiversity
|
||||||
|
Information Facility (GBIF)</li>
|
||||||
|
<li>Interpreting raw MIC and disk diffusion values, based on the latest
|
||||||
|
CLSI or EUCAST guidelines</li>
|
||||||
|
<li>Retrieving antimicrobial drug names, doses and forms of
|
||||||
|
administration from clinical health care records</li>
|
||||||
|
<li>Determining first isolates to be used for AMR data analysis</li>
|
||||||
|
<li>Calculating antimicrobial resistance</li>
|
||||||
|
<li>Determining multi-drug resistance (MDR) / multi-drug resistant
|
||||||
|
organisms (MDRO)</li>
|
||||||
|
<li>Calculating (empirical) susceptibility of both mono therapy and
|
||||||
|
combination therapies</li>
|
||||||
|
<li>Predicting future antimicrobial resistance using regression
|
||||||
|
models</li>
|
||||||
|
<li>Getting properties for any microorganism (like Gram stain, species,
|
||||||
|
genus or family)</li>
|
||||||
|
<li>Getting properties for any antibiotic (like name, code of
|
||||||
|
EARS-Net/ATC/LOINC/PubChem, defined daily dose or trade name)</li>
|
||||||
|
<li>Plotting antimicrobial resistance</li>
|
||||||
|
<li>Applying EUCAST expert rules</li>
|
||||||
|
<li>Getting SNOMED codes of a microorganism, or getting properties of a
|
||||||
|
microorganism based on a SNOMED code</li>
|
||||||
|
<li>Getting LOINC codes of an antibiotic, or getting properties of an
|
||||||
|
antibiotic based on a LOINC code</li>
|
||||||
|
<li>Machine reading the EUCAST and CLSI guidelines from 2011-2020 to
|
||||||
|
translate MIC values and disk diffusion diameters to SIR</li>
|
||||||
|
<li>Principal component analysis for AMR</li>
|
||||||
|
</ul>
|
||||||
|
<p>All reference data sets (about microorganisms, antimicrobials, SIR
|
||||||
|
interpretation, EUCAST rules, etc.) in this <code>AMR</code> package are
|
||||||
|
publicly and freely available. We continually export our data sets to
|
||||||
|
formats for use in R, SPSS, Stata and Excel. We also supply flat files
|
||||||
|
that are machine-readable and suitable for input in any software
|
||||||
|
program, such as laboratory information systems. Please find <a href="https://msberends.github.io/AMR/articles/datasets.html">all
|
||||||
|
download links on our website</a>, which is automatically updated with
|
||||||
|
every code change.</p>
|
||||||
|
<p>This R package was created for both routine data analysis and
|
||||||
|
academic research at the Faculty of Medical Sciences of the <a href="https://www.rug.nl" class="external-link">University of Groningen</a>, in collaboration
|
||||||
|
with non-profit organisations <a href="https://www.certe.nl" class="external-link">Certe
|
||||||
|
Medical Diagnostics and Advice Foundation</a> and <a href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a>, and
|
||||||
|
is being <a href="https://msberends.github.io/AMR/news/">actively and
|
||||||
|
durably maintained</a> by two public healthcare organisations in the
|
||||||
|
Netherlands.</p>
|
||||||
|
<hr>
|
||||||
|
<p><small> This AMR package for R is free, open-source software and
|
||||||
|
licensed under the <a href="https://msberends.github.io/AMR/LICENSE-text.html">GNU General
|
||||||
|
Public License v2.0 (GPL-2)</a>. These requirements are consequently
|
||||||
|
legally binding: modifications must be released under the same license
|
||||||
|
when distributing the package, changes made to the code must be
|
||||||
|
documented, source code must be made available when the package is
|
||||||
|
distributed, and a copy of the license and copyright notice must be
|
||||||
|
included with the package. </small></p>
|
||||||
|
</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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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="16x16" href="favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png"><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="apple-touch-icon.png"><link rel="apple-touch-icon" type="image/png" sizes="120x120" href="apple-touch-icon-120x120.png"><link rel="apple-touch-icon" type="image/png" sizes="76x76" href="apple-touch-icon-76x76.png"><link rel="apple-touch-icon" type="image/png" sizes="60x60" href="apple-touch-icon-60x60.png"><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.1/bootstrap.min.css" rel="stylesheet"><script src="deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="deps/Lato-0.4.9/font.css" rel="stylesheet"><link href="deps/Fira_Code-0.4.9/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://msberends.github.io/AMR/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="">2.1.1.9234</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="articles/MDR.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.
|
||||||
|
</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.
|
||||||
|
</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 General Public License version 2.0 (GPL-2)</a>.<br>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.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pkgdown-footer-right">
|
||||||
|
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://github.com/msberends/AMR/raw/main/pkgdown/assets/logo_umcg.svg" style="max-width: 150px;"></a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
@@ -0,0 +1,54 @@
|
|||||||
|
/* 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;
|
||||||
|
}
|
||||||
|
/* 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;
|
||||||
|
}
|
||||||