From 195dfb4b919e1cdfb407982f66a92bfec0177a09 Mon Sep 17 00:00:00 2001 From: Matthijs Berends Date: Wed, 26 Feb 2025 13:27:20 +0100 Subject: [PATCH] (v2.1.1.9157) improved `as.ab()`, fixed knit_print of antibiogram --- DESCRIPTION | 4 +- NAMESPACE | 1 + NEWS.md | 2 +- PythonPackage/AMR/AMR.egg-info/PKG-INFO | 2 +- PythonPackage/AMR/AMR/__init__.py | 1 + PythonPackage/AMR/AMR/functions.py | 3 + PythonPackage/AMR/dist/amr-2.1.1.9156.tar.gz | Bin 10115 -> 0 bytes ...ny.whl => amr-2.1.1.9157-py3-none-any.whl} | Bin 10284 -> 10305 bytes PythonPackage/AMR/dist/amr-2.1.1.9157.tar.gz | Bin 0 -> 10129 bytes PythonPackage/AMR/setup.py | 2 +- R/ab.R | 79 ++++++++++++++++-- R/amr_selectors.R | 14 +--- R/antibiogram.R | 14 ++-- R/plotting.R | 4 +- ....txt => gpt_training_text_v2.1.1.9157.txt} | 13 +-- data-raw/wisca.xlsx | Bin 0 -> 10779 bytes data-raw/wisca_params.xlsx | Bin 0 -> 12872 bytes man/antimicrobial_selectors.Rd | 2 +- man/as.ab.Rd | 3 + vignettes/AMR_with_tidymodels.Rmd | 5 +- 20 files changed, 107 insertions(+), 42 deletions(-) delete mode 100644 PythonPackage/AMR/dist/amr-2.1.1.9156.tar.gz rename PythonPackage/AMR/dist/{AMR-2.1.1.9156-py3-none-any.whl => amr-2.1.1.9157-py3-none-any.whl} (57%) create mode 100644 PythonPackage/AMR/dist/amr-2.1.1.9157.tar.gz rename data-raw/{gpt_training_text_v2.1.1.9156.txt => gpt_training_text_v2.1.1.9157.txt} (99%) create mode 100644 data-raw/wisca.xlsx create mode 100644 data-raw/wisca_params.xlsx diff --git a/DESCRIPTION b/DESCRIPTION index 46f0fda36..54d7f5b90 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AMR -Version: 2.1.1.9156 -Date: 2025-02-23 +Version: 2.1.1.9157 +Date: 2025-02-26 Title: Antimicrobial Resistance Data Analysis Description: Functions to simplify and standardise antimicrobial resistance (AMR) data analysis and to work with microbial and antimicrobial properties by diff --git a/NAMESPACE b/NAMESPACE index fa2e38634..3886b0a6a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -140,6 +140,7 @@ export(ab_info) export(ab_loinc) export(ab_name) export(ab_property) +export(ab_reset_session) export(ab_selector) export(ab_synonyms) export(ab_tradenames) diff --git a/NEWS.md b/NEWS.md index ab955619a..c29a0da97 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# AMR 2.1.1.9156 +# AMR 2.1.1.9157 *(this beta version will eventually become v3.0. We're happy to reach a new major milestone soon, which will be all about the new One Health support! Install this beta using [the instructions here](https://msberends.github.io/AMR/#latest-development-version).)* diff --git a/PythonPackage/AMR/AMR.egg-info/PKG-INFO b/PythonPackage/AMR/AMR.egg-info/PKG-INFO index 8ae386eaf..3881d5d8e 100644 --- a/PythonPackage/AMR/AMR.egg-info/PKG-INFO +++ b/PythonPackage/AMR/AMR.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.2 Name: AMR -Version: 2.1.1.9156 +Version: 2.1.1.9157 Summary: A Python wrapper for the AMR R package Home-page: https://github.com/msberends/AMR Author: Matthijs Berends diff --git a/PythonPackage/AMR/AMR/__init__.py b/PythonPackage/AMR/AMR/__init__.py index 21e55385b..5463f134b 100644 --- a/PythonPackage/AMR/AMR/__init__.py +++ b/PythonPackage/AMR/AMR/__init__.py @@ -66,6 +66,7 @@ from .functions import administrable_iv from .functions import not_intrinsic_resistant from .functions import as_ab from .functions import is_ab +from .functions import ab_reset_session from .functions import as_av from .functions import is_av from .functions import as_disk diff --git a/PythonPackage/AMR/AMR/functions.py b/PythonPackage/AMR/AMR/functions.py index 6e91b0583..66898e22b 100644 --- a/PythonPackage/AMR/AMR/functions.py +++ b/PythonPackage/AMR/AMR/functions.py @@ -228,6 +228,9 @@ def as_ab(x, *args, **kwargs): def is_ab(x): """See our website of the R package for the manual: https://msberends.github.io/AMR/index.html""" return convert_to_python(amr_r.is_ab(x)) +def ab_reset_session(*args, **kwargs): + """See our website of the R package for the manual: https://msberends.github.io/AMR/index.html""" + return convert_to_python(amr_r.ab_reset_session(*args, **kwargs)) def as_av(x, *args, **kwargs): """See our website of the R package for the manual: https://msberends.github.io/AMR/index.html""" return convert_to_python(amr_r.as_av(x, *args, **kwargs)) diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9156.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9156.tar.gz deleted file mode 100644 index 1c47897e531dfa126dfc6d93dcb2604910c8e149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10115 zcmch7RZtwjwk_@icN^SYLLlhi9w4{|4U)k<4DJ>nxFtb@%OJsBg1c*iI}A1q^Kx$8 zkN1Aw-@Vnfs@GnZ;z|4Dnc44fgF0CTV=Hji){d;IT$Y|ryQCE|qGs+68Id<~+iKhKw1EiXQ& zF5!pevV=9TUon%ok?YBlJb3?@kqx){5jZdPG>qN`|3aMhl-xD45MSHS-MQ(OzF`y4 z{rZrA{$oor{dQbf%7YI42k3@6&(UYZC16vA9vam@bLCzuNljabHx$0e?EM)^Q4jBz zYau}7-3_Px;9o=}5AQu(u)M6%R6!r*5ex~+{mQEkjIeGxjS6i#VUBO84J)T7&WM@@ z#MldH88Pa(ENO6uSZhRRTUgS6{_+BT4U;+5#u$463*UhSR+(`kJZ+inyx7yz9PCfg@-j2;nUVq()Vqcv@gO z>#Qxfe8%)cAo+svwh2qIoU>&11m2c6{EfSjRVEP;yRF`S)Hufv0UjOkaHFUBvOlYy z*(7YmjU$5c`x3?<^)~8M0KW;!6%(hStSnhSqHo30r^N?Kg-FNKt&QH)G&a}?02!3b zsuYw&?l(r#{-jN(91OAE`Z7|h#PB$h8f%t*9P@-?xx^*t?T?$O`us6XHJkF4I*zW? zB}TH6)s8k$_WlzfX*a-yZflhO;2X$dIJ_9lSZmXwJd&r@uxrl)7C(>iEL^r@dCeoB zVqB^XESzCoc=Pp~h$ALyp1*ebj$4A8Q2)*#_s#jb3Du__4OL4yq2w?+Yw|3T3PON8 zpRMFW< zjB8nBxltB$lW|YqpDS$BOT3(sCvMO*4)QF$t$amkPE5L+VGY7e1tUqf3*M9=-U}@H zm>G)=wYc(6B83xJUXrR*a);rzZOCalkyfQK^?j;}{&rTQJwCi<1TPuHiqdxbT1tax zvUuBHI5l#tSY|iqKCU!0ecm8+QH(JUqxz+d>W9Ij_pv@ytMu~p%m((%RCY~r zGxdV6cKve#hpO}$f5ODAx>W2~Qc42%3PfN{?5GE0b!~smDM}?UG?cKK=+nI29rg2G zvWerUtjQg}br5E$^>a|8r7(W$Uy16^d-GPHtcAD>bzhybc6^~?a39aBy@>)9KPKvl zUV{V6{s?#4b&0>Qvlnl{yH3VX`&MW+Zd6B!Be$KroNK@CH{E(%$$GVs+D4om#I$~W zu-eF=l}x?Dw7$v>BSSZo&zHD(p2|oqKhzGA#PiMY3umLzn+cJelTreNuvy?3ZB6N4 z65iJyeNH5FY3T2)wx4BZfgk!R<4!ZLpMRdJ`v)tE)vKBId|8Qk_~>bn!w?7*5mG^7 zO04n_?Ltk&)@$*Yirw60*bpq$z(jCtt2317>FfhTKbRNijiA6vFBBv(!{12@W9A-D z)8q%}#2H%*tv6cz+Wrdr6ed3__CqqmM)e>`G4S50RfvaZ}_+IYu z;8l7O>i1_ljmaeG21SP*^TW?#mg`5M#BJ_6UD791PX7j&HIZUb)tv; z&4oIQM0@%QC)Eo1^?Q*Sk;`(%LJUK_@d^_3*^dnqRbL}|pqj_(?8B+=xkm2Exw#uy z(Ut(7b6?-d^7)|=qv%s+r(4zVkcBDt6y|$6h^CLCY#ad6Z9=UvN3Bk?`{x~0eF4xO zH2t(14o-&C52=#koy!d^+}p+k=J8JrNu-&YwDL2hR6=t7jx63|K@w?yQn7M+Get>9 zWJ}{SC`NMFEV8|7?0DbW2}N{0AN@q8Qq`kTU2zgmNuCzJm7tS{A>)hp zL;MT$?<*00U#8X2eJA$sbdF=4Xz2?6e1|Pm-R~-jQmVDEiB)eLCU8uYH0>jVTFF>e zo;w=qoCEfzuV=Wtq&^>1@LNg-Tt5+;1(<1bTk^7Mg=pc;{+wWRLS(KYO76fFC)^u| zuP#&mMR3bbchKzCGD0+`9BxVA&RQE6ZXncc6nhkQQH^n=(3}6Fl_-!orQZo;4D|pwSg?QRRa2ubU2$|g7lTuQ;`3M>( zV}IVFMyikx>LymG)C5a&9{8;WrU&L1Qsg&Ya*57~6Mn{4#G>E2i)u`M*1DCMH;0V4 z_jk~@-0#G~QLCuR77hm0BprD1`KB=MtEJXZXNAw~o;f`CskdCIt|b~xseNv7a~Dw z`vBj19EzH>J~=hVfQfv@NrS^$H0`{EJq?w~Iq6k0RlzJRZVUd22L9c?t=1jf%aVzM zu8XJC5BK*(%XU<3;KYui5|%@1+})cEbJur0{3vu{BlMtlz9zc2#`D`+4l)ZwOLsBJ zQt0iwK1Ar{^ol%S$*n$}aYwEZeDuc^RH|lzuKMT)b??(Kee&X{7T9?B|gkFew`s>wU!^`W9JGgdP&$$Itfea222c z6gFf3n81k-;_z0Wi3>fTN`LG-;GdootX5YrcD1-3x;uoT>ExXn)8cf#mn;j16?N_7 z;j=XOH^0k!6L?SW$-C>n_|tVVNk3rKPmlh0D8TFjGt-objhOKLjdj$XD55ZxKy zV#tr6+ucam-c*}j`@`9RL$@vVX+)bEVnsU|^J(wTVp&oMPSLBTZgeUZ@({9DeUpIz zM`ZQ<$tc>*GaKMVx3YiM#`MA!`!AX^AvL}&$U^+?6xWK!7jlMC-`UdXsKX+jbxYL@ zyQQiS&k5ZIK~<|2*HoQ1!uFIbtoL<8(!z)F2+SBaGN4KWqlN9Hd^v+wF8`god+ z#Xrjh%mN=z0!X|bN`qc$RzmjFMC18-*N#-SC9;*AE;2ebw{sDgwh$Es^f7axjj=zqL>0nRw%4Qf(onrE-Z`Q6OGaTP6Dl_ zdJ7Jp$mbi$M^hko8xtz%krZki{d#6Ei<*UcV22Y-c-!i|4w6Xb**)-Psm14yv7^)K zMS(P@k7;UO+j+wTuMW2PrGtY$hx?+8Z*FdqmE_PouHxrkqg(j0WkAwcD{S4D*|Zd@ zgk3%5K2G*2ikt~$PKjjM%&wg?HSuyt5xC6ZdHh)69b8s5Qjun_enU|rprYE z=Yq!lS4S_(O)>!P&k4+KAbK=_w{ak63w=2~ua#jJDh|tUAXGeCGr3|4r4nYs&ewM+ zJLRi;ZBq3h-`33AjO?i%Up*sIGRS2WPoBH9d7tr;?iB5KsD$uk$c=v$JmHBHm^i>bDftre8h*h9Jl~I%vq`*DfVyS-F(+S3i

&&F(_Rt8j>@mh3R*AAZZspLz~hLN8W>4R`e!f}f4RbuG~*ma#I8YSVq zGhsj7<1$xVs7)~0_f{GPQ$@ks?pN>D6O*gIQ%1(u%9Hx;*;H~2S;le<-4hN5%%9og z?DD%2#eXAQZU46oKW;rzGlmAJ6!5~uT`zkrx0A~m9q5r#*G+!WRUy|YGajt5=2#oAwkLG&MpM1m=wxx+03*i?YV-IzhW zegTWBz&G6lFImu17!ug}t}tI~PGj*RQpUd1?^H{8rTaBOJr<4wj;J2Wy`3Bu0BoTP zM0e9B|A6e0hrXb}_)I32Y7WYEFc-bm+_T)X%@tq1b|xImZzZgmzMC7PJ|>6T*++cZ z_UH88S~rLiG``tefts|(GujDRh{+DAwA4appV4DgHnwCVkehU!|h6zbx*GMpH&C_HgtK|FFNN z1GgP|()(#ObZN@ib?J!}h`yN4>dxXak^P_Q`;upB>M5;ey}!!r`|H!0sbZ9YW<7o>d|}N@Xoy}qkZVn zM2u;2se$Vsu>T2U|Bx7a16gPNC&>NBG5F8H{4WstzZ?@W07z8=0OBH#R$-_351vda zyuNY&1ciUW`+p$$Cvg7*4T+pnn>tzrt2KG-RLZAly~=&s_n~Bk!pfc-w>#h{XYFj@ zE~@kKhKZyNd121Z&Q6;vhWATO6^c{Aw_6?0_{Bn2s^zzOhERvUYLh*`G2AY7$K+AP z%dNH>kZH}-j2)3MJuqVI778O>0fWJkT>_Q|QeLLW`=&j4kSnan0I(FVGS_k}GvVwA z02wdo%lnJ_g7%(7D(;l|z_It}ke-wy3`&PD8o52GXjN9n*zl=eJ7N{_KC4(!-L<%$CfQf6JAE`so6G z=n=Gv(Oe33pj0_#w>h+ZJ718_sGxNWrOJz$4=#Nd`@T-W`cR2!3ccuRXCKl+)E-W* zp(N6y`SOsjC|tFj6cf3F6+4JWt|P_LQnR;O=@V3J)X6(?UXJVXvZ5k}SkKoS4!yeY z&3r?%vv4wTXzmst!tX^cmNM7gqa}S;z@Ia6lD`N;EyFQh&zTV2^+3&AMYw@Q)g_|CblnMlDAsToD7n2;Cn>Mf}||D6U`&zc=*XC zgPlOy18B+HH}E$gE}2nd%T-C{r>u!lw35kZdcm|^`+1Bi1w$lq7*bF>qwD)n{qh1C zU+V7x9>pKEXZt_eJf+e)52ac+%GJs^zOq~h!R41f>v0^QQ{l3F;%NMlzIKNs5_cVMsYDpBsPDBspqok~{go$mS zgT_oyrOQ)_#=Gz^hC8XMMp8;o(Quata(k0WorZKo@ZUPst#)744&>C&QwIB3*=yyO zBUh#OjYneDWkZ}os5l0*8+M=ApeIwRoa1JWNN=_3?h?}bG^norb7T9bzL`w_>YPQN z^$FGQ3zBAbXi#6?(~WMDupK%);YnCGN{EIQNGxV8%Q>9w9e|QN?(aBPhm5Muy6!T5 zA4?aJcqp!0&I#n%j`#&UV6pv;ar?uZ5L8D2^8H90C^X=IXOKQ0jIcnTeJi;Z)+rX+ zM(6H8vam)*Ny{<*J(z^N(+8LbQr#ttyVyxkYAPgk6;qJp!!WHx5SqscQ)sywfTh)B zOEprk4&fN%*(|bp_C3;KJ>IoDDFM# zXyi4jTSgmnK>@Gi8-5gTIsnqYk+#Fq9(dhlze#`&GnpskiGj$%_PXmB{md_Xs@2Q} zr#QyTl65gPQ+pIk66rCd2N>M^xqZKXn`eE*;a{jS6OGKQ{BJJ8h&ImWCj4UqEvZ<1 zuqs5H?R?xpNzw{D%cc?H6KQ6Z!qB-O@TyXf!f4>}Q@?msM2ECDI%a&%IMxX`b?H@z zu+1!94OdD{^sXb8VLLLptG6bI)&!RCDU{Wh=quG}U5I~y^G1|PWd0k|hR2moXAZ2x zqiS??eE?hFm^gK@v;JqDk4f@8w8-$jJn%Ld*8|4P$_DM$pzD0#f~}q4E3ZhE-Uo)i zY=7~A5u(IcDcpT~0yV)g*>mWGatrR0l{J&QzYa0jKA$ngdpKqf3GeH&|a9TK6i2Ca?qSx&$ZPmX{=at{J%88UM0-c&q`F&T*D`42gci{0c}iB2*A@lp4IiTS<7= zgIcmfK`iFEzskKk&g_*nHA#%zvr#9DARmyEFYYoyXM}v&J^Ok`Y-Uez{7q~5S20)t zuj9GDH9`37;-LS$7@B|)HRY!f-(OZkf^xK@%}wyo$4rqdd%aW|xM!OzV|xo&XD|;bKAQ^ML0_+R)TG-xpk+fFus>ypo8udX7roUI*b9o9;d zR>JiGf#;Mp*gvm#4hk)33#tw#vVk&Yl03Ille!UwCiAx6PEPnTy?U-_;z!yRZK57B z!49p&B(3Csi5=m0YaoUo-XiNibdKYKRU-qUcNE$d=29{}koplERF&mn6DANsPhB7P zE1Cp99NatST7De$;K$?pB(ivJLVkt9b5-`cP%+gN2m_97`hvIm)2VWOL0MFMfU{Of ztyFSSW<&Ya)&;q&>P6q__wrk!%;A-WC+u}x-JyhF?kWRwC!Xn;{kGThg^J`&an4r> z@+!^ixhU26c3yy7BW{%wCw|~OgcTLCP!t$S-oTo!sTzaXf73udZOvmV#!aZZ_*0f< zbs-oHpe`a<&*&vb{TkP>-5u^+9u;bq4MCZ~6&0WURKDN(S_fTUO=Jzq`6r49fu$b5 zCiZ3t7ee8B(r$#;cWH+8(d~WUmX=0t%eB!G^g#JLvwP#>(RW(854$T0sb*2J*!LS) zS-5)cW%hZ$xo~7T-jbYYE>Z@yV`43sc#8^H(bw=ZWdk`$_lNN0o!?C3WhhRBqoI-> zV&=%v@?ol>kP>Dt;Tt(frxZDgk_5C8$y>A{McgP}zb&X)OI(Pg*l>cjuafnb4n4KF z<*4X|d$G7X2-{ncbhRg|5Hx+Iaewaa*O0$qKByYRM{~SNN5c)i5ahScC-}+Ky+G|{ zUDRG`RZ+B4U*!G9TT~~g5EcBq?5^j}R^s}xY&e-fgxHY>4I5=J-M-|TtFJ3%2HvKw z;50?i&)O`KjZerg`FA%WD4*w(ir&jj(G^fDlvWb)YrK1izC!Y3$7+tDC_Unp*l&?!g%se+lyQKDq? zrD4z;`p7GD$<)L8Ppn{gYjeI_`r2PRFSP5lrf+OG;2;^$-9*L`HBm!*fbVzSQ zw7_79F8Q=)k$f;xhk+ki-^tLALy=&NYVzN_dO08N#rJ>_l#1DjYxDyy$Yf)}X(Ia8 z+q+yt;Tw&Eu*0@H#^9yPC)YaP(#|#T=HR=~GX_W4RBeIuXBf_fRq*z8dJhuqTLfJ0 zd0kj`j3H=DHb>?5_AmO&7>KhEB8(1GJJ*sK9kUVVqX zi7ETmII;s&smqNi8u5kIZXM@&Af!l>`Q8z)a7^OeZTX6C2nUZ?hNfx=tBot^%A)G= zPcd=x1qeny72CJ4<$fA`ly>|*i7u-= z@PeI4R=Bq8B!%&tdlhkdWs^uy6s!ADyiy>RfJFDuT(NWa7)=l5un$upXu|%`Dq@v* zAL%MKWf{g$8y-*v2_G@Cie4kBuJ=W1F{|;5MhWXKhXhj91`3pgTBB$t_&qAk9EOZV z=k*QG+yDrc2HwPd2H=b`E}sm&#nlXce!v^jqZ!iJGNF@oFFB=PR|xx@*J3vgo9|!B z(aKWo;SiC{^*Jy{8q7ssK_}~zktZS^O0(Y>YqpZ;9s0te$VSGP=I9Y?r(kee=3d!s zjS%q8c&hG|Mt-2PFp(};kmV_EXQnce94v8hT zc(PB(XqsC?sZMf;QSHH5nIiy$KxvPi?R1SV3UIG#AN>C3*!pq-j6oFYl!0dZm=i8IPO_(SVfr^t2zruXt_|V&Wxiq{iEayzJ%%+VVYKya=4&2tQ$U250Hl z$7Ebe&+EC-nM-|AHxCrf{<*myGk(Nnc}ad_myYv=UW@V14u&_h)V&%JL}R1%1Di7s z#c2i}5~0OcmyU0>+zRvL#||GHJMjN18Zwg(iSD-|kCMGPwNtzc%o5Wek-0Yiu-dFn z`cb%$L6p{oU3;094xb%c?c*225Muk&cPZo{W(Bm+XtajMS(?ZJh* z+B0cckrc{EoH-b6#(Ft% zskO~#GyIdWDcutrV1$p(*mB$+lZx629WrQYDarHuDbs5YDW|;y|5&?bN>kxik)pnS5y9Z498#ob zxH$+^9u99(vEVm}pYf|6F*qq9(Z(Av8d(w@OMrWopwEXLVZ8#1(|G&VjY9Y+ax$0OHzFfF1r-# zz_!v?o|Vbe<2xAxeN#bV5R31Vrm@oJyY>2BEc(Y6PzJujj^MPq>7+bo!WO+#8M)pE zM{NA{VE$48blCeQyEUG*qP5@mRg?pRK7^{tuxmg;hyV5S_2tA30}f!;N|;9IF$}=B zX)!AM$M*WKtc!>;22*yMPnVgeSNlfLryU1l3eDK&ts1gMV@F2TjDcDN^a)A>-#t4i zOM#t?`B>vAYY#zU<*+wU!YIWjFu^|ovB4L9BGgdr2OSa0TV;6f`2;e6FIdBaD5Ay6 zfOI6`J*|Y?EN$73J$JBB8#5Ms_lQ4Jk&r$Xui49;+}(lD*I=A-;BPzyC=L)Ll)JO; zOE*G+bcG`O{A4L(J8^a3biT?Rj`4Tm%LyGnlf&dJ_xuMhCbu178><5P~k2hAHiB}6i{X`Fs5(Z>%8u-4yocUR{>%+800cM0$Q zKuPivG?mI?6SkKa>)ZHk1#Qp~a<#Vm%3Xwn%G*Q*z7~2 z!aUx+b}5+#a~6-fhUZeDT&^g`_8gYeLp#uCXs0ajD0sPS|FX$r`D9X=xftLbx}Hy8 zNPCYVRV7v-df8*F&J7=jbp6_Wb?BF_`VedP-9Z5Ot4Gw>_U2EE0B?dN^QRHYpxJY` z@-x1jC4_>Ff6&`EL<`?*duvF_iy(4R26I<-t%VV}JlI59#vD0JG5x78!_>QS_Cq6IO&SU$+N zo^HHf!Tq~}7bG2z5ek{bd%@sq(HdK#Yw0@PuY8{WFwOAD-F#~<*0ucF?DqUqn(y}8 zX4*Vtp3(xw+Ay%F&xxV)*kD6#f+D!wDOsScu> zJe~VxEb*@QL@agb=X&Qp%7F)OPn0}xy_b+S-6_jH&3SCA(#G_=MvIG{N+$a+{1ss3 z9k>#{<%DQiMRd9%?ibby`3t4HkE2?4DAo}hC-^Wp}FOR&f^mtM&Sr3SiHqoeH&bIe@Q(YwtF z+UL8q@9Iu)JAAkgzvxTlm1QEr>3K`+1=KiU`QiBjx;TW8yYLgx*+T%$epdeXy5U|o zHDYNP(QyD}g(Eht;INCmUX{-XIDi7-BL1Rf6hv9|6hVzxc&Hr$dw)LJLmZe`R^K6( z_7I_bck>SjLWM&Gx7lL5Pdm#creP21i3vU%ow-M1zte$ z2(i3`A*W|>jQSv0?`li``863r^M8SUMl4)jbi1W~Zw>}m!n)_&tP0x^49UZGux?B^ z3-1}CJnp{|;N)DjN?qAJ^s~DDe~Mb}EE&6!8D;W_Ee7I~qiGNML}GqXJzjXdu> z=gy1~4ya$gyY%wG)PJt=$hmN14G20#_2teM?vMhv>$f^9+ z_Tz%yJAW{%$+cZ?@JCx0-Ma`T;lUkp{#1n|?p=kPX(OuiGW?{A=L2mY?pq4bu4KSV zY8eA}?)a*tec+otyld>MX5belAGP6OioAO>ny80m8^&;^{p-n#udeP#PwFNsjN+8IpO0UqCCzd%|(m^xa&) qn;Z)ZOOQqAL^CSX&5w06f6bThdH;WDSLg`>nS<4M8fhCD>Hh$^j02hg diff --git a/PythonPackage/AMR/dist/AMR-2.1.1.9156-py3-none-any.whl b/PythonPackage/AMR/dist/amr-2.1.1.9157-py3-none-any.whl similarity index 57% rename from PythonPackage/AMR/dist/AMR-2.1.1.9156-py3-none-any.whl rename to PythonPackage/AMR/dist/amr-2.1.1.9157-py3-none-any.whl index b5ad7360cf2ce2628ad1c7f999c660d4b11166ff..91892640ff3539e536f23be15d12f749c8f61988 100644 GIT binary patch delta 3911 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 delta 3894 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 MmmSRUOV*%&0n?`BX#fBK diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9157.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9157.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a7483d815dce21666e1494e66bc686989a15b39 GIT binary patch literal 10129 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 1)) { abnames <- ab_name(from_text, tolower = TRUE, loop_time = loop_time + 1) @@ -176,6 +175,14 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { x_new[known_codes_cid] <- AMR_env$AB_lookup$ab[match(x[known_codes_cid], AMR_env$AB_lookup$cid)] previously_coerced <- x %in% AMR_env$ab_previously_coerced$x x_new[previously_coerced & is.na(x_new)] <- AMR_env$ab_previously_coerced$ab[match(x[is.na(x_new) & x %in% AMR_env$ab_previously_coerced$x], AMR_env$ab_previously_coerced$x)] + prev <- x_bak[which(x[which(previously_coerced)] %in% x_bak_clean)] + if (any(previously_coerced) && isTRUE(info) && message_not_thrown_before("as.ab", prev, entire_session = TRUE)) { + message_( + "Returning previously coerced value", ifelse(length(unique(prev)) > 1, "s", ""), + " for ", vector_and(prev), ". Run `ab_reset_session()` to reset this. This note will be shown once per session for this input." + ) + } + already_known <- known_names | known_codes_ab | known_codes_atc | known_codes_cid | previously_coerced # fix for NAs @@ -325,6 +332,18 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { if (loop_time <= 2 && fast_mode == FALSE) { # only run on first and second try + # base on the Levensthein distance function if length >= 6 + if (nchar(x[i]) >= 6) { + l_dist <- as.double(utils::adist(x[i], AMR_env$AB_lookup$generalised_name, + ignore.case = FALSE, + fixed = TRUE, + costs = c(insertions = 1, deletions = 2, substitutions = 2), + counts = FALSE)) + x_new[i] <- AMR_env$AB_lookup$ab[order(l_dist)][1] + x_uncertain <- c(x_uncertain, x_bak[x[i] == x_bak_clean][1]) + next + } + # try by removing all spaces if (x[i] %like% " ") { found <- suppressWarnings(as.ab(gsub(" +", "", x[i], perl = TRUE), loop_time = loop_time + 2)) @@ -554,6 +573,8 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { vector_and(x_unknown_ATCs), "." ) } + + # Throw note about uncertainties x_unknown <- x_unknown[!x_unknown %in% x_unknown_ATCs] x_unknown <- c( x_unknown, @@ -566,6 +587,28 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { vector_and(x_unknown), "." ) } + + # Throw note about uncertainties + if (isTRUE(info) && length(x_uncertain) > 0 && fast_mode == FALSE) { + if (message_not_thrown_before("as.ab", "uncertainties", x_bak)) { + plural <- c("", "this") + if (length(x_uncertain) > 1) { + plural <- c("s", "these uncertainties") + } + if (length(x_uncertain) <= 3) { + examples <- vector_and( + paste0( + '"', x_uncertain, '" (assumed ', + ab_name(AMR_env$ab_previously_coerced$ab[which(AMR_env$ab_previously_coerced$x_bak %in% x_uncertain)], language = NULL, tolower = TRUE), + ", ", AMR_env$ab_previously_coerced$ab[which(AMR_env$ab_previously_coerced$x_bak %in% x_uncertain)], ")"), + quotes = FALSE) + } else { + examples <- paste0(nr2char(length(x_uncertain)), " antimicrobial", plural[1]) + } + message_("Antimicrobial translation was uncertain for ", examples, + ". If required, use `add_custom_antimicrobials()` to add custom entries.") + } + } x_result <- x_new[match(x_bak_clean, x)] if (length(x_result) == 0) { @@ -583,6 +626,18 @@ is.ab <- function(x) { inherits(x, "ab") } +#' @rdname as.ab +#' @export +ab_reset_session <- function() { + if (NROW(AMR_env$ab_previously_coerced) > 0) { + message_("Reset ", nr2char(NROW(AMR_env$ab_previously_coerced)), " previously matched input value", ifelse(NROW(AMR_env$ab_previously_coerced) > 1, "s", ""), ".") + AMR_env$ab_previously_coerced <- AMR_env$ab_previously_coerced[0, , drop = FALSE] + AMR_env$mo_uncertainties <- AMR_env$mo_uncertainties[0, , drop = FALSE] + } else { + message_("No previously matched input values to reset.") + } +} + # will be exported using s3_register() in R/zzz.R pillar_shaft.ab <- function(x, ...) { out <- trimws(format(x)) @@ -606,6 +661,15 @@ type_sum.ab <- function(x, ...) { #' @export #' @noRd print.ab <- function(x, ...) { + if (!is.null(attributes(x)$amr_selector)) { + function_name <- attributes(x)$amr_selector + message_("This 'ab' vector was retrieved using `" , function_name, "()`, which should normally be used inside a `dplyr` verb or `data.frame` call, e.g.:\n", + " ", AMR_env$bullet_icon, " your_data %>% select(", function_name, "())\n", + " ", AMR_env$bullet_icon, " your_data %>% select(column_a, column_b, ", function_name, "())\n", + " ", AMR_env$bullet_icon, " your_data %>% filter(any(", function_name, "() == \"R\"))\n", + " ", AMR_env$bullet_icon, " your_data[, ", function_name, "()]\n", + " ", AMR_env$bullet_icon, " your_data[, c(\"column_a\", \"column_b\", ", function_name, "())]") + } cat("Class 'ab'\n") print(as.character(x), quote = FALSE) } @@ -692,7 +756,8 @@ generalise_antibiotic_name <- function(x) { # non-character, space or number should be a slash x <- gsub("[^A-Z0-9 -)(]", "/", x, perl = TRUE) # correct for 'high level' antibiotics - x <- gsub("([^A-Z0-9/ -]+)?(HIGH(.?LE?VE?L)?|[^A-Z0-9/]H[^A-Z0-9]?L)([^A-Z0-9 -]+)?", "-HIGH", x, perl = TRUE) + x <- trimws(gsub("([^A-Z0-9/ -]+)?(HIGH(.?LE?VE?L)?|[^A-Z0-9/]H[^A-Z0-9]?L)([^A-Z0-9 -]+)?", "-HIGH", x, perl = TRUE)) + x <- trimws(gsub("^(-HIGH)(.*)", "\\2\\1", x)) # remove part between brackets if that's followed by another string x <- gsub("(.*)+ [(].*[)]", "\\1", x) # spaces around non-characters must be removed: amox + clav -> amox/clav diff --git a/R/amr_selectors.R b/R/amr_selectors.R index ffc72342e..27f871db9 100755 --- a/R/amr_selectors.R +++ b/R/amr_selectors.R @@ -47,7 +47,7 @@ #' @details #' These functions can be used in data set calls for selecting columns and filtering rows. They work with base \R, the Tidyverse, and `data.table`. They are heavily inspired by the [Tidyverse selection helpers][tidyselect::language] such as [`everything()`][tidyselect::everything()], but are not limited to `dplyr` verbs. Nonetheless, they are very convenient to use with `dplyr` functions such as [`select()`][dplyr::select()], [`filter()`][dplyr::filter()] and [`summarise()`][dplyr::summarise()], see *Examples*. #' -#' All selectors can also be used in `tidymodels` packages such as `recipe` and `parsnip`. See for more info [our tutorial](https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html) on using these AMR functions for predictive modelling. +#' All selectors can also be used in `tidymodels` packages such as `recipe` and `parsnip`. See for more info [our tutorial](https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html) on using antimicrobial selectors for predictive modelling. #' #' All columns in the data in which these functions are called will be searched for known antimicrobial names, abbreviations, brand names, and codes (ATC, EARS-Net, WHO, etc.) according to the [antibiotics] data set. This means that a selector such as [aminoglycosides()] will pick up column names like 'gen', 'genta', 'J01GB03', 'tobra', 'Tobracin', etc. #' @@ -747,16 +747,8 @@ amr_select_exec <- function(function_name, if (is.null(vars_df)) { # no data found, no antimicrobials, so no input. Happens if users run e.g. `aminoglycosides()` as a separate command. - examples <- paste0( - " ", AMR_env$bullet_icon, " your_data %>% select(", function_name, "())\n", - " ", AMR_env$bullet_icon, " your_data %>% select(column_a, column_b, ", function_name, "())\n", - " ", AMR_env$bullet_icon, " your_data %>% filter(any(", function_name, "() == \"R\"))\n", - " ", AMR_env$bullet_icon, " your_data[, ", function_name, "()]\n", - " ", AMR_env$bullet_icon, " your_data[, c(\"column_a\", \"column_b\", ", function_name, "())]") - message_("The function `" , function_name, "()` should be used inside a `dplyr` verb or `data.frame` call, e.g.:\n", - examples, - "\n\nNow returning a vector of all possible antimicrobials that `" , function_name, "()` can select.") - return(sort(abx)) + # print.ab will cover the additional printing text + return(structure(sort(abx), amr_selector = function_name)) } # get the columns with a group names in the chosen ab class diff --git a/R/antibiogram.R b/R/antibiogram.R index 0afd42cee..4d2de483a 100755 --- a/R/antibiogram.R +++ b/R/antibiogram.R @@ -441,7 +441,7 @@ antibiogram.default <- function(x, x <- ascertain_sir_classes(x, "x") meet_criteria(wisca, allow_class = "logical", has_length = 1) if (isTRUE(wisca)) { - if (!is.null(mo_transform)) { + if (!is.null(mo_transform) && !missing(mo_transform)) { warning_("WISCA must be based on the species level as WISCA parameters are based on this. For that reason, `mo_transform` will be ignored.") } mo_transform <- function(x) suppressMessages(suppressWarnings(paste(mo_genus(x, keep_synonyms = TRUE, language = NULL), mo_species(x, keep_synonyms = TRUE, language = NULL)))) @@ -1245,10 +1245,14 @@ knit_print.antibiogram <- function(x, italicise = TRUE, na = getOption("knitr.ka meet_criteria(italicise, allow_class = "logical", has_length = 1) meet_criteria(na, allow_class = "character", has_length = 1, allow_NA = TRUE) - if (!isTRUE(attributes(x)$wisca) && isTRUE(italicise) && "mo" %in% colnames(attributes(x)$long_numeric)) { - # make all microorganism names italic, according to nomenclature - names_col <- ifelse(isTRUE(attributes(x)$has_syndromic_group), 2, 1) - x[[names_col]] <- italicise_taxonomy(x[[names_col]], type = "markdown") + add_MO_lookup_to_AMR_env() + + cols_with_mo_names <- vapply(FUN.VALUE = logical(1), x, function(x) any(x %in% AMR_env$MO_lookup$fullname, na.rm = TRUE)) + if (any(cols_with_mo_names)) { + for (i in which(cols_with_mo_names)) { + # make all microorganism names italic, according to nomenclature + x[[i]] <- italicise_taxonomy(x[[i]], type = "markdown") + } } old_option <- getOption("knitr.kable.NA") diff --git a/R/plotting.R b/R/plotting.R index 9e7156f23..1b396a173 100755 --- a/R/plotting.R +++ b/R/plotting.R @@ -218,12 +218,10 @@ create_scale_mic <- function(aest, keep_operators, mic_range = NULL, ...) { as.double(rescale_mic(x = as.double(as.mic(x)), keep_operators = keep_operators, mic_range = mic_range, as.mic = TRUE)) } scale$transform_df <- function(self, df) { - stop_if(all(is.na(df[[aest]])), - "`scale_", aest, "_mic()`: All MIC values are `NA`. Check your input data.", call = FALSE) self$mic_values_rescaled <- rescale_mic(x = as.double(as.mic(df[[aest]])), keep_operators = keep_operators, mic_range = mic_range, as.mic = TRUE) # create new breaks and labels here lims <- range(self$mic_values_rescaled, na.rm = TRUE) - # support inner and outer mic_range settings (e.g., data ranges 0.5-8 and mic_range is set to 0.025-64) + # support inner and outer 'mic_range' settings (e.g., the data ranges 0.5-8 and 'mic_range' is set to 0.025-32) if (!is.null(mic_range) && !is.na(mic_range[1]) && !is.na(lims[1]) && mic_range[1] < lims[1]) { lims[1] <- mic_range[1] } diff --git a/data-raw/gpt_training_text_v2.1.1.9156.txt b/data-raw/gpt_training_text_v2.1.1.9157.txt similarity index 99% rename from data-raw/gpt_training_text_v2.1.1.9156.txt rename to data-raw/gpt_training_text_v2.1.1.9157.txt index 6f42d5e7b..0e4770caa 100644 --- a/data-raw/gpt_training_text_v2.1.1.9156.txt +++ b/data-raw/gpt_training_text_v2.1.1.9157.txt @@ -1,6 +1,6 @@ This knowledge base contains all context you must know about the AMR package for R. You are a GPT trained to be an assistant for the AMR package in R. You are an incredible R specialist, especially trained in this package and in the tidyverse. -First and foremost, you are trained on version 2.1.1.9156. Remember this whenever someone asks which AMR package version you’re at. +First and foremost, you are trained on version 2.1.1.9157. Remember this whenever someone asks which AMR package version you’re at. Below are the contents of the file, the file, and all the files (documentation) in the package. Every file content is split using 100 hypens. ---------------------------------------------------------------------------------------------------- @@ -151,6 +151,7 @@ export(ab_info) export(ab_loinc) export(ab_name) export(ab_property) +export(ab_reset_session) export(ab_selector) export(ab_synonyms) export(ab_tradenames) @@ -2334,7 +2335,7 @@ my_data_with_all_these_columns \%>\% \details{ These functions can be used in data set calls for selecting columns and filtering rows. They work with base \R, the Tidyverse, and \code{data.table}. They are heavily inspired by the \link[tidyselect:language]{Tidyverse selection helpers} such as \code{\link[tidyselect:everything]{everything()}}, but are not limited to \code{dplyr} verbs. Nonetheless, they are very convenient to use with \code{dplyr} functions such as \code{\link[dplyr:select]{select()}}, \code{\link[dplyr:filter]{filter()}} and \code{\link[dplyr:summarise]{summarise()}}, see \emph{Examples}. -All selectors can also be used in \code{tidymodels} packages such as \code{recipe} and \code{parsnip}. See for more info \href{https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html}{our tutorial} on using these AMR functions for predictive modelling. +All selectors can also be used in \code{tidymodels} packages such as \code{recipe} and \code{parsnip}. See for more info \href{https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html}{our tutorial} on using antimicrobial selectors for predictive modelling. All columns in the data in which these functions are called will be searched for known antimicrobial names, abbreviations, brand names, and codes (ATC, EARS-Net, WHO, etc.) according to the \link{antibiotics} data set. This means that a selector such as \code{\link[=aminoglycosides]{aminoglycosides()}} will pick up column names like 'gen', 'genta', 'J01GB03', 'tobra', 'Tobracin', etc. @@ -2573,11 +2574,14 @@ THE PART HEREAFTER CONTAINS CONTENTS FROM FILE 'man/as.ab.Rd': \alias{as.ab} \alias{ab} \alias{is.ab} +\alias{ab_reset_session} \title{Transform Input to an Antibiotic ID} \usage{ as.ab(x, flag_multiple_results = TRUE, info = interactive(), ...) is.ab(x) + +ab_reset_session() } \arguments{ \item{x}{a \link{character} vector to determine to antibiotic ID} @@ -9013,9 +9017,6 @@ We begin by loading the required libraries and preparing the `example_isolates` library(tidymodels) # For machine learning workflows, and data manipulation (dplyr, tidyr, ...) library(AMR) # For AMR data analysis -# Load the example_isolates dataset -data("example_isolates") # Preloaded dataset with AMR results - # Select relevant columns for prediction data <- example_isolates %>% # select AB results dynamically @@ -9136,7 +9137,7 @@ metrics - `predict()` generates predictions on the testing set. - `metrics()` computes evaluation metrics like accuracy and kappa. -It appears we can predict the Gram based on AMR results with a `r round(metrics$.estimate[1], 3)` accuracy based on AMR results of aminoglycosides and beta-lactam antibiotics. The ROC curve looks like this: +It appears we can predict the Gram based on AMR results with a `r round(metrics$.estimate[1], 3) * 100`% accuracy based on AMR results of aminoglycosides and beta-lactam antibiotics. The ROC curve looks like this: ```{r} predictions %>% diff --git a/data-raw/wisca.xlsx b/data-raw/wisca.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8eb444716ce11164e287694e9f4bbef8ce6452c8 GIT binary patch literal 10779 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 U8U#2nFeK0i6NFh3mS5lg2YJTpeE\% \details{ These functions can be used in data set calls for selecting columns and filtering rows. They work with base \R, the Tidyverse, and \code{data.table}. They are heavily inspired by the \link[tidyselect:language]{Tidyverse selection helpers} such as \code{\link[tidyselect:everything]{everything()}}, but are not limited to \code{dplyr} verbs. Nonetheless, they are very convenient to use with \code{dplyr} functions such as \code{\link[dplyr:select]{select()}}, \code{\link[dplyr:filter]{filter()}} and \code{\link[dplyr:summarise]{summarise()}}, see \emph{Examples}. -All selectors can also be used in \code{tidymodels} packages such as \code{recipe} and \code{parsnip}. See for more info \href{https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html}{our tutorial} on using these AMR functions for predictive modelling. +All selectors can also be used in \code{tidymodels} packages such as \code{recipe} and \code{parsnip}. See for more info \href{https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html}{our tutorial} on using antimicrobial selectors for predictive modelling. All columns in the data in which these functions are called will be searched for known antimicrobial names, abbreviations, brand names, and codes (ATC, EARS-Net, WHO, etc.) according to the \link{antibiotics} data set. This means that a selector such as \code{\link[=aminoglycosides]{aminoglycosides()}} will pick up column names like 'gen', 'genta', 'J01GB03', 'tobra', 'Tobracin', etc. diff --git a/man/as.ab.Rd b/man/as.ab.Rd index f5bc137f0..f29314f22 100644 --- a/man/as.ab.Rd +++ b/man/as.ab.Rd @@ -4,11 +4,14 @@ \alias{as.ab} \alias{ab} \alias{is.ab} +\alias{ab_reset_session} \title{Transform Input to an Antibiotic ID} \usage{ as.ab(x, flag_multiple_results = TRUE, info = interactive(), ...) is.ab(x) + +ab_reset_session() } \arguments{ \item{x}{a \link{character} vector to determine to antibiotic ID} diff --git a/vignettes/AMR_with_tidymodels.Rmd b/vignettes/AMR_with_tidymodels.Rmd index 09b881717..ae088321d 100644 --- a/vignettes/AMR_with_tidymodels.Rmd +++ b/vignettes/AMR_with_tidymodels.Rmd @@ -45,9 +45,6 @@ We begin by loading the required libraries and preparing the `example_isolates` library(tidymodels) # For machine learning workflows, and data manipulation (dplyr, tidyr, ...) library(AMR) # For AMR data analysis -# Load the example_isolates dataset -data("example_isolates") # Preloaded dataset with AMR results - # Select relevant columns for prediction data <- example_isolates %>% # select AB results dynamically @@ -168,7 +165,7 @@ metrics - `predict()` generates predictions on the testing set. - `metrics()` computes evaluation metrics like accuracy and kappa. -It appears we can predict the Gram based on AMR results with a `r round(metrics$.estimate[1], 3)` accuracy based on AMR results of aminoglycosides and beta-lactam antibiotics. The ROC curve looks like this: +It appears we can predict the Gram based on AMR results with a `r round(metrics$.estimate[1], 3) * 100`% accuracy based on AMR results of aminoglycosides and beta-lactam antibiotics. The ROC curve looks like this: ```{r} predictions %>%