From 28ca0be6d05592d2bf2418a3937275e95b25ab7b Mon Sep 17 00:00:00 2001 From: gvegayon Date: Tue, 26 Sep 2023 04:36:07 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20UofUEpiB?= =?UTF-8?q?io/epiworldR@ad4363b87729968dfba548eaea3e3d2ee47fa227=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- articles/getting-started.html | 6 +++--- articles/run-multiple.html | 14 +++++++------- .../plotting seirconn epicurves-1.png | Bin 82672 -> 79614 bytes .../reproductive number plot-1.png | Bin 78967 -> 70055 bytes index.html | 12 ++++++------ pkgdown.yml | 2 +- search.json | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/articles/getting-started.html b/articles/getting-started.html index 5c29c766..9d904910 100644 --- a/articles/getting-started.html +++ b/articles/getting-started.html @@ -79,7 +79,7 @@

Derek

George Vega Yon

-

2023-09-19

+

2023-09-26

Source: vignettes/getting-started.Rmd
getting-started.Rmd
@@ -188,8 +188,8 @@

Setup and running the model#> Number of entities : 0 #> Days (duration) : 50 (of 50) #> Number of viruses : 1 -#> Last run elapsed t : 421.00ms -#> Last run speed : 5.93 million agents x day / second +#> Last run elapsed t : 371.00ms +#> Last run speed : 6.73 million agents x day / second #> Rewiring : off #> #> Global actions: diff --git a/articles/run-multiple.html b/articles/run-multiple.html index fe30b4e4..bab2a024 100644 --- a/articles/run-multiple.html +++ b/articles/run-multiple.html @@ -79,7 +79,7 @@

Derek

George Vega Yon

-

2023-09-19

+

2023-09-26

Source:
vignettes/run-multiple.Rmd
run-multiple.Rmd
@@ -152,12 +152,12 @@

Generating a Saver#> 6 1 1 1 Exposed 1 head(ans$reproductive) #> sim_num virus_id virus source source_exposure_date rt -#> 1 1 0 COVID-19 43 50 0 -#> 2 1 0 COVID-19 45 50 0 -#> 3 1 0 COVID-19 206 50 0 -#> 4 1 0 COVID-19 301 50 0 -#> 5 1 0 COVID-19 303 50 0 -#> 6 1 0 COVID-19 336 50 0 +#> 1 1 0 COVID-19 2633 50 0 +#> 2 1 0 COVID-19 4894 50 0 +#> 3 1 0 COVID-19 6298 50 0 +#> 4 1 0 COVID-19 9338 50 0 +#> 5 1 0 COVID-19 3517 49 0 +#> 6 1 0 COVID-19 5661 49 0

Plotting diff --git a/articles/run-multiple_files/figure-html/plotting seirconn epicurves-1.png b/articles/run-multiple_files/figure-html/plotting seirconn epicurves-1.png index 5e0b5763a22bcba077431562eb291241513298b2..678fe5b93c59a88afbcfa37bfd5de6fd1bba692c 100644 GIT binary patch literal 79614 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 literal 82672 zcmeFYXH?T$`z=bS(wp=q5Q-pRq}PCi5~_5hxXPMS3p+ z0@8bjoVefjf5y2V@3>#?hm*mNA0r{jTF-jcoO3;EF2plE4N5XrGCVvyN~k8p5D$+? z84r&DeUBLT%!%XJ4DLn@)7F6C?zqRLYG)MgM(VBk+z$_rBks=yNd9%`fQR=04+>E+ z4$j?K2+3kMX}>t!*I~TJOqcOdbvlg$lBU)cTL_2y0=h--dBV#dklCCwh%p&M3rur9z zZs(py1EI+O`}6o+>10(Tu%?S2zfnH;E-q%@)c+Cd zV(*iWQ8V)QNq8#Q>E9#2%`&&q1cwaSt;UETcNqebIS6vc7F3Ng7pUAVTlep+EWHFm zN1aFe)y6>S9It>ChWyHW>Gh=E;E%3s!>4|ZYsX}*e;SkSOtn05pjuhp(CET0Uk##9cWfe<3;>IL` zP}hNq3go*PX{V*(82arq5rTZJ7BGPTO*~)r0WKJ$nk}$$YGvd&iw5q~9m{efP$Gw2 zU(jlhhNiC|G_qs2mw4A{y(uapb#)r4*?Y$tjAxEFK;ntlqX!JO6bVFedIJyamWP0g ze(3$^qUZ@rxMaFH=!6OV8GVdqUrt7EMAv9xreDUOGWoLmq%~m+PrI-z=$SRFhf$xy zihJhq1rbqQyB2xh#GAlHRffuoYfWTvy1s>aWe?X0+Y!mV`^_kxvIyy`NVOIqvC<7) zaM~uhBEb!V4CQqEB(Z5gk(W(Cln4Ft{pH%Vi#?JaGWRhUI}|AqdvkxYYEHCD@GQ<3 zwlw?xHaGW-grUir=)y$ry2}G_!1BT{b=5jf^F}hhl{r`-Q3K_PXZ8H(q84w`lg4d0 zc0&c|%JxMm`9^R3kT1C=@;kpW8^_d(uDHM?UXx!-8c1Lw1${rZ7Ti1-oQjBFJ3U;? zA3N)o-Cf6bTWi{NL_L&bxX?~D|9vKL(7}J$F(O^pftn-;FNEe|p|cBbkEaiHSG1AE zf9?3KMP1q|Td8r5sqAzSZi-OOwj%Mm%a_~OJfhqVX65P4QY{hZ|HPVi(((~lASAh_ zyB^pW2*~W8=d@b)qgeo-`2e&1Va^*e@2^nFKqxCqrCv1tP9D7%3#dr28Tx5^&xWQk z=axS@BKjAfokMG#H2itMQWx88bE=R90=u|)^?c(nCtoLDN*l`RL?x! z@#IsUa`7Fg32c}wJY93*x+MMa5OcpIFlnFkN`To&EpOShg?9@^l}YFT=%b+h+B zfl(v

$N1>(oj_xw6hTSu22iYX?VaohCa^*7p$PB6lHg*#hfkI+bmoxzl1selIb`+Pr(I2wTRHUvBn_p7_^qmtdPMBd4>Y( zCNchYMEwpT^3fl}STo3E-SqruSPN*Z+{+0nLYeya9D^YbUvd@>VMmB|uO0)0prdf< zY{9z)R}F9CkI!GWg^>PWV{H=4!5i$1z24&A_aRx?3h!?AgPj7-M}wP|_8$1w!&Nc`oi!KE0wT+gN$#75IZGm znq&!2+SFO^*N(QCTW0>ouPm_E)QP-n&iFP97BDTc|BJV75Yd>hl9E})*cEuIm4O@Z zLI$zE6foWL-?3+^*?2W8ifM{Tp0^P=H2L~tkWdf};9KcxfaH3f=DbPra#fk7{a0my|r;vqS(R(pK9wQYE+WOZt|g z)yJrZpyu+$B)(Ou(of;kFK_=H($7 z&Q5aJ+JE8HhaN&z;;yUsV@pgHNCQPVRWA!YxjS7kQz<}8t;W>@)fV*s+b}UHm7o$ui zENe#gj}M8Hp{%cQWUw_3Tc(0RHi^-yvK~@pHygSUBPZj`g)hh7#K%y^h`@O^%jn2i zeAgC8Zrnk#qq8w{SvdVL$2mr5#`BR*E7IQx@LHCDX5QO zucp9HD4Vj|(ypFoVu{yMAwEt_I7D0OGMPD-sC%zlw6t->z!8T-nh$ypQ2cuOdUJNZ zvx7qL>%!Q!5J~0l%=$WCDw2crtUC)WG{xLjC2ce5ov88z2HtEbdl>wPd~_M`Uhk1J zI89QyDwx_KxyUk#3y0ZH?oZ$;HWyxO+{X-iZe+m6Y9hyChd5$Dh9 z-2Vlx2tSzARYa}nk44t^qmS32dBu*46kRV@D!5N=-Zkz6j_CEo{myEv4=ikjF0W{K z)xah+0?mKN5X}M>pPe5M5)EUy6YG9>eMb+$Y!-er1NoUZ%++i*SnB8k}QP}}uD&OW|JTve-0y-ZHEZ#4ibg8O8 zqI=Kwc8OG^v-usKNN2aafag}KZhlT}!(}$IFTE^h|3mu!NgnP|Wg~(5dIR-nu;0q9 ze(7MVA17Ae3sYI=jMr@O=eGR;#D5tq)BmF98V9(PZhA49;~ss09Bu)5yAW!ULg7YuzTz5&x3VDE_E#23s4t`AhEUgL=lNoZnan{+*7p zZ%kQ+Jwr&p8^v&JpDj>^gN~0$DXcX8HQqQGFjN#Sop=>8I?I;=z@EqLYDZUp_-g?_ z*QQ~&9qqx;(}J58#DT@ZLOMkrRP`NpxU>=|G^j2@w)pvS3R@7mkgUA%nOV&v-M*PhxeJ%@~%~}Ep-Df^2`w^CIbbLuE?<0S*}Z((pT#y=To84 z!;*-@-QopG*<@LKV`QpF|rjUwm+RGEa1`2;FWaEII}So-OviDS4XQ-NB|0z#a+CC}B|#-*K{N72LAxK62~ z-0}TkIUxQq)c$iXg~z-hH`^XPxK~Eu6JsT9T=+wT`P^~=gF1S%_+3mgt$T-u=v%b$ zvOmu!xp#IHEu1gJUUYv@qQQMqy?o5|>#GM6JJm!3dV6(%0XJUt*>f9Zs~5KUW9yHX zSJvv8@Zx8K^Mq!wX~2r>ov6T>IA;$+=h;Z5$EEKF|AOW?peu_MdSA@t_%@f#|K~Bg zv<_0}IhX7*2H~IV_a6_t{@|C_I&tvm(M#Wn>S+J-2#9LLW;4r=le`TM^S!n^sxv3B zN}o>x1lliaWfeW_eW6{~1qN72r;+eLM+HySVdD#~6t`dHDQ&^{fqYkv$@o!3LuIB< z9}Y7w|LVVWW5q;f$dJCfx07_M4@DA>31Pl`F+m>LqskWTY0ru7_+RYCZq%i?oFBzXRk)=FmIZ~6=QUy< zLM>R_iL3_E`)6!$fX{+GR=g;voI2VZ^6=CqY$P z?8^}0<{HRJsp;t)!Nj+>x1LWE((drQrJDbi!I-=& znEIkny0<|P{c`)vgE;(+%=0VO6nkAoVypbi5c~r@x#I^1aRb9{bf{sydD5Gj&&;?f z0UXBD*w`r`%~eleZD*OzGFNE4gE_T;QPur!CAXDAt}!)a?hx#qm;4*`7A>R%QkQs$ zcc@#8P)XAx;{>uIf9Jfyv)MfE3)w>ce2Z68I41QD)?_EX43NWy^%NefUV=3MUVD#w zhkqB~-3os6A~`gD{1|X0`{Eio%%vLc?4a0>Cfqbb{O!-u4dId4rXuE79u{SxURnB7 zwsmH$izVFL66qcAr9@>%-brNe(AQV`SK<;dKLakl@H45kt85`-$p-oBa$(g^w2tj+-C?ydLXwv zh6yU{aFzioS8X;WmNM^VsR2WzT#hfdX^Ysa8l+O%w#Kz%mIThFHCyyf@Z{-@X1VG5 z+!$L#og`nlE%&T#c)*1f^33CzS#mQBf_>r+AE*y`D(_Z~Y74{LWe;2P^KQDrh(N7; zwXX+x?`*JN(Dt5HHkyxW4-`_o@0f4PSaganm)t>*rH_yIqs0ic5hMS^{Xo@zJCooV zIU@A=$#V)k5auxe17y->UD1jd!8OMscTRw#ePkqa8&5k*-8c7l7>DXjRIo~F7Bw9& z+~}NcOzOen>L>KY+J+AXHRXsJzJ{mhR?NYZ02tKR%kuPGb4i43J}d%leNrbM!EuYN zLuJeg?o1%g7dQPvWqm*^?E^hvgKLzHSHv=9_NvXR3-`91*`UvK%TK;d^u1=z!*&e# z)Tt*JqEat{@Ihp^bl(JMYzVuAj*nR}L46D3bV9>?pzn-YONhGwk||)1+1}tzj&9d^ z37_4bx<8GP5j+YzCVrj&Ky;`2eQpGNIBWbh1~uc}|1J)WT^jX1HsS%urCfkBZrS@I z^(3$JHLnc^wItJ}|lMq|Cb+l9#Q8`R~19L2Ug{>{jl6HVCS{MunKLK&o z2s+9c1_Z1W7rn`H;sZ%PK+>3CZeVnNeQ#Dy4cHv6E6MEc%;=6q7<%WW5g}HuKx4E+ z0w(vph*EZ5GN%};4Qx~-KDbg-0~M66*D-wQ%7K9&v8)PH!p5%y`m+RDXpXt~>^Nth z4#a8ohFkXs+m(ylpLQ1x136LhR9N$`mlA>G9B4xWU~aBh^=+|WC#Ij_ZmBYUsezyW zN`p@PLD1K!8s!mSF+Roz3U8USe4hAFr787%)b4wM6}OW~z#B}m$ks}jeTdBeigml+ z$4psD%iGqn^>|32JTdo*IE8(-{148MW*6x5>*dQ|J~r2+aL|u<$1FPmb$Ka^sV`Cb zhJJWh6H0O6=o^Kfs4>>ebGx8h+QHi3HnC9K1nNs<>ud8dNDBNtT5@uFDjDwUj@NUl9=L^F?0T>l` z5eClgosT$QnDHOeeclxeI$sFl($19PTx&h-WoujvHE6hK_%3RP`=Tm3tSD0{=zPYB zYtlN%no-p1D*?3vy20U#iCSoAXqH@nkXv21R76CCRrukTne*GI^Yf*sD1O~{n68lH zETxFhtLy%Wxw-G_IbK6+{i)BJoM|&{BSRtvR8vKo`Mtr-SdwkvwIl86?E_@r937MY z1EthRotiX^e9V+REU5@9`12GFS=4dm?a81wdmGe$b7Sqg1nwJ&@;~e9$YP`I-{?cc z>(OvDNz*jva;pbLqzW!Cs)i3aXc*q*-0{jw^Qoina%Kfbzd$0^KBpEG2p~U=A=U<= zCv}Jjfm$ao&8?d9j`6Hjh8O}q-8_#p$?||Y&QNSb*(M9 zDtEgMm4A6mGSn1#T4g(kOM*Gm0pYr?C+CWsA!{i+EpwhCeU|kwwRdo z{ls|8K8UhWkv=Og{X=pI#8K~$tC&w!$3)B8?rc~>xP-t0dNDtVKNMG=3$z}? zQKx>g9z(pY{@tk-$U|11nGVsE8yx$*Dc5gz8+DXQc|Vv#mccnTLc#9Rp2bYtEJT3S z2NPLoVVCBft}MNf`{pnCA~|O3lz|5^2znBQHviv-xaiYL&AE&BCa{Pv z9|{zNBgKbg2(APa`c!X}!otEx6r2uMz9^hc+qw5#uAiJxuzM>;T=_>HyyUXCOCrd6 z{1<)!_GZIx33EIQ9v;XR&z1{t^&FVc=v3N$!}}Cg57Tb)IOXoA0$f7_~^xF%I)K(pXVs7V${`G0WoGi@_IL< zPku4wI(MegsnLC=0n3(XwLhvY_KOR9p&?Z&VcbHXlsm6qmN<1y>hqT)&q1Io@1W6Y zbe+ICN;Tnq1`xWCnxEsPJ;18?idllhM-Qvw8t`=2iz@af^1mV_fp|%~MJUh4M*;4V zNdramBCogUNk>AL`sYzBU%^IkSUu144^mIu$YIlA-80$OQxfp(J@A`Z9^vnB?B}Xy z*JvI6H={be5k#Omk~8f+F6~RgO;!j8>guo8$@q=eS67oZZ6AFuk&ekmmTkn*r<0b+ zILP|=@$e0Uuy3jwUhBLsdFxVS*q$BhqG#JrV#mRE6Gz9ax^DZgZ_k$snx{Nl7AKUc z6%LgD%#rsmsf2E%7rs(T&%fnYzJBhIZX&b!{-s3{$z#WXED6BuFuBb^Y>S=J`Mh5U zuj})$-R8L@S-akZKQFyz^PCPGu=H%_(~Z_z2xKu(+T>qZIefAb7Oq>k=pQ<<1zjGG zWp-(QEr!2A&omRIVg+2dcR@SC^jx!M5?74a%6ISC{SL|71Jgo(nEi;FG%(@Y8b^CW z{|hA&7os0B@D!Qb-jqjW+I(og7i?sG?YLKzfwus^X!RyFIQEn;?6r~d^Nm7eX_wc0 zRLo$$3;`Lu2w^IWd=bcOmYt8zwZew33NQk~frYf@m6o7t52wEjEdRpO%N zINd-a{I2SyxZk=?Ja+5k%ziPNnf98n**>6q z1CA2IEUodoR%LC>z=P|O4XolFs8WDf@SI00$MsI5{>zVFYP*iKI77<^3bgXFq&!$t z`E^|vKMobDeYt$?6?vRf-Ql|Z%fBGvY$l_C*Ja!yzT7hG!AF7m2j*hlVg~d#_$${R zpGSOT!1#CgAs!yr@m(#n(g*w={(z0mLjo(pBDHg|sBH7_5Vyjc1?Cm2^FUX(s2eG< z=t>h4eE&zy#ZKLYx2Ki=Dq~hFZFp#gZN*%{dDI%kimR^p82K4fO-5u8B5U|9>Ojk2 zfQ1j%^T02PiHG#vDJ3ig*~$mr*Yz05@O-CH!>^SRhami&pQc@@q|%kC&PZ3}Zksmm zg}_7Zez(Q1p$#%*r5S;JavN^-&hm zRBo6?T({Evgl6TbZI~@5t|vkpwA-;eszAA9k|F*hwJ`dzpREs$AeYVc#ub%x@8eAF zlT`lxqwiT2Z29P1LQcU(Q6Fx;{ZrL?akV|7Kzii`V-0!k;5y(K&ws~6U*$2(D_R^iQ*)~~6_2Lm7Cc~die( zvgiRIKl19gO5L37eD`l%FV{su4a8LkuBtKWJVxNIM zbCtB2&NSRya&e5ZIKXl)i+J>!#lP03eCE<7LnxD`8Cj!2p>GRNpbRH-E@5_%YgWk1 z?@7A=Po-k4^b+3M4_l~<{0<`ad9~$)aqhQ{P9BRI|Ba?F@9{!{ zBf6D3{Y1PS`m;fKB;S64m(ONw{Jq1NYhD|ZQDaF>A z*B9<)#WRU{ZinFdZP;6h=@8m4l45p{t#3Q+k~6`{it&0Gs`t+MV`xMW(%itHuY@|++=ffgY%uc+MPKMKje07=l)qUd}%{5JEF0?szml{ zK5x&mlG<)iM$*y1-HqZ=YJqjY&sR*o6DGU2p`0Q1Kd4&`J9k?wEvu@|PfvY*rK_gv zbLFoO<$cc&+k5UZ5XTkSc9a#*C<41WDg4HrIGAk*_4reP`bvxmv6nMCdl;<8_hI+!YfwN99btaAiUqN(A)6hUvn|GEy2~=F?D=%!7B=5v;b8!Vfpy@0JLQMG#$BbUGTIeY1f9+!g)JI;lQWH_ib=#h+PQv9 zW<2Z6%i%n@YRG}7>&C`5ojBhT*$v#h|MpNSd7)xY^((ITiu!nE^rS6*h`&x|)G`+D z-8^W=%6^*=YLB-7{Zhkx#2R-jPmiwM^*Q&z9%14x%c37CpzbEOpgEz{W_&(|`n0^@DLg75aqoDh_Sn4__{Lkc!vt8s4i&E8bf=itX3=aix=vjQkhc36Q zkgWuPKYW%6GLmk%z@_;^9eky`i&dTMC$D@~dw(hQ`2QZIqAu&gX`i<>Ewhy&pXC}I z2ZeN^Ieou!d+1I?Eys}Hwjy!8ubGo>SB%H$?do9~(jR6t8-9bO4ZErH`Rdp;r%EwI z$b;sYRMx+6|GaRjkb-wB0s7`^=^CK5PR~{7G-{DJ;uM`pXO^#|gPkq(i>61UBs!=^ zm3s1Ty}gSm&l$}LaVG*HPf?a|lKSOgqW)VHjnVD~jRRg1PwhJosMTM>$9LCoF?Qq} zFT$Xtik4S3id?7YhDY~D)UPuTS`6MH_8lSi>9crpYlnZR*kMV|q*0!7nta>ic8_2C zMz5A=B+aXuD3<5_hJWF%T?x}{qE1sXCfjh3qGHIluVi2!N6^6+vB>%>0$gvAuah}a z=PX&9LK3n_rC*unUi>73E#fMN?$BH|QTHFFpWl)`tGLdvF0F*78@q;PRzF49ngC?wTzH%=60FC0O`l?a z^B{##)K0Q6<2!A@wKT9)g&nG+?;H@&qqO{(2igfZoVkdArEPJ+?Hyr+?NOuF7FJ+f?h6f|+RxM;(#0G-XdX z4xGY|hgmS~%lBbF2K?H5ui^Ii#;gkQaNx5d$g?U&y8a^5Z5OE{!sa!H&c&zUKdsbo z39-ewY`)CHV}RQ-43$f{3D0K+TwB6`yEc%B(S;aoxIt-+z4edhw(n|1rk}11LSp2}Zb%&5#-Tf*C)Ng!|&t*m{3Qbd>B5Hi^iq zT}$?Ra5WeIURk@l=;*W21wJ>~NHfy=D^YTi`C}BWa-wjxSybJ**U=uJaeYPH*$`dX zu-h`{yBM<3d^#^atdQzABT6)!Inx%&LhPaoMJw}Q{FwsS)aE9eE`b5*o{U4A2xE!RbQ|FZy-VefHU(T8l zBZY%F<;B;!1Vl-F7e^mLcupRF<5SKYjWT%Oj&8;8xTNZN>HUNaw( zr7-8KR~u5-3mV||^6D|0v)j@7Er&Nhcm9H}8S$!(b#Jda|7yVrLGP>IWv!?4sd{pV zc+rmX6<*vh7{)o$6WEFJP0mhpwJFS?*g$XmC=TSmWwM7!%(Uo5_Po?=8q!`t<;$Qf z32(aJNPqa`^rzW3spjRIC74)nNGVbAhyu$I`ekN4Ah7aYd%tl-YkY zf!BAG?&=A0ilw)zQ_nyEp$fKIexxxM&z9?YV(+z<@3nx1C2hCCoaqL5N^GwQZt;)r zqg#!*4C{NYR=(FJM@;SS^urCJ^39c<+swIw;pN{$?bSea0<~{#e*EK?K~v-%@18zC z1XQ2?gTEG+H;mIsnt$(UQLMM+$uM;neKEi0Yqceggiv%$r_0!OrkgVd(H&4Pr*m+& zzJ`-NgDxCsz(9qnF*qo_f2V0BJ4Yjv*!Ha@y1d!2R|LZG!;E%}zZ~Oz@ zfq7fa>Z4Xy$ED+OGX~#qwGSW`TCZjGqc4>^B<6O~)+n zb>%PznD_EQ5{HxVz(k%^Vc~QKH9B)o9O;b?oeV8+BLMZ4OAww**_^COaFzYQ2D~cS z7N~ACM95EXn{ga1QlXpe{VH9>zn?Gj z6F$u1AB`9iOZd4NZ0q70{%}-)HsHYqftUcJ;%rtq_^KHR^5UUu%A_-zU&7aca)!Mw z7ZFd*8j3O^?+baHB5})f7&(@uPtU75_GpevyVux>5id9D?lK+IzgQsUVUZ5vd+6p- z`1b&A2cSEeO&&Dz>;6k+^dent>^Z!vvprwtbVRfCL~!9RLVWsT77$0I*awWGLPy&Jw?VY0ujNKG66i9D zLlrR_s=}%RVbNZ6OAgP)^jompjELa(ZwS(WF842Ky?J~@FG-f?JNj&&dQiqUlI(vp zF8P^(XZ_MVe02~l3W;5=LtkPvtDnTbHKw)WNqG@Me*h~yzI?)5M zydQdN_HTs8S{xmBV}gG16prIsAq+PVW}{s)LINM^2sqwGq<)=Z*TT-c-sdYt*=nu% zOW;$M5pG6egltx~&rqP5J-*Vrfe+>kpfmo`jijnMR6qlV>Lc_K@sU|DaUEKF;Vj3# z>Yoh+{ijqoxq#OY&aA@haP^CEB_csHa)?JXyxQ{o0=DwEzuiiF(*XMxC1SYbG_@cs zbxs%2QCZ=C6_HIY@zTMhvL@wN8poMCWOiDk-VI6zs>@0%PeZc_H|<>;c^0*?DZ=8> zQ#4FTrF2VS0;c}exGh7*C7vNmJzmGqiQ%&=#)F5ir`j_t9$V49pEG2$J`GzYfH>8V z1atdLgi6B*hbPwrIIG~GS6O#5#BK3ySCImsLiZ=2m7N^4TZ}lur7@%nUo4URdrTcZ z>Vat5j#fDF{8QlbeNWKhUH@(vg0+l=3C|Z4VZ4vE&EH0j8s4gukB~vbm6@ z(CmJ=$vjerAQ@pkr64q#L0*!*Sq4qZ9d0Gr*unDhiyWx{CUv_SMN?UXrROK2qGfzOL7@a zWZDEtu4*m;=TncCpEZ!@O_s0sei*;Pl@o6be8bp4)(V!-&TN*!@YI9Bm~$GeU?=UW zHDtw(2xKUclN(Mf^HP&47oT0%AGk5~<$$b9;)&wD@S<25d4X1G8gjvf^fAZNj+Q|M z%>-cH+nLNrQ-{>NV?o=u*9@4n{ZM%t==bqm$iugR?z#zh3nhaa$@XseB!J9kN--lO zC+vaKf93VGn3a^IY%>>%9%jPtR*HKEvBPtzb6iGNPS=%dffOHke=!>4oGcEZL-=?21Bb3b!b(q z7~AIM0AQldF>+2_pe8kSZo>lJnU%Gd@7ahT7oUl!c_b?NGV4i{S;K-Z`?XzmM38}X zMNIl&J%nfFz>!j1uL!%}6RG{3V;q~ccyU#-YHowqlhWHDU{&pM<*>ceEQc2TyX}UM&f+1=uLWE8s)ssPJoHapu zbT&3}CVgf5y5)3_@QkpDLYOwieZYe zUEMk!b@s>qNPob<1D$!Z^D4uM-13zGa;`$8M?JqD!xNL!ba|5rY&|7U#<8)9CvHQ! z;OqPn>qU@Cr+ZD;U?&X$Z0lMLBlN?JU>|6@Y^4Vj#>Sfu*vT3=HT4X=Gh61nC2Naj zri@hdmNIbjV?S^$B=(^;@H*+>mg`M%=jG|YG2!`S_3CnbOOx8^81d=~m?$a+R2t(X zQkv>LZoIv8z5(V7V6dK_0y5MtF( zl0i>ik|#mfC&}7HEE9b}Q6mJ9s~pUe&%{-{QMi%-_U4#@E3sJ4u42L>lJ{d%BJ)hK zQ)5rW?3Cqv@Ah~n^>pUhb%7TFRq^c6AGz25S{463&+`KT70oItHu(PKwdlGO_Nl)eDRY=bv7E&zp4^8lC-gA6n_7(1 zKZBUcWh{G#>UKwSdE#qZfp+WkJAtps29eEIp^5>mLQ+h@ZFO~CTlD%0BTYW^ttQ?I zNMbqM%HvAJwRy`jUH5@hm3)_q@0@$7;q$29%kA>?q(81$O#Z+oeR&?eN}BG@ho~NB zs>|)~<*?6uKTn--jrUl7YhQIP1tZ)rUBj-H^Yq%oT(8t2iOtk_)HGNb0elhyu%^xS z@d=j!nQ9Qx-4Z$!vhsnWfZw%XsBYODI5Gd$-DEb78E^^X83`3PKm~_>sT)h0qUXa4 z#nH(dbN`0{vY=7uLUUT%i`K|EpNt=<@r2?n_sn@t?GyQJ2e5u!SqpmIb^I!C=5EfI zHPdWHsr}Z>Ee>~X#G*;=Frw2lHSieDK4D}HE=-@tRsHdEp}8_qZ#5-62^0u!@Gn?> ze6eH29wUgzGEk2O5WN3DZ@RIn4NQ`&e?xG`28uY{z?>Ag=ZwFwjVaK$E7Wz6In`vn zo5UN!TQq6KJ}Y#bcS3X&?j}`N|Feqj9ye9q=c^4K5?(!HnQ z{aXndsd9Sybj`Kh-h7Ev`?@VW zZh*$r>oB?^Qp25;7H@T|eE%P}cJK@WQE63}=<;;NOOv#w6 zH?naT6js@;4c#vV3mO-t!uHK;hi89^ZK?W7vgh@Mx@6?c2Yz_#V>+haLG%$}Dg9-|pkpdhAVZBz{72{Ln+}@A&>erIEfHA_HPO-enCmBgQ#ZjOx?jpITu>3XXCKM_dRlf-_+Q z0(t%VUzLK-Kly+^XVh zAA%fVThw;9d5r$TXKQ3AYs>#lF(R5d!Ul{V!TFKRCj9Lm^Wi7WXgzMS7O>i3+P8@q zBZL}!kGIzJoKE1GEstwHfL-qp5zGKeB8nu~LE>f~P|XZ@NR1zv+jPt1ZK6kk({`1k z!LZP)C#+0;k^Jo*EqIo$Y|EXHqht0Jo)Ifp(@j2_8u9RO3=Y|Rri+LIfhv0z-;E$@6-`89-raYPfv{kM7-DSC}Evki|+YruA_kV(N2##UdJxpoHWAe$vvjp=R_`T%~ zq*mFj>{W1v#$q|$=rjB{+IY}S?OuIzG#DVy2i6xbHN^(0RNJMB3>&Tx-hAWl8*@om zqASYRBcggA+ag|{heBM&s;xQmk9d93#7v=4H{cw42?XDBylI!(_svOu1qw@JD3Ut^W zCOiT)e>J;tp^I@nbZ}iz%xkg~Mi@v4xxQQrbhOmq=xb3sx@q_5-F#hv2{P=cyyEQN zjl#p`%-gCD5VxTQr(`nPn5APjH_N9JAr&txC}(%HZ$z;=hbu9|w2hA>uKsvcUDh`F zCc&2ykNF$1CjDokFu?CZL))T$jn`LrrjEFFw(59p>*rHzdDea12@`BzsQEmVR-8T} zi7AAX;nfjH@guX&>Ef#*@{Wp@*6Ah1TZ@8?jm4S`Or@KHtL16Te9!rjra0;pZZ6PG zBW2O*!{_=wgCc3R7ewNVd~GG92(oSc zw~Z6-%bRO=au^=*-AVd8M$p#Y9E9$4a=^|G{$>7*N8QV2`ssWTZrwBSi@S%U6i-a& zj7#g0rgYkvm7c(&nH;{qLP}G2-0bE*4w&(opKI}uje|PXaQ4w>e@w2UUq6DHM`OK8 zqOhUF2W%_<{Hluf!i#G?WMu=0m9*@A%fk=_Rut&bzdt7sK;O4pK~Zhv8E)Go8oS*uA{Q_P%N5w;Z4V!ko(g| zLwo`8f822DuW^#uOxpQaZ22!9gAU#PHhH?GT@pI+@3lO1)zq})k8bg0+Fz~i@M$HT zO3rW!Ty?O<;NY&5Ts{{v4)1(bKHMB@Ud`(kzjl_)(NhYnU?q=UMcA)tM03%NeWn)J zdU@A!Q9)2m+?Cq~yZ#+3)k@2&3$U5#J**5};&w&f)%=sSL~^HGqgP}sd0l{$dXEMf zT}2w-y1BA@b3SIdP&9DeoLs!UOsk zFqJvGlgPnF(}kM$&0do&NpW2$n;QF2oIkYXLsa!A9<( ziBykk(%Y27n2Z!wwHYDjW^lG~YEX>><1e#ruTp8m<^5l7R1-O5UD<7wfdwk?7b3D_wO^oP=m{a7hG1Q5anQY&GQ$IEoGSq)jXfPE?r+*Q}f$6tCG3=T{9lqbFxDv3a-s^^}2W3Q6YwcmekI4IJeQ z3(w!)%>~$3-^T&Q=(nH2E60&UDOvLz)AwbvX4^kKf+;^`G21lfJ?Q&={HB92}-2S1KtI-@s3ej)3#*mJx6j-ApVRAyO|+!U7~=CR_3` zU;2B#ps6indPBLm7dL7stTr8*n<_oM5 z@-?n?PA7C%!*8;Qy5i560HG`(@1J^w?t>F(rf8-n=8e4m!}%O`xBO%Qk6Nz{WqNUM z!ty7hSegabx=(+R7#o^Q5{U9e2_4#@V?=tdosQ;>$T`7}L&9mBA&$Iuh$?g!?&BNq>X~Dp%QI{ro@T!1(j9J&#H@6=U1W z^7h+%%}Tc+{w;K&Wu`=X(4=25*b7Ky9J6kROvp_%m5me5)Sf=#8t3~wepgavCt9o0 zkoqH+H(d&aB3rQ7$OqRi#2BYBtHL6qHR`lF;SQtGv%g%)87HT*YX@ay%ajpLPhCR&SK54geAJB0qGL#9LnKRw%NvxwVK*9&^Q|(XwOV>IsO);Ci8WK|`B!n;7Fd7J(ri8$E&;e78btzw6oL!pCF7PGCj}*72Q*aoZh&72vDVYPXZii{BaqXAeS})z>NSd`LF&_19Vmh4h4@(VP(wmKFfDB-DW*0SqEJx~YN?O&# zOB(+9-!2?R?^t0!^Eh2Oat4v-KS*?hS;U4lq0xKLG$!UPJs2>Qv;<5xL^{@sf?o-2~E|A5rR@&yc7LpbqUB;;? zz$RxN)eaeuAVo$B+@@;2U(D(11)(|7>LQqM+5>f%)(hu;m{#HJBJN%*LZ$S+oQiC85sgWoS{RH$S;{n-<_!=Js zk)%+7hjUv-iTU7n-pkUmQVvl&nooq=`PEWA8oA@9Fjae1H8d?&p19<8eK%>werp8dA%WLlJ*&kF9u}46AxN z=u*Vft&``s=adpFAw_o6t+HTuU}ljn^LK}(be!*9MSv=F+BrNPYr&p8aTp;(68>Hy z7gAVW_Vt*P>R;1v7U}3>3Knd^t!*4HKJx0zAN8CF%VDr|!^uTaL2s{RjqCBzI`tPZAn~{dpGoeuTwd{SjYLdR zdA0Z0ICrnqBzz-y#AHSh5k~(xNLNaq`~t?V2ox0A-tPJvbb%M}sRU$Ov_pcjaY!So z`<&fRdcvq++M96tt?IEvqM2Sz{QZ5K*3+Ni^IJNVUj-5x@TI;VHj_xH8{kZ_Z~mR- z(==?3{H^;Fu+FbioE}@#kf7trx$85()LnH>eW#4#0_YTnV}9Tdn)?W1{D{Qi8X zu1w1TeY>Ljqkixhuac(Bp!ZHgLZ?3N*+3iMo6CViA{bM_{~7h*z0?5sZI=kTQ@@zK zyf1{9PVXZP{q!{2ofZiHXk68iL=r==iYQ$f`n&(@pZ|GZ*d16u&{0x7*wo*;_>jf? zlP>BLZNtY6(vMpcD|_|#|E$?tF&;2D%V%#!T33%fQcNoU{oC&MPI;<;Y4}Cd$xA7c z?#R9unJedfsU1ZCJMhtVGRfv>%0*}YYpr(1s)N3<94hJTUPIRM&16r$%#a#zQ;kvD z>sTTUz73<0cpX zZmX=bcBITR4FG{Gj-gRC@k1*$Op00ok3E#Kh8pj@ye;LWenoZ8xYr>k0pB?gkH~}oGPAq_eVM6h-^^US@W{jc!}-d;@^W{ zV#oAqh3xkp5eybdXT9C=C^@_21FFS?ZN~1*vy(fczi?WAn8P)s9tGKsZ1eCre;^k* z!oOfZgm`{HCE2O2cuV6e2X97MS0-MsJ{U3b3K|hoN=qv_KHG2P|59XxVYgexZ~T3; z{Tlfe8}I>sL-9h2%fw$!hxiktm_Dp~$hQluhBUzD<{D2!4SP0->p#e2WK`%QA9=jS zWZy~RsviI%j*N==2EuEkcqTPB$P!?RJswXmj-C@(2my@3$Zmt$UdV~yPxdB`(zl_U zUmy=;I7^Om)iZ4F2(fP5a<;yYS=riR3(mRBQ~W?EoZLdTyit%XM@Uy}dzQ>)sO+HQ z)otu3HY!&I?QCy17`VB4_xR;|ubZOe$LI&-4zr?>2k|bYZ4K<&--EDQUIKDZQErm^ zQy-to6r-U_;oKi!J+jg_qMygPWNmA7Or>zFA%ij5r_a^=)9{?(1U+z7l>P;7Sr~-R zQLjjXgLPb_X4F*UG_ElwJY>9@1TduooCBC51srYy( ztb6v#`PJd9N(phaxi;CIk&W%0w3C+EHn`>Xz_feY&gzmMr;JL#ii|>jVXh1;U~si~ z#uZ@Iv*C8(<fs}am?B&g;L_9&9q&?5BANO+kd z0k&?wypv_xLVt=UR^gP=96O>95kl8a<59lA&!agukCl?Z@4Q``96<_hur|QKK@PFt z>Ju)=UQG?^j>bO%~ipMY!lWom?tIL~6K5wL>+Hm#w}B9l+~fzriC1r_#?`|@WGo!YAPiW4 z*PBCK!SYT`%6v##$?xr^{U93D;Ko?AbDhnw~(-5toaNC>LQj*s+$ zJccNo`PTwHi+(jjC|XViK28soWHtFY z<-Dux`Yy;cSuX{7f*+x~%(H9pRepo{8yJkjip$;#VpvaRe+9nM--%|2{5k!QxmToH zw&+;`vTb3{i$?BoU0(@Wk}u;vux9>NvbJw|qI2j*{gO24~NSBJlbE+5>~L>mccmz6>SG zFJ2nw8GziKskG>p8H#lv@V|Ia1)EzY>7N;By@daeu_b|rD0J8xJ9Sg-r}!49lRq#u z#kkxx)YH>_u7XbQsC5y|4i1+MTlJN#fs0+X9h**{5X^M_llLHspd3m0oTL1~%~u=@ zu5=_0#ou4A=YJPa7<&PU?M&~OGUsmy@`><$y+-(*q z=r5l}g25f#->n?uyzf9e~&O7q6DJY{rOZVtxw zFtPRNtIs4-=lt7%JVs%sBjuKOf6ENdF0kOCaje=QJ%Vl-4SBnvG*5yMjbQR)FMTLN zq$#7Tf?m;yp@k=vR+OQ}KYr9DKrl?>dpUqkH0-|NEvm1ihHOVBpC&!w`W@lHCo==*AHywDeC#!|s-Qh%oilpfqHD?vZ+2*~xGc;C!TO>YSQwqb~_6 zb0Ca-YMlk#V0EZaq~(W)1$d|-_TkMxaNMM5w!pSaea7lF777uLam(GguR81mVRlw) z!MTIS!=A_Qi?-C1D-V}{HavHkD(-mV?=q-;1P^eF&GrOVbSyYF-qFf!PxVRKlx0ew zUgJ?26Yf?{A#f%lW- z8JGrvPZ?#wfbCEEg|8e}L*QXORVHb=I-R~ilVpV6<#p>2kLB*AvM={;*t{kJv#x`{C4s;U_fC}K2>vbEUTs18Hy z6TU2j^jMvqhI5qfiZ*~3X->xM#;~%!JQG1-t$3U&_`QdO$E{jg98b(AW}rbSQ!o^(PDJ6&rTk-lM_EmWpBgV zWA)@{)2z#RJ2Ed91n+Ov*tm8hS0NXxY@xb(xLWG^Z#8y`oV|sltaNLGHqE-J3?%({ zBv7{Pt*A3zI1l}9PnqV3DtgFbP*5*>w4EpPS$FQDWVb$qH zo@@7X;VB#-JONn-ME6#|mEUZ`gQ)TEL&I(%*@fmWHSHc-14sRZ>9c|@=j{KH&Zj_s7Qw!Sixk&&tC@F|J#tmg}e=wzvjkd&!mzHxcEoaJHD z-9ls|F{a?|c4S53s(Ti5F&#Rje)#WbRU!ZeT7hQnKaAXCd0i3V zBK|m;5)5-O7|3ZIb!fLkue(JvAQ@Adu%Z)oUc=!D5CA$W-;uI~QdU18V!AW;R$r8^}Zn-vjvM@Nvodk*s#Rj`rRn=b{pBgmss7Vb46 zlKW3G>N$8$x<_z_-roZQ z1GRyd?5NY{)Eb{&ohRY|rL-vEhwO2dHEmK5!ohb{Y?ch?#dCFZ)s*I51TQpW(()~r z5At$zkDi&u^-Cc&pI8^kdzLKk9H71P-0knC+S;o6tr1m?y}B_(aKqk&uTDKtCt(3g zy(ga(XlO*=H2kKAA zj`41C@r~i-9(l)&1kw%hMK3@ChO6Y)Dv|Gy|IUkSEm(_xQ<9hDBCPctfiMN^fhu=~2(p88IMK{}%qIHH1-u4nIab1U|EKNI>Y8HN_+2H+e7m6RI>SI2HSk&@uc zNGGoWfo>T{P`RLuP!;=5OWkCzs1#Za9Mu>M$G02Wyk$9$7B2cx%bi59Lm(h`sw&zw zSL(jFqj0VR?0^2Zs^gImWF2x1DK5L?KP!NC>*G&Re@6>0Jz%q{T)hxgom;G6u>}J` z(fej6psS2W;;_&owR!$0C<%)GcK;*Juuu< zMh0F~%x*((!w}4TiWdm3Ml;$FGU2!13b%S%z=MvJc}KGVjMYt5BDLvz6l!AsTbX48 zzQCI@wdryEWTIn|Anhx}L3MCy9JT}6tc~7j#;7+PNnfEynoR9~)G~+M1Usc8!fVFU zSM_kAIY1}u=|D6RRMiNPUJ-#zoPiHztlnt!r@#QPd(eWLoW9wwn!!#i6hWxSYD0zv zx*+z()4fxj76LZSx`D{&;TFZAsXFquhSG-VFWz6yEoX9H+pHmXz`|HX zDW+4h<)VY&5u`TcTY4cfzUsT9($3=e)B5ea>tau6tCw1oeHneZef=M~6?MSMA`i%r zQz>fno&;)jIHfz#r&Anaa`voSPjL8ofdTZ@PI*BjeWA#wRh!+;$N=OKvf`N?GaVF}2ye)V55G<1gTIAd=e9C)s8Fa%n-R_l)s(GDK)M1Dw^y1?(n zKlpJqWgR}=AVpI+ahtj4@K*T7y8G48TITi3c039Zno7!3?RQL0cs0)=&*=khqN)EB z&8PX6cb7XCIkY(@wq;yyxpNw5rLD}T10~Na4-l1pI2r9G{3b>v@B5ZtUh>S)!nq*b z=MhhYca?-!+7#B@YQQu+6OwtbzKFW0bYDh0X6}()K0uGkY zQO!7tj3-s$HxK8Db&2mf-i(_p54soeZbikhimmDRY&%#rF=Uv&o!sxrkgbL zb?LmQ`T`;&7bnn4Sw)bZ{|plVVLKOQ=#Df5zwI7f!$(9=cv#WjF@FL?1P~~+JnwW# z;wWq59U)M2ldru$pgs?S|EVM~orMdiZm;NE{{IUa)Z6Lr&4Ij>SW|iXIHoZ!6QWSG zBEqdfBcNILGK}Hs%HD4N8g}PI;^Hm@{um;|Nf{)Y2e{ujYl@bfl9QGQ)KMFX@Xztt zNd@%BhS#IR8wCc9?s`}nB9sOD_aD>&LacY7*V!2w9`f6f@+E>wXQF3Gm=k@Y%S5PO zKet}JL-q8K-#7)MX^IOf}YD?}Tm8;%wO$^t6eVwFU>giT%Lo*HG zUwPIlpa_qDSHm7Gig2PwjT?`;AKq%u&3)u40@xba)?&d>b_vROB(VILx1LAwvu6Gb zWN_$pf+D_0%%c(9b2*=~F4)2T^h8{9T5Dv2qJ>!V4{5cwzGfgwcKl|5G=c>%nf{iU zE`RT!Zl%ojzBFK#unlDS8GdV7rBRdaOA*hY(u>l4!z^C{*{SQ*A62q0AH%Jzr*XB> zdN*wcmvgAai<6WU@tyV zH!JUL4vkv&*xw3PQeE+A6^NJDBAYOkC2V*nj#p&HW&z!KOxrYLy714J1<1V6u|uE= zZtcc>*gBZj;Pt~X@Hwl|Vy?vd>1yBJ7{TpWd=@9tP&mqLClyw<+GsMtF`n)&R2?@_&c!kW)6Qg-oVmE3&w)B|B$O~*$- znn@EN>nFWuf_OS7C75s*b*DM)xk}nHQ1f(DoYRw6wHMI`6LpT=uru_(M-0-+r0H9- z`L0j0tGP~2hPQW^3!OAFqw4;}%Tojb(JIeEV_s)Ja@?MpLV{;}eZi0OVe{O0T<~bA zm}R&9?V}imI|6qz^htd^o7FS==)3_7hst(O-}~{N&X3>^EeS17OQ2L^o~tTgJT~a< z42@XRhE5x7bx@Jn^pg9^@ZGBNJ+$~supxsKH*}b>&oomqrQG0u2lW-9>=!3~(ww}g zqR;r1Ygel%m>r_99vb*7k@?kno?dTHm8j-^qlepZ3nAu)k!gG-zsOu4AY`BO^6uV7 z@EEPsC(5nstZ!#x#Nme5CzbxGLd*q8xuEQGyq7dxW@_>4&r|ufHQLjTDGXe2yYKA` z5pA-F3-`WewB|zrjQJWBg7%1Gv0|?fi56N~woD?z>b@9ivf406T=fu^0)j$VW@knI z-3ATYh+~4i+VpaFWFaKBN4o^ogl+x!;~65^$8}zIkc@B?OEh&27HCU3KQZH{gLl+01Y$%avyoiN0X&JE{}dY6h+fA30Oy zp{(4667V6ho^B+o&fx3{7`_S~C*cJ;kg$~=O)+c&OnA)|A70oTsynP-Nw-Eupsl}f zC2T+~)Sm=38%H#mtqA3PTM(R+{_<`0sdaW_8RLbr5T>35Gn>EKxfQQ3;7y`Oo3@yC zJ1s%4O9d^BwC%Rxn?4brnJX9>!1MZZEBwXm7{{ozA|n86tmgrAnDqz;&n?uQ)|mRB zGxdzK!78QchDsVMdO~tTCFNOgBK(W#PD7*R`}r}?-*c}dmTXnNFtO#QyjSG+9?Y<` zU$XTaaer2{HL?k(md7MdU6)#=BL@*V()D(suk~8+D4lIPjwXt95IecOR&Ujx3NCB{rcpIqlL@!_{ zEXCsWzZ^@1*?95XC!Hzm%bcJPSFxKK1qBg1y!|%G?ElRI%*uYzX{*t0T+0E+W1K}dG;B z$Fl-~?JO{!&bjnpP74!NU1{g`O27Jp&MJBm3nWK47{MCq(^{j`MyCa^;5`oc!90DW z(H-Vr17FS``-YLO$!ijLIfFzaXX6$i{o}|(i8COX zf9KHb8lX3l(+Lz*wjiwo)WuZ1>?ZE%S@{Ozuk)^Q9MGkiG#U)5@7^SZBQTGJ{&g7S z_E3y4A1eSM_!-9jSt!@j%p4{8+rK;U!gZ~3c23IdU!zlJQv-eNVX^2 zK;t#wC*s3kT`SuPIxju@)SuBA=8OAcvZIHxBRhhe2_&a0_!|J=S{?>defG`Wvoooq zEe2hv`95NY4P6aUQ1TV^T;b)77jDKk;@99W#piH7+E4P~*+w`xEVNj&@=Si2u6>~L zzZHL_+G9*ztKx|y^ncy)aONIVKpP7V4{WOZ*ph)1 z&BXv&DLcz3eh%lTYXHc;DUjs7FT$u=#@7XWVwb(I}-q}U}vXx4m%o# z)vxA#qOjZ-Y~+QrH%kgQ?!UiX>zEX&6LVv@qB=(3+=_SRe)IK<5TwOk?A*KZUkS=I zPny+$X_K{)qQm?ISg>Ml;I;b+y$s3>#T^DC%Jn+!rkQsyBbcQ&7GT)vpgzeJb3-2; z2hT7|=)R2d$n*Lvpk9*uOtL5VpwmS)kL%&DCx~a^4vXmZAjH&oR)XSOtzWY92*2jH z8y6d&w${(zRf|v8i_{lkBDou8&T&yTl-3lbdmE7;9~knvRAx&FfY6Q&044P{A5SdM z*pMc`C36~g3pyD=3oY?(TuuX!*pVaDVrzhP7&%skJgbTbZs9LJNr&BSjwF&)LQIw< zH$#V?4?uoC*l#9UChZ%`R!pV(GT7JBVgEXM4h`M)5x4c2>ze0bbrVHtXo3O|@Wj%qpr%94@f*9t;M7n4ubjGvqEZnTJa3r*ekaENP0P zr(pa@@!=Jod6s#%1*L7%kRoz(=e;38sW$#ys$JP#gFdDfWlMXB35q{WD)gsxm((k{F)L^E^8 z{lO~jGkkt*Q2PD;qDRv3+@9}2myKz+qMr9 zTCAfLcd9(a^Za85s=KrVlk^FxT77fbSd)>(yCvL`qq|RsXgwl&qB4J-?A(}0j(&oJ z$d(M++K-bBd$cEH|1O-KXNn2Gf5vmj5v>4_ynB4I8TeM@>m%LJAwq>x%4B(cBg@f0 zNr~yXB8=`bM0^^nr4lMP^o%WLctv`njBf!*9mTQ}34-otw4eFTQ`uX{vyv_}4x!gL zb7%PbD$cLmc_05;6g&Je3n{y_+&;2?V1L|5gk?gsKI1LIpW?ZTsh9?iJ2YELkU2!b zw&blRe;(KEU5)Y$9#sx;Y7!C#2;G=uC+gwO*r&QZkrzsj8nJ&L91bc0p+=AFRLKrHAYG7bh_0UC#cN$5qhe6G%Om}zEl1w-bOZr?M~CpiTdoo}q0 zMTu1l;vM=-k)+5>Ut`_nBQUS`1>0$)&=P2C>y@?gk^5nS&4I82ekeyCyY#EWe6pF> z-~u)xd#ja$T!6WfFLlr~LVYiw6CdRzbt9b9&8Oas33BcrqhE+*@lqb<95b)(<$tpr zjOTUyZ%h(3bW;$Y+fnk-Pg$r9Rz$O-lZUgSBFpfrYt~x7ICEKaIdjD1RBMM^-T8ii zqulC?U^T3Fj0Y~?+zuz^6Q$;!=`k$EpW)LUC_!>#Pb3BXrb-3Bc%T*{qj{nNS)ttH z?R{&960hZ%@)Cm>jM^+gZo$*N3x54M0j~ht$WCzkzAUecN!D@l09%H;l$8q%^Bbn& z{fO>}*8c8gX(5LGA*?uOJB4S%Zc~L8aMt~=N5fQEJoHN>s?1{U-o82p0U^M!Um@@A z@t2s;FcOaojfk&Ts#=ztJQM&1)SfB!qK3hSVZ}PjT^0|YYxM;en{daK>R_F_uikIa zHi;$5tJeSd0paNr-SC*@bXHG)I$#?w?-?ra<2^J$9Mvkcn&vX+dnO_~TE-R-pg+jWnY zAC1Zv>PmB_G&d!95$6k9qiqbM^_#|*1J?UV!Ge8o6x~ByS;kD2G5q|Or8#YYa25)J z)yd~=fB&r|Pxn7oqKixLoqXD&%9pOY;u8;;PnfJ!UWiy39pXy9jXZ_)to(*(9LOq@o(*k3K1LJXu#>fwrjY#(%%gfsF|YV?DNOGTD-Ul{ImZz*Is z>+v;ff1Z;P*>KDc*NVtf^n>oV|M%B()AT<2kVGV=Yw--%qAt+4PTVL}RN&kH`+8GZ znS+|D>=T0!45BP0M)L?c8p<~I?=lkdx-`(@>yi8X5K==#*`+4S2)$x%MZs@{%6f@ z#Y9-Ys?-&ygbQ*)bI?04VDdR9i#d$N_qpOUwYxWU%#YgTEI9dP*@FKVfDM28p83Y4 zDF7K_^C(+_oiN&!PT#H>n%nL5nl-?~`pr!yNb%#`RgraHw>?x3mB(yi`Q}%vsP_n; z_|p%K+MRQO$Db_oYL*EN>06!JYf$FAwEnLr0XL-3`*}QPz=j?`PS7@)5M)0`o`IhJ z7t03UA*s>HC{(l)K^&e)3F=+reU-M87egg;-^wajvY#4R&4n7rO1&hLYWgJ!7TbK| z(E(Q4RVCva)es#U4*lexjhtf@#wuVg`PDcagys)+8|au8S{=oeSo%BX=n{)@VeCi6zX=Rlph*-uDt(M zJZE(FCR0tf7_e2OI92wgoE&4glE+{VW|9{{)K;bhhvf4Uklw!+Q60k&voAs$UV?3$ zfsT={6&_0h+jwq^w>gc?_?&pd=Zpu#N>B-*2PC>6evPm;b)_88DK{IKI15h1F)uq$ zd>9u>F3DjM?L=xrz{Daxq1X0PjXIg|oKS)=%j=UXVA~y!RH|{!>g#4UJ4^rd6I>94 zBC_Ya17FR(30`niU-{{uhL~6poe?80rZRocxbuX&Od&5hKMP4VwT=RQ3U_p-nGc^2 zu&O)&Sw(t^?)Auzs~pB&uiks2hIoc!uu6O?zH34JWn8-}?qvAkSe%8}pZmE5AA#D1 zU!aus{**k>lBj+(NPGIr7*UI@L9SJGKI9t0?=7(i-q{9L2zIZfm?jqGjJU?*dt-gy zXwr$O)1bY3GPJX38pme5fPr82#gCF)aww{<9*ceV6aFlPY3?4Vt+b&Vi|3$?*d`QB z%HA?FLA23sdH5`YxcovQ6OX+hZ~fuiUV1V82k7}A^?+!cuAJ5d-UNYXdGNI}xWt4W zK0VN9`+$#Z_!s*EQ!LoIHd)zMCQ4yg@SA{Z4;w)^>0eTM8%I3VsGwVI#P6M!mzyZpsEJZtO1e&2@NMHb45R7^F3spyGZ7lV41nzzuO<&HcImh9 z(q>e4!}9nEMvU!K>C8YP{g+SjJpxs9g@BuelLi_#>El+kZW`}k>s+4_5aAA?lU{#5 z4`*2}OnaCy*E0I`I`q}}-LLDw5}6^x>h3|gQVhg{wVE_!xxOQQ_t9Coj+T@W4eKZGBw6l zF6+-*`89Y7At47$hanzdU(M!%=<~dmmD2LnxhPo4gn5gBH2@rstQXIv7yO0yZl`;A z#bjf442O)O#8c$+M4vrtwr4!**atOpa)wHl7ugdo9CgbSeTs!fNK05a8{++>c0F4o7xJj4qx1%0_sPb5 z@Dx@O7H(*1c%LroUjQ7Sg8xi9l6h?|ew7}dg38!C#yGN`O|y$%6i5}P5qA!uB`LEz0!m3|x{9}3NV0sSJZ({L@f_}=28a}6>l6Ba*~>nJ^7*nD zTJcZ0(hyqRX?pKw@hTAdQWSS#SE&5DmAL1kj5hGfopgtZZ+o7pIU4lJSfs!b&G>NHDseJa1-;ogJ7PRMfLwvLHYV zlTZIw9Znq*N5mw~e!AnGpQ^qS5uIM*t`^fbxEV*nauB#!rgb`G4oV-Z6)+h8Br(>+ zPW?P}eHoZElA%x}HyLMU@V>ZJ2flQ=z0>TKVv*GSLRU(nd7c0RXj4Z_FQsV=-pJ<} z7LC+y=W*fZHQw^tk7>tuPzeTgKM<)_kXIjq{#QiIf)ypHytYYgQ`Lzn?`~6t6K^e^ zHD&IJYm4w5Yl_GWR&1=E$V2!@A^O4aS#QWvN|EZ0A?nZwgn8%bq6-6 zy!&V@>LoeCPQnjrH3$XP=Hl?A#aGQ~&*gu_MF5v!L?_|pEiavBys->rQq*`m0cx}0 zJ@>4N;9iJd@TG$Jt3YLzXVZ+(r>!JgzdXjL_%03(j1Vb?dZL-%4#Z8`_dl|L3X(uR zO_IK9hC%A_>S<*=pJjePj(c^L&zIoOfb=*8+3;^c2h2ttWI99r3=Z>T@d^ZGxEaziZ$@A&@j z-(G8Z^WmIgEShvM(fB$R4oUbce3sv%7?z9DC^1Q*Hb8`ZNnDNhcxzV09h-Zk3HS@~ zDZZ}+<`>onX%{~X>8lthEcGr!j?5+H~M`mq79JuUXO&z+5CU}@}z@tKp z?+F-8a-L3{N38rsGr!E7;6>P>Qbwcv*bz2qnd#6qK=R!ArNH$=m+VaAdsJe74NFl! zg@p*ShFBM>y6c$>UxVrk(Za8$|AhaXm1-5HZRTjzN81s}b&>ur~Gy>KEavnt2F0vQ!j_*qacLcU}x(5a*tXN27+sfZI zp$$`h3Px6Ze}?!tKNPi7##~|=krybZ=GXD3ue9O2s}gHQZbSM^^cTUiGYZ3V_SC)) zFN$eJBFownI7!P)-o)ak;q?kE9uk{si7>JVp;rA~%!TS=4)13C4$A0WHBUcAQ@D61 zSobIYmRu3%T4AVQ$ve_RrQ;DRat2}|UVlImhNr30;G~@~4-^QHIGg*|;MD-1m(n;Phi(q+_c-7&6C*=4|uIo;#@0r8x zlbt5&9CoY6PD8bzt+;G;4Wdg47PbeWw@*WwBXs)Sla^4%dJ{+JpCs^{#I6$5Sqt`- zVlS525Z`^dB^3(Xwm)cAsIrT9F%KS4%3>Aiq1V?ee9tqy>Qq}I&A{W%c@-p(n<+rX zd<^VSa)t#r{SyHz*|tmwQG})Jx<52J=)Xu;G!L9TnAB?HK(sYN$(~Zoj zvwv+UFZPP|-o(G@xwPhgXyQyK+;A=Z^Sk0c#k>2fT_wuzJxf!P!P)UGe$AI6F^^FW zX^u{;?>fhij**H_GzYh?v5+%JAPkil+PSMQ#qYs_9TO zC+HZ)+cRA7H4>>(C~$sdLYko$A08|UoPkN0+&qm(=G@;N)=56 zL8xyHM^KOt^XA;ooPGS1YaWI@@Dn$*y(Zfd*mIb-e{#=P3`5~-2xw{zO-jV~e@-Fv zrW*Pp;V1o^b~ijR*t#R*!DF95zQtz{b=ErqnnRjK(?+1ziw0w^Kr#(20X~W&McJ#E znZF^~kHVH4&yQxyKlrAn8k*sWX6zy##+y4=-jiq27*^**sXK%+{Ux>m7q!A5)u;BA=q@2Dz%x?dBWH;pUmZ>8p^OXFh zsx72RO(vYE_;|YLFzlKOG##SOY|(m;G%e9Mi*H>&{|6E5(+q!Z#&imb$AaHa#{>UwT(tc2 zb0bK;JihX)`U{9?GVR9$x+atI{gdpIX!Ns(&HJoH8@{zojOh{_7^kb~o~%Rp#47?6EoV@M5ODRDUR{`55Y z8vB~xUpry-{FVv(Q1AafJKWgw&)GDE80qvKC_04UR0HuY22{40^|ZD!p7a_On(+m) zb~1>ZsiJa5%zeKzuYd&T)=VDDo^}#wB`dpg1U2e5@mBM-zLm7s?LF{=3LUba&PH!> ziL}Ktm1oP0Vhs^&P&25IS^hUAFC!3naP$bPKv$eRUj2&-{k+`fWk`RE@e;wjKC|jc ze|J86J}ARIn+Qu`b+TwzWwXlyF+gfp1^sTwbToadn_T{|Z0l#l%l}Y#zbWToi%Ml8 z6M2b5SKR7!Cw;X`s8aRJR^d9Tw$fc&j?c*Jbd*Ahv2>sIX(5u@ywsm^UTR)jc8xc0 zMuD17*2#!DKz-K>QTmhz5&0twJJ(^TxSA_CX*>VeBImxeA@SVBA4ES z0z9&b1gpS(zZW1n$t{@*hMBQ9<4Oa$=V`fee4e|)qHQAFNUc5 z3a|*yFq{&f?<*5+)#rgpoq$3@fyL`HT*$WYm}6H^_{Widj8v2Uh0t>X3hjOvrxxok z(^|=udI+9}OD6Jy+BP&o)$mF764dI`!32b-QzE8}aBTOIY}rRk1>c5Ita3I{QE8H_ zJ?1z?P++C4>Ui~Jct!v0Qqlf{1Ix86hRsc3ev`l}$OK`sB-1+1$sW_`)0MVfbgWoe z;D5VJKTZ6?5AeO(CPz#{19)5zm5B!w@-l?bkDUqitipi=8*f}VpZLt@X6`lW{~l@) zTsX5??2IgX#GO{+`YQ}SvSx7_HNa9wsmR5K-e0E5Y@QR`2kgO!r4pF%E>jIg8n(lxt6X9lp zdPZkrb{%KRI!rw_{dZ0=FLrOC^Wlfm$#V3L2JEGI-3Wq}sN?muS!(IV*P{odyJqvo zd7cu9omd~R=o%^K1>t5F?)pX|cV>HYbMxO;(;T=vo`!-=QPL;sMm@<;HVbp|qxLzq z`sqED?e{ybkdzhR?nrK~oLnfU;%LZY6>s%I<$b-6@lJ z^ZI|^UWQKJVnp}UoE5~byVSp-_5B1O6R}WEC=uUfP+v2b}3?h<@f_o*g$o*UG~L*wlBIjC`z#c3Wd54U}Ikt*@T4g@523%EZ!zeu|1x*>w%3{~~onoT#iQ)ZI_k^IA70E3Ii;ZhsJ-)IsJ}tXG z*tFT5QPH}{_uKuy0#JmFAA-M&ov4<%{wqW>3Nov(jp;cEOgHhbsb{2LGoCGfCNG754lu~#E%q43Fk;ja6Wcop}Q3lwgm45{njQozXO5$4yzzlK;#MbWP z> zj?aPs=*BabXBc#~h59EP3LtG0dXMq9d1pU=di?@sP**LpDxGqKe?v!+P;XxgOioVz z&J?m_l6->qnq(RG7xyp242#9u5L`jC49D#<-phG1R2Bx=>ZU7`XyijGdU=cVLjFIOsGu1r{wXwO)eAgMQACw9RRRjs z&?oDok0yg89L03Qd0`(ARXTulDue6~U!hF4f*5(0Ry;*Dgc1C=>DSqPC1jWR*RK-7 zkN0oqz3aLU$q1@jd%6&>8ndpsLtCHYS>Zd0FRDG^dP+V#xDF#oDtiMlGmYvbv^OH| z>it2jQE;RES1K?QIN^}1=;y4P*3gqH<3=?BJQr4G_M?_uK=X#9%(agTn!Mu5vv{FD zc-2oMAoR(U8BVyxbPo=D9bf20TRM4^;_C zD4w8o8SAiLEGta|p%@nb{|k=+5T)}k$Snxzk{^U*grVxgQ2%2Kvv6L1%l8AU2i91%CWq^>2S&Z!Nbk0j8U8yFIp@n5M3h$u>wUkky@ zVw}vW&u6OBTqD8`7r+F{9MG`)DySXP3Cg%mLl@fO-#h(h>KUmYJiq&bo;Y`yio4A5 zT=AP$Ol!N!c(Zzp*Ma~gsg4&v*x1=)0y<>e25SXZl9^*pyb7dTNPuqS zt}oT?%nOc^zubP=RfGKkJR2pgF!RE)$L$#~4|j7slLbuTY4}u>`XhBnYQe~$->UPq zzK8lw^{aQGZ*oCbwUn3C7@7;$dHxYG3p18mm%{cil4QJy!qFA-%qUf6RI|>4itx_{g9ZTvG$DQ|Ef9d^KLdD9>i$ zAp8~W=mCIj>stgZu0oj8m~VX^v$p$!lAp3VEPw0}NDpBD*+`d$ydP95wJ*w~*@1^h za(ky;a~!18CU28abJ*|AtpKesRKG;m^w#lD2D@b7|JIhir{g!CPf?f!I#c6J|BDUq zTxzyBc~ND&u|(G7?4VTbhWq`KZ@4%m0u|t3DK?b&G|UOa8o%&HUAVXQ2u2MfmC&&#&Lx9~Z7%DJjv{IYrC=W-j*m5Dy~%R5Dat5v4Ya z`$;1B?S#OV7MC;J_}6y+8ba8m6-0hQUGBT@OXWbiMe?TX?WfW#O6^2MuF2r)0><-` zgI~uW@EK}`QF*T3fN=G{TKHf!_R9qDVBRbdw#uSRI5p(@Y*hsxW@jC8D+LHq>V{PH_N6n=Td(K%>c}bFeE?Z(WZ!-kfNQ|tUJ<`G z|9+m}tMu6nrY?#w|B_G zwi2BOi?-6|8swiKqY~X{(^wS-$;@lW{&Njre^Za5enb^U|1^hw-$3^$&ek`zh?494 zT#Yb3A;O4N@ngjx{MZl3B|c~VjI;{?0Fq(aAySLXc{}BbL;s}DRnVf{fj{u8X_VQw z;;DS?65l5Y)DLO8nqm?*;$NjF{(tPfcT`hd*Do4C;jv%=9}y4`2_TB}B3(s+&_WTA zjv&1WNC^;vk4jOBCZU(8RHZ4^&=nLDdX3bmgoKWS5<(z38{hB!&i%e||2X4}d;d6h z+&u{Nx+8EuWa9ATTK?SKBRI;p1~r{?(QQJob=;QNrs^M*wXcy zMrgXB_5})8ODMH@abZcap1g009~_*h(#Z?Gv-#bc2#J3E^z0j8FpC7q=71PK;@}#Z znaQWMx~gkv99x~x_8NHg44DQ5AHYtTSJvQVm5n~PDQfO`bhU^Z5QwCMgn+`@)zJi> zVNH-jvYz&^^x(IPoc9$YR}WHWKm)y);sXUw0XfqSzm*{djkVg86#=$K5+8H{PIA>2}wSW^w1* z&%s8g3n8dX;0UP#Xo08q$q~Gg^OB34IA~<{YYtf_`K^|JS6~(WIgT4;IZ9fJ4jQAUV7hyen&NeAO>LBA& zu2%P2C|UK^{wvSeBWEi0J;#pz*LvH2o@}be=l$w@NgI9DH;_}K=ky3`M``SnR;Q~T zSLV=T)7>OdS>31r%BKA5>3A<2YGLXlajK>V?iwM|>CxrA!vOA#CxiW#V;m)}yf@IB2NtFhLM0*PJD z&1kP=H(;5YZT*<;ek@@yW8U|XjhTY$24{YTZQY5#G8DhHo$hw{RY>WdS7#iQ-g_2F zK}v=@(sWey{-bc+99^GtZi5dHk^)D1`P^JTvT`+Po_`n2#60h#?CW6?fTok9g+?ov zZgrcm5)Egg&jr}W`rtC303`W`p~wDvlki1VV~WvbA6cTeb^(HVOHq zt%-NXEdlEvCtom~xZNj5PQBTqtC+-Jk*F;Xl>g&1DW2yPFRwk&1s(_`(LBxsvVBr0e_U;j8?kK_WkegVh%cjTgPN>8JYLm zK}7Dj9{KTS*NtS`>w?5hCI8Ou#d)g$y^D-)0|~ z$Hzye^B~Pf#@xI%ihWFOP`DylnK?IlQU}R*Uv>UkKJME3Oycw-Yk2WAp&+v>QT1)( zV?V>6NhS_$T8|?@vqv4O^r%zS3FD7q;$Jug$`z&8GGZNTO})26J7v-p0i{8)S4 zi}87QLikaG9skX#s;M`(CiQPN5l43mElO{*HuT|3`U9G*v%e4H6i?%V@tq2Uv;?AeEN*1o6i ztW}xi_%AeipY43iOHVP;?U6LB?KX+z^QCQ_+HmIos(Goixj8AK$W>U#H9zfM53mTa z^thW7ziUiYQf5)inwxHqqe2pYubfEUy`Dr-GH|o+xI96JM1z;0 z3Yq~*pV$J*^H-|Nl8Pz!fWpT3v&E=y*sn+3oqe z*}t861`};&TpM{M{P8QjCF$wT%OjWDCZ+onRrSg`a}6|yt55#E`oria<9)Io^ zjPDNRk=HPXJttUv-Q$VuPg3!lQE>>!PEZrs5p>)*^Tkyr6}dFX@Y-x`yc(2pU*@+> zqfC+P*$`zHTIVd`M21`J>7TpCKLmd9*M9lMR(^6By#xF50BduRdFO|ZQh|a=Pw$|@ zw!vojuD=W8!T#{65L0}n#wnJw?w)GsU+Zn5Jnuv?fe)@Y_c%UM=GDMwa84>|50JBcbcYSb9Hdr?pK!i zDBfp#dgOSYxP=edWJ1ij2bUNkv;Cd^+C=|R1TIsA;%zTY-aI2uiK{Rgz> zKl)cLMuDs^9+QEqFJi6${nl4OJkD$9KipR%yW3Kd_yN-Ac5Ht#9@)D3>!_4liXnd> zTlN!_NAdVPTD}C?+WbjI%B?j`LD$zg_RkJK9 zlV!-i@lCZ>cwkiQ-k6JAJ6|Hn}Q1)LdFH{2G^zWx#(zJA&dqCH7?E5CIfwPM! z+TAu^q2H{zhhG=?ZFzYOQF&sSQ#0ce_LjP0Qkvj~?XSeMU-Bih6P2qBn&!8Uc-cnS zzpOtcnITb>peEkwCwp3v>hUadW03YlTgpuv0LQjYKHHznFmh;9fi{K5a+oVUNf72C-PT)!+>$S zlDy;_@%1Y}40%|*6IFAhiw`lZ0JnZu==?n)dF zLD~B|N3+e3>_#;;CS`iQffx@)u`X;zo`ddb>u`{8=aECN+}r%?f7VMf~_@o2L@3(rexbUYxyf1QzU)8YU_UTa*;VCeu@w| z(O>bl5K+;FQYhX6O`i5_4b&64j2kSE>VOX>kPid9ZGD-C73lr2foKLQ>%T3m04B35 z&%zv279Y)pxO;`zCielrdFv~>iHzW!3@^co>*@_-l4+lv<{g+b^Slsm{$Iq9*F}XC zi3!d0i{ulD+iu5dv6lwPrR@I5KGRxR^s5NXL65F8@)+QU5=z?k@x#P3@}A-oBKEI( z|G6ayY{&#G#Wq=#dnQTQ*0rU&iZqXQ-c=b4FnRV|#qcARQ~q)tn}F3@(ly20ZXLxx z5O9xbrFYXKz(mPyFh$^l(^qdfe>38CvBnFTm8E%EJB<*olAjN(megs#J!5y3?dW=W zpJ`*?4BO5z$F}g}7xL5+yY{Y9TJKY9%v!L~NF$jL)GHcz)u;)z4Qgag%HXlAkX@(zMv}B%{~t8VSnjr% z=~3fb-IFqs!sk{F#aMJu!nsC#7UVZ+p-wMVa50PX7grXG{$^mj!{v2~%wjdE6{Kt^ ztuaUgeLAFHQ+{Lg^%ZMAH5(;V>&Q!wZBJ4bTAu6gqd>7A0Qru;(L06sE5Pyb|8(16 z{w9Pco)4RkMOS?7UpY}aI`ngXt?au8IOc=BAu=C;Wn}_8G<^w!`>HV55ZnYV z^KqGqB3I2gbqqQL_3~KI=kIhl?SFhIMO#(pc+i#6 z6qSHPo(&;UGS^{|mrgYZ2>=rOkfnHR6;c1y7k>2j^*H(GL9Cj?b*BmGQl1STg5B=R zN6tJG`|T_`P30BQj^6qGvqOKb>wGhM*oSiKS6f{m58>7MBUAhVm>U~C>_M#I_>%{Z zmG1v!dJbGxyq?Miz}+%9B}Omloh_hLTmz~D-$jz|6FRcnA9*!=EB9!Vd7gf)603GfeW9f z@2FhS#N-Y7x}G0T%H6(gs^kokxG*#(AU|xQABqpquePMu|2Gy;i+bo6YeF3~jj1KC6IW_95i0xHE zBLg!Hi0*yPg8M%jI}1iv+K&RKRwOD&7Ne%Bzjl^Habq;GcMCM8ObdX)9dMeCxLDq zC$Ar$X`4>^F5bCk6DMy!SI3+@wPC~m)h~^(ixMSE@PExc=UVyVUQfC6l1HzrTP=>D z@Aa09YL^|fXr1ZVhthOvelb16{tWGvRfHV`E(m8o68}^T18WaxUkObJIx3*7e&(af zdC1^A?8EL6+fD!}3z#s1WqY^)oaX>U+FNLrjE~HDR2+->OY`}&zxzQ&#+TR-#&iO%Ac#uLa`SF=e?$OJ~`<$&UNz-FzujS z;Nl*URy@eb{l}$1`BSR^QYgT+b@$)-6yS$#>fHa^x9r5CvqKg#Q*2Fo=jA^aqA%K zLn__Z$O7%0{9RKQI(vu6?WIX>0bJ5~_nK#zb|SiK@QT2Udzu5pT{3@H`4`{mo@|>y zmNDSKXsjYUd^Lcjna>!Q@q?{!{-3>=I#J=m5=K@;?mdlgH{#(tw_e;1BC=nuOgJr` znEfNp95QllR^V2$p~J7%(*=6)X+Ebdt2aR%;sW8xoQH1*eR}ok)}2FavXgV4n-RH- zC5-KrMgMnEjh@;V%3DuzSf2V;POGJ3n_B2u(Er+X_gUR2XHu8)Ay7fk+LNLn?oUsy zN{55Wk4}QI?#K@0`4{)wz>^Z#%Q#uoo;0ojxpx6K+I?o$uv!YY+e6-Jk-(jX2&a>_ zrQ~BIaST+nIPMpEc3c~$4UvHc-$>mMLGvu#fW)McjzL<{q=|*6nVrf?{*|wP_I4|y zKc=|U1@%HRqA0(~b2AG9*)oIy;9mlU4*KtXmUBsI5S5bXOWYHcCe(gNSYB}M67oEX zqy^E=A=N=vU;YfxrhwG~gI_1RTNWdD4e{KJFOdAZH3$OOvyjPRbwk23qcb6f<$=rU zELqf4V?j@d&o504+>GV3VdYv)2i?a9RP^+R9#V31s)W({JU)i2^#7MTweNa<4Ij3S z<3L8M;!K6A9AA>+rJ(mJ4Pn%v4se43?AfsG>b8`K1*$#@83@MOroxE^*tg8a{`KJq z3qmAbrF_^Te@H030u!7!bH_|;N)}gw+OsmeIOJ`DRJ6>G5ubw)5XI5oi5hbY4#;RN z+_WM+hxHbcvbw&j4B0jb9!8gBL8y~pA~bP-chpx08vH{mFXp6 zz*oU^rwOQIpCR=Vm=fL`7K+r^e(NRxU9_Wkx#kqotSKMwrNR-}+YA^@n6ZW=;otR~ zMjd@0TvAI+r4&tlJZV7fS*%knI|)rh36c5u zu$3lV{QHD2Xvtgggpr@*@$K%#^GlJ-j0bgVui+_(>sDlVZ+!hzRT~N{G8LW*rL&xj zgB^O;yF92tjsMFOI2&QT0u{*X4C^jL*@uM4D9_M*{gGv&1WwAE7_mB9(4!QPpJ7AU zF+d6yY2H|Ds3Y@Zol@b$2{i<>RN@^*{o02r_ndbpB;OvH zJUj}E%gS*R#gz>)UHk!j(u&|Hx25%84#u!u*oLrs`Vtw|z1W-~K3?YQ?AwBTe&GfqGltdE4K95k+;&(b4)4OYa~>o?%lkq+ z@X_*DHNbQa{GLKaiShN8`lav65N%r_R_>9n^8(q@gn^-+j{jnz$k=d|4rL|V%GX6% z@xGU`FiU@V4G0dkM#!2_8_}b)t7z&IaywYnDEKattK>Lz2i_$gn0GTtw!Ci(e>yeF zd?Kj6e(pVDBBVYyhomyP)D7F1Qkg3riFB?srdEPeji~eJQ2{6)eI%jrV;Nvc$c+M5d)aP!bl2)G9tV zxh(}vQW1ykpX3VGRq>PFJw$ zHXjdG*qR1TqLIgBkot=Si+#Ne9du{EsGcO4T}iiX0f^|O9uQ&spF}k804m_~MWKu^ z_)f`dPRVPi5v(CGUbGt%Vwmwed6c$Ms!ZP=?H0KGL1r#4rhAc?>h$$)V+DlX=8U0^ ztWv=QY2RBNliIid2=j%4+D>pVw@JFMmx9NFfT1-x^w5ZXA}|L~9sn%=`A2x}_Y5hc z%X^mo`tQy_Z2ihR|FOgx+h2!3>D|p!#4qF0K?;1*{~UU+;BT1qK6*@ta`0aP{*Fj4 z3D|Yyk|g~e5&@--9(VHJ%3a*qm*BquDnCVi;Q=&4g@W!rQgQ#?8+tYYXmV<36%yl+ zR~E&HG`u;{-`tD=$sHrlwMzAQB!(CP4`;rCVS}ClPx{##P+Mww`)ZKUayU9Lx#p2l z;ES0VG+vO$r{*cu0}|?SI&3a@^4!;h*K1Z1YEeD9P21C=IM^uD7j@prvg^NmpvHu$ z)-iT990c;4%dp+0Z0t&~^Iy;HNiY`#gjpS5TUgxHPx1b=gq@B&P5AK^Mo;AoV8I68orcPr;JnYOTAp zePnd~Zj6()^5NK`>C^0Kt>AQhwBUL>OLy>hn@2xRZAwcpfRttX%Pr?EUMxYmP&>gSOBG?M#h z8`Ojv3psQcr08=%wO=~$3_!KObvBQF)pu1ihp|hXyazomud;GZ75tgWi)#M3%XG`? zyHEc!a!i>6)*lS>xle$y9D+LE6cT|@*F8SJ1t zZZ+e6&^LceWQpXs+|SH>i@YV$5e&eJ1r&lk$)z`#3-tc8A7-d2Ms!XwO!q(|YrxJX z)!H}+q|dN=>Co(5%RJxdL;Y-^b}I17@mFkTUfB{tquVk`+30%)7~|knFv4y{;}Xu( z^)e3#l&;4-A{WbP7Q3LXj1wzcTSJp%)8&D{!CD*80Fcp`8rQIjF51~3IKYazsqKEk zG|OlKb>Pb57eAf^V-b-$o$8m|SBq9*81)9p&1(VvRunGeUbQ;G7UJ~sK2bDA0t717 zXC48y-$~AnmB1Yl>RO(1V>v2B++-*smj^88)PPj)CH00Pem>@D4XA-eNv}6V zzi*G$``7uG)^Cj~d7eMxI@`N zF4{PqM^+{rm)ai+Wsx{WX{&aj$m%~BwFH>K<^p{C^Al?PIbSiEpR0(JjLV5r2a z9F*U?`Y*zhWN?4aSfWouflrFFF*OI>xz6zxdYu5Ko2P~Z8d9HBRx`kAHT`sT)gzbw zrA$fJ!$V>{Domp0@FtL$m((-+e*^L7{Vs5oY4BETq;`%%^!y4WCXbX2CPIR5A~}!_ znm=}ykW=!wns>96^9dCiiF-seJ$KbAZ%qC`=+A@aDMQ*q!@Wr|V(}>HpcnLKx?BmSXv0-vwZwnjf?!pPfg~N@+U@rD{ z5?zeXS zdD|Te%8)P(MXbu9&eG3&L%1U6BaQ2qO$q-_q z{-O5jA<)tCGvR$>&*^@P-`k>)yvS%p_xW8q#MCr60;9e*X5P;m2^`Iqx-tC*3TKGJ ze2^zgHqW;x;J!e#F(ep2B4w}zrKv9dmURP}43ROSjsrnY)=rzus?&O_P7ATypR;pt zv%et_nIWlmWsbGH46ZT^{+6%>0)cUoK29R&*@xM;v{ij%2>p+w)YiHzsMA+ad)hb~ zWV3|3U5V4lZTo<{ijel?@yMst0OEYmlpELi;m#Rd!EMVyJuSPrQES;7BPLe|NKv*l)%Kgn z62kJ*C`dh#<*arUB!`v|xGrM35lIV+PF2tG0%=L($fuXSXObj1W^yKrHD3xB%{(r1 z%kcx{b@tPSM3-Q?$l<7F8QVj#qxVKQ2WXp@qP#g%lX7ph)}S3KC$)xI_Yl)z7AA1S zaKUmsV^12oXwKACcF&2CU1D-xdkuw8CugAWgt=N!yIHmuNGNO)eP7om&&VG%UGpwH zH$uh$p4vUF82NcBOG)*BP|TW&+nD6R2R*+#1a*z*oIz~Hh8SNY+5*G1z{%gTUKtV< zk*Xg4R;tOZH|k+PYIXe9CDlY)aBdr$y5M!mw5o1zw%FIoqo7?T`nB3Isj}EHZskTx z%-xxZf;~a5PS$$%hNigtx8a+}6{O}hcQ4CuEM;_r@iIHI--OyFgiY(Wj18R@nYHmp}vS6;AwIF|rj5bljT?Ca2hhl%ZPK4ap_I25%Y>HUt8%q$q z6*3rpCXQ7G-d>Id)&5AXvCanUv$jboExdN2KK5}Wx=F4jYSi>s%Q7%TbYL19GQhqV z`c2>TQv>RW^v2w?pmTP-+^?Mb#u8Ull-*O8c)N3=&srux#LBZE$1R3gr#7anSVFtOF|Cc5l?vrh?V{r5`=>$H@iE-5_Uo&PSdZ7z zy~!H0q~NI0ku7qzdP=Dj>wWe{Xa*o`!Lp0yl{PXeZ>K)42F5-|Ejw7!3f+*y>>x4k zH*B>sSgj`gamse0J0J-Kk!WJ>u9a#-MPgf25sop27L-U_bD!cIfb2!n-bsbHnB-}U zpfjY|+ZW{mIOZwHWu03<2o;{)Gq-AENr+LN<3sLM>eB&{YAP;Xo^f=SSurO^YAxp6 z32*@T5~RFkDpnjdibf58RuE7cS8Q))#Plw)CTHs!?|YtaSXiH!0NWI5fy+WB?^;4> zW+jtjXbpJMxeQkx9p~vzW?Lz2pNhr;XFuu%VZanHwj(z9U*8XK+}NcnS2YMAnx-qd zd1ig#bX4N;l-mvG*xz2p(W1Rz_-~zWy58bks6hdh2))7EqpnIO5e<9 zRlD=hO;K2fs>Vtq+taOmRZ-1jWnCV~+^N|*&(LVrjxfX7){;;dJgeR!aIfTVRPI@i z7o27;MfT;e7H9UMC*1&yMKMMgS3l! z1~EORXuxsly`7`#$8X5o@!2|JiKd#sn#Rw4OQZp3h(6qpSjwWF>IT`Mdj46om~ z;vs>e(__pmnLF785#>(6p++J%_Tas(ygp8tTdl+QWo%Rf=Yc4>%^r_mpVpqHG&@7G z3aW>RCA43!*H$h20p=EE-Z2KuwhP##oZXo+3ut8)Sl>N7E`IX(rTPK8UI#<2qvn`HB|Ewi^=b8+q22ln~VN z-L!EDar1Kf@zG~lp!ezrX4^fJ{#AIc%4EMe`CsDKde@S$F&tCcqV4`=quV!TTgWG7 zJDozvEeK&u#Hu54%^3wuZn@-4o&%Hp4=fPWa>Fq2@r@&H)7BYgD_PYE!=+nWhS?ac zADLtCG9*nGC`}zai>L!tQ}E&NLTc8LGaH>y|N7dt<4wQkkd!hyR%6;LA#zpqmKG{P zHe&*${x;eX811j8B4Tma3%Hiyz32kI;^X&xT<2&fxxW(wN4o)4E|H{DM7vuRap8iR zs-XAO7O@t}+vp&})aHPHwI7p3nwJL>#z@);^VK~taj}N=4$M*mzJgEAaJ7)f9T?-@ zsFMTfa3CO%Xmy&bLTbuCju%_WBZ=vbG^pWtEhN0x=8AMj2G?4=cPaJ;wxzF}g#t_Q z@Ukv#Xg8Zn=(!RuuOVTJnU>HhpBZl+x`QRw0Xe0#)lu2hK$KJ~hB~(FK`^^c+OCc! ztr{i&EJ14#7u5MNG5K?WZqbrnal0$S!gEbt}Rs z1W27eMJJBO+m6hKL1r>Z<(tBsBLF=BL6bT--*>aBl4`QJ9OTr8f}{h3S`{RCJ-kY7 zH5@X=eJuh>~jQj!?aasi){pW-sAOlfOl1Tak?&0WsR0By1@woWnTcAoIRomx-wn~ z>4Rbk`)z*oGtnjBz_;6uxg<{BXPq~ zP%HNtx!32wuilFTnU5=3dm&%Xv7ZE$KMb#EZB@tBX>H3&z;18t|Flf}3v|$knj2s} zL06_lM+r5%Xz!IK`V%)ckjoqj(RYsf6{y{i_Iz=P3CB+r?nchs*9C6<{o+4w5l0DK zTT&a}7ni(wQw}#?1*=_{qit|N`XE4bdkht=jYA=q6>h>COsMtfr+hL{>J}IZsfLG$ za)3C#>D=SYdLkT~=Enjf41lh>)#oO}h!#Eamd6zX3^Y3~@w%jM-y%kJ*Pl>K^4$mW zuZ|dX8I#}#8$VM`0G=AwBS;vz5b!IYf2k%-qVrr*W&TVf(VHyXB<}@Jv=ub0S@zdx;I$-hVOCm<@R1Ml1zQq%-~*QB?eTgf9Xb;` z`ePn_@6)u_tc)@B#Sx4>JO1OCINck+*8f)7J*+o988fW{R%@6*SZs)<-2T@HKjFW~ zcG#uvyEYDPkzcQ)>b|qyXL+sa5W47^_8iSKq?b7+*O)vWoZwhu-3nN)dK0c|oWMuR zp6-QkmLCLqpyK&w=%?=5ZBvih|Ehf3>SR&FIz39D75DH>bR(>t3B^6i9-j__GEdMc z$KM~-1c7=gmA$KY81=#of`nT0F0%~2hy}aL$APhyim%x~JzT&jg5;vcB-Ae8xKL9v zxPDYK;6)0lx9S95&(kSw6@E{e2Z6{5qQ8OX1ZT2HFQt+(6)8vg#OVw$OA=L;PZ@Izo0R-ACVmku@d2}>_mzta=#cOepX1aTlx&CkKn`WHi|B3+OOL+T449q;|u zek4IYFFF5lFvGgTvns!^U>Aba!R=^WPlW)!^%VjK$QaFO267o&$-UnMZu5TMH*FF3 zn_2lu{k7C{h>AGf92qYGGeUMr((fRbidrs5BOS)p;gknEPIeu=T)ls*`z2xQKCg2X zDaASwu1kYJaN9#ifb9PgDmRm~49<|Cha#QDVfsj|uJRBDSQbjH0rN>><#4jdX6>Sv ze|wAqDJ%_1tQDcPPZ<4}yxr`+wdH97WY<9(q)c?l&L3-V0mqHXeHk2RXUtz2<=xeW z$RP=fjlmumy7`o)T(J;Hv12iBBPUf)Mddv&+gR5A6!JdUAGN)h&QC?v8vg z(ie(X7W#3{DUYX{B@=!D^!_GJ=k;@-_a0wvBKr%cGGfw6F%Xr)Bs;7XQuYobChaE* z8wxQkOVPMewEoZ$e`-fpV|yR$Ub+u9xNiGwe<+}Nxz20AvJ9S46!V1e_?-g5Be;!H zFaSE*E~36 z6{q}`xW+)#kX&OXkOBCrA${c1tepY16-~r+*KA#0htOMmlwW99cQLmheQ&qhVifMB z7#}ouUlfP3T&;VqRj(>J9yI<&Fm;c&(F=6g#kyI1E`M`b+kMp`jXwAylo@5kl!xOr zUtQiv6J0u=b_lIr0>%d7r|R>Lp#yRhu6DfjX031i*4}D8V^UMW*w({XL?K*oMf|MPfjS}?TH2BRRTFmcAX z<~kE+kdIyme4^|-X57OE;s~>zpbc3f_d@ZfeiDkOuSNRkE zXYq7?$Zh0vb>@B(SYO)y;p|I9*xi~bw(0 zQcVe`BTk3mZ|XOdC`Grbx}O>3%ebnZ?l&FG^`5!|4dU~{Pk)MXQt*E)=9R>Kj+VPVJ&&jl!NOfKmWe;e04rUXpLIC=Rm(Dect<7(Yh z!pYKleMx!@zS)g$>#gVhDGHLo0UEFz*18S^e%`dk+^6Xg(1Uh0AC>fd1rsD-Cip$q z$>Pl&AQ#_Z5&2j~LQP{UIXCb5gH?r}5jhuGhhlL^MA-YkhNwIKU9^_`9S$J$YQE|o z)Z+66-5iD7>slH@I3Aa4EWWRF!hO3mRDSe;r z+RN+{{jFhgrBob=U~j*V)6tk`Q-?PgP)8OS*1xzw!@t8JOsS$ls)^JUC{f8h|5J@c z-1q!!Ql!`j%oSNuq7>VzUL-j$3K32tQ6K?1LxLk{S-IAzJI)BXTjSx9YO3z51HfrC z`p77E72!q>kX(V@3ft}=SYLAd%1W9FpM~8N=EeOGE8<}()Kot^z<29bxCQx)gE2Kh zn9%^C7WuHE;>$P4-ZTlVcU?>&%g9)n;!PgMUd>0I4h@i|aLQ?AclD^)F@K_ImhVGr zpz8ZaBF4C7su!c>>`mo}cK#s^;G9PMYI+6bceD#XP z93yJEO&vFD5t$@}B2`&h7q3!oNMSp15N*IO{)%=gAsPSVWzE>FsccIU3zCtg--;NbK3^P(-dyZvQOkp;_t&^H#jt8y= zW@exC{LQ;LHs*Vc7$AipwOqlaTE>Y0(1j=<@Qu~Bz|z7&!nY=<1;i2k07CDwm< z9RYGV>z_lq4T(W+x2)x&2hBB1cc!TQC-OfAtYnG{vlwWdzo6b1&VsxQeP`Bgw5Z!N z;7{4Ql-H%}<|0n4z5!HUdZHANGbY#~1UknM1nOQmRX(;ZsgICV)P? zNACOM;j0;tu$2#pN%YtLFKE-ls0%E=fowEgCaPkuF$&+DQE_XjBrEy;^9smyHtYD3 zlIR)doS}~86A&QXJ`XOjV#pW<@1I`uQyz23BhjUj-!KY~Cu@~W(4K=eRH?i@vPZl^ ztb>{KH??kUfgPd5s{oJMYooz)+O+T5?!tG{==dkDFAyrFX$C?>H==6w7MRjzRNXuB z#_cYT8ITqCH|zj<)p8C8lcH^#`x#Kvvv=)uV*&`*mp4q=CvwxW5!yN{nW_2L_p8bl zTQzG26|E0qpDKXR-RxziF8guh&^YD}$LtaB^jzo7dP z7&w`52;iHIUXq1SN5QhVp-Ar;Nnl1pwme5g%e!Ce4>Nl9aPCE{il;ak({I|ezQM*@ z$~r5w)%JjWD;21q0+Hr4n&HsacR0RK%Q%LIgyHt#mS4<&zx8Bst8FD><;P-Os)?kM z-UYV9fI$TsDw@M|l}ulwQvf{7Alj)Qs;DJ){3d>Fk{9V$x!86AW$$$lm|;QI)eR+6 z6sPf$9>p>Rkvy~G)P7EXW0+!7{9yEl$o;QERTV}W>#p?%*8$rAe${IWp;O}g)Ep4Q zu@#l^2GeKGv90E;xhK~A)F}cJ^_k1h^g((ukn(HOz zbRt5w;3Z?9kM*1d%Dcc+TdQ_OinSa75~>|lCatDd%Z)Tykf&P|-0xMdiNoCRBKK z`$dJIbXyuJ%qU??Me6yfn2Wd)3xV4w?Qg<6kO&p8wpxT}YaVH{HlBZF$ZETOw3Px? zydDR{u7AeuKN>zqFhTBJT=_YtV+;rkVm@NU8wg;Qz-<*Nz(G$hc9UyMX0Q@CF~J0Q zHXsX8cj{NaGF}MJ*_GJ~skaQALmoN;Fhji(L<2SW|ri~R#`M|p#=afbCVCSJARG!NET!bGOUwxp9s`r zkDWB3Hf^SC2#rVHrTTyY4-Y`5oa=%B?eT3&)!0mEsSr+>Q=-bK&}GZwx*xx=y0>l5 zXAix6U8kjp3u$y}V*It0Y{)#~2*^MUCDkHsRa%06!?1cY1Hi|S-YjlmN~EdPxhW=1 zA2zxnDNq1;DY<47+T7}aWzRj$WA-Q26BMmJ$6V**!0$I+R_%GQ6=>tmP}Zw7i3%!g zbb6B)X1c$)Ha%IWuKZ0$aPuR&@-ymk|3g4mJi6o1dVtj%tx$cqLeyA!>O7-4Jy8D) z*l3KA>!&5nB6~|>pjiQ4iu&vm=jjyu1=b;#^MOWK#2y@@piwBD@=*;JraM9(eAm~u zY)RI$%6hK2cjpf41&NeWF?wP5Q3}BcjSD>km^Uv=e2&^%s&PCpJoV?ZsMx(4wA%G3 ztQG!fMh?F|PtN5j6& zpr|l8d~REV34QkW9y-mpEkC$o44y8{2Pn_1S1*CSGSa_3eL3Xoi_rYc?cCR)w5dLY z*~T~T-0W!g0X5V!xny54eW2UzelTl1h1z!F60P9fl!%Guo0%EZrwws`6jIh9<7fO* zn?;( zRuz8JS0^;b<=?=s(3fXHO}(+@m_v%w9aFn}F!R_kvGQ}_Ysyl`r2TS&r2+`_EZG#C3Z=8 zENGc#dDecn1U<-KK_GtY{HPq;_raWJV6t%9Bx@Y74w+X|jp+_dVD4W+Ias9S+$os8 zAY0bQdZz8ZU54M&?vQ*PRdoDFfPV$-mdM2Vgo%FAmY!p1{aLTZz%E}#>RrmE1MBTg zr}(0lCp=jz!_1DQ*Z-MKD=fEb%A|5lA0V*apNW^GL+WE*wMgMM6lO~E3jkP|ex3~& zW|yvQQ^Gmmen-{$W?p!h(D3e4b+xU;`9}0lm5QIRlB5Vz&|Ux5Z0a2b)KY-lIs`2F zu!s!a2ji-W`6kY`ntfR>M2nIsTbDNQi%Wcp(FLP{WfgPp7MBnuO23k3_k4V@mAkuj z===CS0^68@FQoYRm9aqacxC=Y~ijGgug*O1%ZW{ z^UXF$0ML6CN3)=kos(=So~ZLf=9Cjsw4bsiJ%hcMha!JzuZD%;Wlz<7;f(+QMUdc@ zB$egj$>&3>YA}b1E1%YoL#5vZwnI93`aaw_CdGaExfC}_zv%cqsA1Iztwd{iTf*oX za6Y*fL-ut_Kz@7wNxEm#2ikLGMqB>2gIB0}R3fm|^g)Qo{(j<{PR3xV)^$wY)uz4H z#@Q`j-xOP8*l@qGw_00e@p({BQ&iz`teUj@Kihy8P!qYbd3q@lg7@hImUXOx15IGm zX6HIqBYGwyl>6fF`%KcBg@D9bCP`6BYd{844YeXaLyKZ{oa1)x@{=%gHR6z%0XO0V z`d%z#LCcAP1QNShyfjmYsV}f=lFPXqi?jakx}7uc6;yu4`B4uEyLbco<{q}K-qbwH z=#{$Clxn%=T+}kba7C6`3aG6%kGvAB)y9Qb#kMUO&4 zkQpUC@$@D1)A0P4q_=?MKs2F>h>bL54ly>SrIODB*e}Tu6c1KhXjt_dO0g zDUPlEq~7p$abNdwXw0imjj{3(>?h?~g@$7qcL~bw`Hm|(vdr%yUD!bm^r)vOj%(Oy za63+UE&v&JavUrKV{YpNs>KSyJc^5B$r;Vf-A7J`w|Zy>h>E1z>LvQDE&BmBQ{v%Eq;HlQ_Kz)W*q!D zZfQ!n$UM|e^HJcKVZV-ZTG$lroLN{#N_9BDS-mpXyl;kp3&+6}zqBGndqFHBaWoZ@ zI2(+-H~p^0MeK_%*&Ad97l%5lONg@^Fx3x!AgmZMFRzy5XN3YTW(C9+9yan?rpAwf zwhG6*7}{-_YH$eZ0Ab>wWkYaYs?tLMlLoDql-a*I z-hL7v@ZNLLnqBIhpRcyw=6uTNmyKul7;j9yUiyAUg)`HupR_W2)5G)h&2Fott${ij zpgOZ=^s#4sc;f}NZ#5A2EzA^4m7JF%HFh311P-sMumIuQ1`zfL57G8xNU_6(f)28{ zsbyN6RQ-e&lBqsdVgu*(rO9c~14s_E=kmu61|&&}Sr;VecXbC^O+x`bepIH2i-!MT zFpb;c+sEa!8mhC?B$~!<@g1#)#b-dhq$QyUioU~Tw;LwEJ@fqaocH&;eKFPcCt5+j z*5Y4pj_wJ`pWn00S%oz(o6}y11PqpGQ9kX+_^t2aGD3X?leRXxnCIlb>rdkRCSEMW zT?qL0wk55ZT^{Ut25{k^`azc$JET)X&-F4#DDMa4k^!ec!&`Ci^^#fSQhXAPxN`1{ zmfvv^(#buEyhKu$`qyuJnJ0(K($8&j@t%R5km^G+@mkkZH>WI9ry+44=@PxrkEQMJ zExmnhw!F3Pu&cxuSqD7X^HD2mzS|cD?30-Fbno*Lf4h%Ovn|E{V|Ulp+k^scF{vJ^ z;e!3N|JyJW-_VwqN_K13{q^#&eMO%lGRto5mYDoH ze5ak$I`;&2P6q9#2mCckPJ&L4$Uy5Cu^Nr5=*p~AZsR78Z zJL2#%cZGS}=cXCu1|$A*^RaLjO3uFn_V`On4V~h~hdp(h@+l87^G5y>J}k5zH@x&T zKB-k?z~vQ{rj`aOr_{K}sR;z%xrxuts5$kJ2-1Ksi4Id^^63|H_ z4RdrryN8;+@)$`7LK{v~crBd{%|9V&Nr!*uPq%3_gO&fT&VDUJzO(S1evfWGD~Zjn&!7S8tGaz#ia{_*3=(e?X{W*L|_7O>a|k3ut7(V_Wzb zVt%2r%{E4LW>kD4QlE{GO>rKl2k{{nTykCVs z{ddxxQlPl|O?;H@>GZYj5UIe0x|-SqSHIw3hnW%P<=;g{>%a-EFT*7x9Qrf- z(stRb@H0@G+Put~CRR#-x!%DPi;}^jNot@^V$A#W@tS;qO5X7>>TKZS&|ISH~-EE9O)Sd@&=WccVf8W;#QFR zii%#u_Ty_}ZgSKX|JD6ou6Ks+#=kz9ma4P3!lyVm9J8EJZ=-w73L_(_T6*6E)|V>A zN=+a3gL z4NKHYcq63_#a3Rw$K2L?GY!iZU%71@op$enbfPQwBWRs3x zkLE%Vu4CpHg&g{Y7)y8_@f*9Bb!T3>mvSXY+!XWpvp{i5Pg4Ue^+JjTJc05JW~pVJ z(D1z=UY8yH4J7x_7EZ8x@YKd!xA)-vl*{e)VehW1ue`ipDjTst1pl2kx2PA^vdgTV(&#)I%rXQ0 zJq0S`-X7SL^fn}h)%@e3`^uWp)UTy}x>K20-6HHDwASA-9qeyoWL|r`>u%iqNu%Ax zH_sFh9GzH-DnZmDT!McYeRw5(1^3<1&K!P9(r6NML4ER=Okd+~a6$UbUMi%jE4e zih(0wAv}0nH5Nw~_WP6*?xW`KJg$-QJ2{wM z^qRadTtQ82+4l5_1EA!sN0-lw}u9RTu=M|a}7t=`B3z8#SY&-7~UAyjTRHdsf++K7bnZX zbe1YL2-1jg*hUw(&xu(1@}pSwN@c2$yMTJbK}S0zLwuY+t&_*s4M#@kexB&VQCI`w%$LtOoq|?r<~rV z5%WIz-!(~(Y(S|xACAju1Pt*>xJmtR-->H6-V!leigBlSd2Nn|=ThUHK=&YbcD!ZL z2kbr1l4&H4_CAE-B0r2!S^Rk?ra?_rKm(ioYaT!&vgFE z%ve}h^gBIPcaX-imx}Q`$LBg0%Fc=_eX-Pr`Whv=SppV?n2N5T4=ZRsTb9f3leJJU zt`)}X;!CRfQX7EItqiF~^XX~o&`Ta=qwvlH#u274Y=V*#1TqyHCV%Xtp|GAqE{Rfe z$f*&M*rJbsdbm@3rnve|s6M(eLuB+;;!0y7hM(mY@Qr|;I%f^tbEV?wn*JE`HV*zH zdKZw)u9>zY#@tCts>Pr6`IW}?W;e|}&Q8iwaF`Q0I6dt$OLHV%pza@mt8Vx?@Fg)5 z+v|=FZ+pu<>bW;^8Y_*d1$agzvv=E|e;4uKUjfl60kFriPRS_x&=g#zF3T2D1agZ z%%!sAc?j}iTsYJs`=3&r+mGCB;R#kUQqG%f&T_Ft3*v7=>lwsar)=Qr&^-_nMDHtJv80{|3oGS`Sh zs997N-9P1M_l-R$5`hMDih3m^J6RP~YdR5A2|%eO#ituWYm#LQn!k%TQ=lzI#l&_y@3)`7AJ@>ZHG9^$*FYN35yp@z-e5)aYuXXV#*QJ;p23Mw|kJXK`8+^QQNp#Ur3t zD~+1#xRw|O>0QAACwt}7=YSLsX48Y>pE`|Dt(vY6k*)b{2xI*}wE)y340A5S(k#O> z0kMoMvuxcrqhv)>cw_m*%c@_|wu5=X2+*4)t}6jO2J8bK6RtE?ocnu zpUGkP{>3Q9>L{Dlsiemp+rJzUi1i*xHn^Ga{h19Iuw^mlow!JR^@}z_){g3luccvk zWUVhIT!ObWeDJ&a;oy2S>O$UqkGMKI_5KTE0_qIF=zV9Q=-? zoR9f=qecJ4CP>hj56h$+P99)-`Bn2 zcw-C|pk5fvfsjjJh)rwwo-59`{d#FYxDi+#@bvvy1D&c5FT;hklt&DVjoo{N<-UT) z(hd?F{`>C}gNU=+&(HA@5v8G){$+IQ|{(oXy8j=J@x^#4OoPXqOI!Bx5N3#CpCyq8A?Z@>y$=!z z4n~N=3_6ehC8V(;Vr8Asvb73N&hfQHwksfgBIwTU2lt65I0<{vA#ED`bz(RuuKJpl ztLOKxKXzV&(2tlaIJ752lYU|GAXP`jYX1ucuvhB2y?gp*F+M1ihw0 zoIMfx+=41hRR8nnl4Fn1qCPeFu^}@lvHfY@p4v>^wvps@(Tp(+gGbT;!zBHphQTIo z6=Y}5>~bt(f%D$3o=8Zl1u_e^4of5cAF>-(OCPPJx znLL3$WQ_Qdk?$8}?dNlYq$#QgWW|H~?|cr_-~~BDUZU4?joaAj>IY&Uv97*rEVm<9$gAO)gdmdn;ObZ>!Pj)_Y$zDM!=p3PGuG_|64YYxORQ|-fX9m zEQ8=C=1N_$5l&!c&KibKCU$yHiO(<>TrXakmw1$azYsqd08 z(Q(U>m6hW9Yb~weABX?UWK*@od+qhKeh;i^xsCwNoB$yJfQ+%7=)&~ROiO-n6reCrk6bqcyEA)5E-;SSkPuJwv!ol4Cbb&aGsZ=7Y5QJE+4%$B&0HY-1$w^ z1tc1dR+;=o#|%JeKuhfxU)F507!+5b-pFU$7FD5);KM}ajJD-0C~UW08LYIM2ESx?JjXacl3LlX2+Va^d09kkbGYSqVCF-+$$PR- ztyF_}<<5@|NI2pDy=;1~=T_3jKDU9l7so6-tfCEcQZ#IfL-WAk&?ywOn7%!vMH=^3ry~`i`XlcOxBTTPNL%1_dkE zohil$NB>X3{cPiEO$BTg8Ehq5J~;}LFX7gQkAHr}>p>2_7QgVukXC%TsXL`zfSfzn zh(SGxlBEU^XlDm(5{>*Zlo0;gfo-8;_S9FV?t|o9b<-msN})mf-DYX!$<+$GZ1nen zq)y}adzg-xIbmne^g@Qi8Kv2Iyd5HFWb^qQp=j*pknn?b&dO`Z-6zym7-E>ls`on3 zQnfgxwQZq)-%i=BT146$vaTtLA5T?OYeWx>RyJ1#9TG3Uuq3KdiylFK?ov+xT#Y%R zj5u$za@KpvYnmMmYA^6L}h|rl#Xg0KlRH@J%(Te=~Xz))65XynwSB z{>V5w=pTQ!=gxn^ts_b5Lpz_ZqM3M87KxT6W?>?qO&ip3)3Im)YpHTUl{aK|nJLKE(&8%}?jzU=v;V!&&Cz2eL1=AYEBA_M&Z*)eVg3DcG@-R}{+z~I61 zQrOz6Rig(<5%SLZ(p=@1%C2Om=iX{ykN&lH{x5!HioHkXUd3D0Lde_RlgqA< z2#a)|CfcAuJsg+gzTtd8sBDWA=h)%g*M{t|^kq>4UnS;x4@<%2g zO~ZT%8%LTt3=qfD$oKuho-SQDbP@LKEF0fLoXG0PvNbzjkW}3WTV#_^qe+$1vWfro7mmY#CGY;+XG2yW{|oUvwQN9>qzwd zvoqGBi~KZS3zCtpeX#Rf+3N=^+72##()W(3SR11PA*T;NB!s z83&8RoP6Q@VDa~JyTvWz6k{eg;UStwW@r49n>)6})byu=2S}J@LHU(l z>4ImPa7$7^!+G(W;6u3`xgGf{hKQD?DpDUNe0u@e`>mM!*WDD*G&`|({SWe~-1G`t zGSnOCPn#MfgUi*&$!*U4X$0wWmGzI!;Z%4PQm2}#ps9xIDFWaAR5D<=HrqT>z5o8Y zL(LUpNI}{!L$$g{=dqWwxsa}}{^jSzBDfTdJEB5pF~EM=`*9kWDh8D={j>1O@~o3H z+xJoAL2otnRUamWLj4@|hN?`RI!WL4Z2BZ$jL%=~NLAK#(eg)>Tf&@1d5B^MIPQm| zpUsbptLL&VNiJzdDfc32npjk?NzR(Iczz504JK6g34Hv+jzvZz?e+Y%BTt%m1D9b& zwG@1Z?_MB_0CA4IJ$|xAR(NWnWntV(@bkf+lP+O$+CgnMtc$HwTOw9;n$Gis@?oIY zH01Ezdqc!%kcfYuuu^dEZ#%c`qOj9ef>{vigABU#87=k3EDg5F`eIUo!r?+soAaBP z8qH`%gCmoMLMKaXVO+yKM{=b&{uq+Q&=QtJLG&+ZmnEmIP{Hxm!N@@7A+D_1SHyS^ zt}?vU%^(^|_I#5Unc+Y*pK}lsKXK^WP3i8{ol%dVIFp9XOc2{MHGaR^Z8%dL#4`@& z%{$+Q77u{-KW&*i(+ivn*)Gy+WSI*8cY|UR;L6}JFr(G9GPr@JN(n8yO?#{oOhLZ3Cy znXq@?X++oJKwcm6L@0Kge_&l%a6Se!2)Sg}17!`L*WBsO=MZ_t%C}x?(yy6?KS@;I?s#1!tIMF44 zZ!yr<1DQ&d`h2W91I3+M75t_S`yr6J7clCe)6?x7W-yHUiuRJ(i0Ze;nRf>Pq$KoB zP!V1lOWxPS&w}8weDMW$HFJU{qDxXDT0?utD z!oXk^v~(EJzaL{ir?L^GaU)VuRg^ufY@lX3CkfCz$qgPiMTJt$ZoyJeHu3zO=I}8J z5rFMPiLFKqS{j+VE9sy4*lAl*E)Fnx6g)DZ15h~0-u)xdG>>@){L-Se6+6-zZF05< z^;KRCOLvwk5k6$*t|z#U7tLAS5@4Jj;>MUh`m>nR{UyZKAfA~wjw?-%ZO}n*jco1o zg%H53e6mM+xfgxidH-ii+Z`5=vyc*UtmYV}JXcsj5I`X0d-J49CaE;!U1m(hi0D88 z{;OF*bvPEHdADL{+3%26)Z%<^ZtB;s>hpOAEIR0M4><}Lu2XPUtgQ^PM}s*>c~*-{ zIa|TXqy5_f6?OQnNRoh&YSJE#Y=G8`=C;Nwh3xTu zsX{^i(%rwd@CKMh3Eeya0vGEA)zL>O)n3@KEVxnD)Fd~^nu4JUL;=Du#XEBZyHpNA z$;=xZw?q(z(j<}=4l!>)7-c{c@avrT-oMqL+*_c# zv$4JIg;j++0J#BlBLGjqC>Itp{7?I$KOap&$54@lgF0p+;<#4GRZKiS?~`Jg0R$5k zJ?A&Bej++iNhS;UQOdMsCIvKy{cctYq+GM-ajSWWr);Mk@in+5%|esi82!W`wA zVvt%BhP9aY$XIcr)F!ldZ4?$WdG0}N?Z2$(4tP*@`%~~RP=aHBE&_`UWg(ta_<_7( z_oyxv{w6%+8%*iD8yn0h;t$3JXhpOy{n|_>iZ?M0N_zA-Hv9ShX9M{Fp&r|Xj{RYF zHiQwEO9AQya;(_0JLwtdZ(wzcN*qofcaz$O5Iatq7@Bb&HntBmM8aO406S>smlKc1 zaeBze3F>6hvuIu4i1;y)7-WbP~yT$FN2Mg)2%;H8{CS{?Q?!Pe9>n!mc{dxK}tgx3x1BG_1TCG zq1Sl=)KTy4_6=0f$OLyVW9iqNaDvmbct9DOTrrX|se;!-%#`NhabL~OF3z=M-{9(b zIBhJN9DLZj$3aOEveuyl-`ia|tgp042NIxAQi)o15S*mmY7A2?6Z{+cZ`*F)KmN_R zHGm-;*uzk28}Hn?I8ad99!os<69555Vf@J2qh|Dy--5Q+D^K$lvMvcyiOEic-t(WJ zP0UbZxN&&65+ZBd#XS-`tnv;jrV)YIPGl!wZfa3yhZu;LJUOiz%^3Gsp(WAFcrmlB);nheH?~tAz55My z8Lq9y+dEtS10_8)sqrmOm(F93A`z@BXD*lauax1If?^H@IGj)g*gv2u18-esF>7oZ z$94hY>31(s#qxJq8rO7av?sY${e$$sh1SQp@ePVI$N6Hyw|B}}?jAxPp&g!%1WGdy zVpV|BJ9kM#w~) z#?H?ssp(IXd^M}Di>m9Tf3t*FxTh64tP@#CJEKDW zXR@D=K`Qm<=E|7Z1dt6x6MbwwF0;AkfCw}m#J+GzodWNJt9q#%T*u_FAOsmQP-%@c zE=yp56u#tLFSQGwxJuZw}9cGfZz@R1W0lpL^=6)r)_|Q9X!%?S0pOAhNui6Py047wvt0z>DY~_9=`GW!0F#(8CWp zqve&A-smu2JX-NOyX@1g(FUHJ4LQGKfZQ@X- z*fb^!5*SBYwj&9X3b`RVB0$jVjCm1FSGSq?koKs~*Tng>Jk=y-4&v1LYJuhPDg)z& zs64JL>TE?HBCIU#ddQR;{jwDA;Li)-kx!XhEiUZy;p6p*L$x0Qa?b)jzEN+3+Wj^ir;U~Y-*Q9R4TIfc23z*iy zNCooQLx6rl*ZGwIyvw+N2=xm#al(ol$E(b*!a0r-czNEtp_}prrI7OE3OA+Am+dN` zX^hfaa=_!KJ92gdp{1jJPSLmd#4h+Sy?;f9OydOyd7L7tli``u^TD7xQ*(!49R$48 z@uNc0m&A^+nsjy26(`QJzb*82AubfkyBh*2Uwo-upG=gyLj_w38SJD!6m3E%A6cM% zsH;%Ul1qo_9ncsl?)+)(eV&m59KF*64}B-9V0;Ktv9=opI6V`}$Pk#=31|2Xm-1E* z?GY75&vPt@%%L29sxznP9W72$@pyV3&fX^~HmBfsc{jsKaueRKW*15IJ~s_KkxEz` z(3M;or}Ds0?5)VBFK~zt9jI`)uD0uRc1a%HarmjNUp@zGr`zTlL+b|l@T{Ne!SPCWR9i;+Z51SMJ65dXnt&`l z$JqO0=k1VN=ake;bbUE%9vQi4de&!kb6}yPSEVmPufYT7ZDFR`!gyjP}(CesU>-gF)DdFd{G~B!Wu0z)qvdJ$8-Dvp;KT#Ib;al z5cf#hi$0Tf_UavhRMD%kWhrR1!N~R!8M#@R1}cGGE@yD0>pu81z=m3RNO(HD$#Rr zwBEhYEC#ugvXP;qko?i7nMq&Rw0%ikd79hr2~lzrY|eeSfp_TKt(CIU+uYmp77RFc z2l-<*Lf^bx=LY5iW2EEHyWiTju#F^tyf_%)Y1w--OcW20AV%Jn{{V-!g^BMZ~ggpYq z1PewsEz~;eO`NFaYDz8s%bWnwO3sF3gMwl9ZBAcmDR{9Xr!T*dqg<3Dv6!jUBtT0t z_7-zha;oZ4%3c-m@tOQwCI~9`%Fvk$hOG9^JoS;WutUpMmS%->w0z~3dII;a)?M1$ z!P<+{&r)X8SyC@*Ip!GT`H0UMAQDp_^<9Jf%kNYADF*u?jPq~W;ZNDdD6LP^6?gxj zfC5R?Yl(QyF_Z%YH8Mx1@N}c+NM?P{+R*D1kkdexn= zv3>uqY1qc*A+MqAx9+tHA`x9AV4*7qiT`Ht*MmEpF*`>1XVRD*#>wB|+>pJYRnuuB zvO1MrcbIv6U|^1!gMX$7p7>6LY-r=7G3`*SCc32$tERave_xxGGTvMTvOD*Wc(oh- zL`fJA{%^8p4j6m0Mz@=VFjFD%_|~`kj6RII?!{Z;qU5?@s|79AlWZ<0<>M(P{6a26 z@M2=MCX-lKg0vnP&1c9%{R$p@@vCgd+%-cJ%(_%=tPRoq)X58@x3JgC;px3I2Mz}r zFilRzHOs1&Xp|mnr`koO&gH;X%eG~#+LPlioebI~nx6Yo97mhJ3hmO`Y|k8$rP*-u zg@u*Hb(p&oZ&}n`oMCq*4}yy9hcOrEfmq@`1WPcDAS2{^fxKI?Xl#Y@TDa=Hfa53M zy4u_X$E?=i5SVks)kva$pC6*V-OZe}&bE$e+Q@;sH{{Pu)!US6XwFRB~&LN3sB$bn}qS?e>;!UY>c%-auzpeZ#!!uY2sSBcI)tp!m|3WYr%H zH597dwOW8!F3mdW!*+81%+GK73^WQ?FQG5|TbhX6-J9Erc^01CjMs0?)|{D^Y$KyQ89Dc?;}$>tQQdsEmQRQ)K==Ep8A1 zQbu1DHyW3;OS-b~9M5In?kpu7Ab&n}Tm;?Flt1o>rupfaiweLu3Dtj|ukuAft&zt5 zu@gZn_6@jPnpgJa@~_hCjZj60c&d>;9o73Yh1IJV$2<%gtX9xsdg4f}wtioiqQfv% zxXvAkdKQLddxs^3nivEkvjy8zyAL@?R%N}DVS9A-*vKMs4V&bqOs@TeWThH6C|hR$ z)mhrS^9x9K0$EpOh_Kt{4|a}*6*AO>4wo`e@j#Q!`WwP!t`ayaNHRQnTkt8p-qsNv^_^FR?)EP+jhVar4k)g&Wn^sq6%l-kwTo(Cf z32e1od}*VkeD1+DThE#e$Szlac6}NE6znt`j-$+tSsR9{!c$X6d`S>l6|sd=JDO6A zOPN&$-D1h`OOPFF>x8^+#?BcB0 z^mW_+Qw!h`qp1z@!clL$L^NqC&)^!1R;DrqpgQuYbxz0M{xA$}r1Y#9t#KRsf=H!Y z5R7>fBFO)cLr(pdaO%c^6NpsitjbN`yN)QueMjYtd8gsJ`2uS-FoiZfd{QU!1qC&_ zN=Y5c`{YLw&K#y#)P^EfN_C@ixNr-IHK{ys6gsAUwg%W*Ah2eSYI6muf?U7K8z#dh zj_D9jN}Dz`*)j|w)4w+Ap=Iy>h7iF2W-KM0XfpLS(rmOqt@<-QO5!79iDwsSAi^@3 z?H>+Y!k9zrl@2Y%%*KEyT-eRAQ8R%<`&C!LcCCA8{;5vG>D#Xgq;`h)1Vz}o`mmT) zUMuHGt2k&Jkt`mQzykmQ-X=Q7bIKTfArTc*rWuvyEW*Nxe=R{mMDr%(kk@iA`+T=m zTF^x4Mtwyy)_?9~Uph|1Dl+x@4aMoSnD5kWm(@h^+qAs%BH%C=tdrW;P|eoHkM8_b zo{k+H3fb3iz3o%}Iu!Wo`Wbue!%+fT-}O+ubCCKLW%T*x2(FX1DS&K$g1oH2c5F^H z7Awqt)^v523nav{F*n}!HsMDn>9#f=T7#>EUHQL}T;ov?ngnMlXmU}|_i5J!(UXOK zb=`AL7&B{{pxAk!i`|0!S2DoUGip${_lL%26@Ghg|c|9Rrw!6;0*! z0U_81MYj?ewnEMju`Z@dMBFEUtf#Yf8I440#&s~eK zP+_N+R_lT(=*|%+u9juNPyeeC!0WOS2MK=dk4k>T#ycv+EXb2-!aGVR~sP zHKY1FjUm z22v^?Kh%E2O#gg_^pfw+Q0w2Jj2ir%-ZSfg9!;ne(*%adCS#78WJ4nC@#Q8kv#hI>(n0ACflFuA$Qm}eCQIy#~yii8Xi>>8=_ley|suujf=; zMzkeGtQ&MT+WzzFNCOsrEL6ql8mfuMUFVtYgtBZtQ{-2AxZ?=yIR!w-36JcAqeF)fFXJy6!!4PMh`&*YKi2y;1;tJsoAKmO} zfINC!IS(Q~p>m&)?LPFREJh6Tmh6Qbc%JzNw^B}zL?_h_7V|rlsJ+;-?$Q4dK@pE} zug6zlI*q{kHKY&P9}(s{UnU$~FSKWHem|(epuzEA1blG)cJc49%VQ&UsbTLj^yWvN z5@9TnCk!a>0_fr{jG|C)epfnIp)b3^foL~Le*|Q` z6%1h-8aWY`6mQvZ(46(FpekElY=iG!OuVxtFza1g=&$trDl5HH?PD0ek`P0lkiS>hM;gBHTtCXFKZg|Q)T6%E$Nm9u*Ns;A>%UhoGjaum7h+JQY z6VXSs9G^dty1Ih;H%84K?6tsn!rOl{gk`c@>WBQTdlRC8kefx{y8@(SNx|v9 zHc1r*M5v2j5qA!enY`OA1WUc(DDqzCr?70(Yg*kKiZ%k#l z;MFaciW(jdQzGvjsjH4W^(Q>#kB3s)LI0knWHyVdD>hPaPY)|b%czOs@?JI(S&!U9 zX6YO8AkJ8Yn5qlpVuv+`{y>_extb0t_s@Hlymn`R;L80SlegWyy zQ1II8c@tW(D4-Q=g7V`>lhI-i$e=%iN7@7sVABP?bE-a>cLyz1s zv;4%Wi!6*Q9ezl^2Roe+pi~s zwzRiS=GY`A^4o4Nh&IhQL<&~7;H5ho4s5=^-95@(g9HxvEtbNBp@)v-g{K=E+gYoX zrHoVV$YUKuy%O>o9YzLm0MrZfe~!`GAsf?)U5cD9*59$lC$88#Eg3V6w%e}ji{&29 zlflW_e1cBC%O6NqB{6)6#k6p>)ouyddDb>?Q@GvHCq6p3Zc1Ze4^$>km@zH|r3X)H z)U9nnOC|r_;5kWyb7W6Q{QS|8w=)T`PcNi!hz7J zEnS$q@9c)bqN;{({_msb?2#xmIx$W5e|q$|c>plv9%85&*(?US%d@=!R8YKG3h zlm69eSGkqC4D+Y3`(h8YAZ$k-30B&(^;7ryFl(f~%j*+c_}J(C_@AnV=SY}vm+C_6 z+4I(zX*M1=XUiMXOQpdX=Vbru{RYYNSt})}i)1Zn>_r&>EDN2G8PDORTa*L;xkf;& z$c_B@3D*}`zVSyORMVe(%-eN;k+KXL;G3t$Do_^x^g%(0EeItsAvC)a6jB1f!OC2d zCPqDzuXVD7Gg|DIY+-Po;>Ph^wayg$ViFr7zH4tH)!Z#ckoV%X`&xTC4^Y3grncEM zJlAWj);yvA1KZK2#|zZvcR?_nE6j1R!l&kGWl4t1vzuM>`$Fjb-Pe2(r+GmF>C4q;8Htv41P{85Sz5-Titu~W zxpt3s!BXc-*V&x1ODcI6VI>krz!o$ku{!%Xq^}|Qg?1~}hs6-&r)(0*_PlqUD?;O2 zlwlo;HZmkrFA90ZX*>^Nt;ltYNs6EzPX`nauM4>%_z2MM!Uw+s&kb}nDQ4-W1PkMn8xybhQ zTlwryT->w8U+C1{{rlyOSsCel8IL^BvR`W#+u5$JY(p*D4}Gvw#(vv;HZxhA zS`hyA>z9%SbpT++g0HtmvJL7+c-t=v0ljg;eK2BRBH;^L{X0y^ZiOP}AkYmYh#cWz zQyAOuw)6DI!^sP-lQh=^X8Dv0UZW>N<>Z%He~UeH54s?pHwn?7ow?Ze1C_VZ#~C~m z2wl&ttR1`dGMJNKayw03$6}CSY^oIj-v&&((h-90V#NKf(BbrtX>Kq|UTm#~65909 zdgIaX`JFpno$qVRRCKBp8kh$N0a^O%<+K*5zoqcmx6#ZWUd1-8hTy(w_ZRc&P|*XG zZor%E@m zQ>08UX+M%d5EYO>r5eySDbnkC=a>F#MyQwPD&7O<4%BDq4 z+D377?>flDqUHkC2|5wX`RnDwT=Q9AJp@U1)x={}wY% z*j-w#_Qi$4*vd!d!Mgpum=-M0Y!RH&^70Xr`O@a*`Sqljr2ilbmLv+DJHl@m?X&*O%&B`BCsHr~tj;59UYt+Axy7YjMMximy&L!pZF=G-0 zcP;;Ur4@y;JfOvOEFTL}r?_@hJ_HOF;W428T50@8qzF%&dYitK*slYE=aBBX^E&cv(<=EUg$R;(Ip5tV~lqdgENp2Ed z8&r$*&4q$wWIw!8bM#UP?lIEUzq2a3Zi0M-9->_oTKtvv+4#rZ$)l(d1XTDb#jX~H zAOp{tI#gsIe@E+JZY{g}U~!63`Q!EQu@k^cCy#ePp~~@erc>^$T6x1$Utd%2(~G(? zEI8I`A_V^U-rru76Z;bb1Sa6n$9u|q)s5#rh~os_0Vp?1BAgD}P5+Tdb{mQ;PY}r2FAB06=|NZJhoztTaO(OB zg9m(@TGM`RYHqu%jQHN5lb8fPsr+h!&Jjxp$FUgBcwScBOBGA7`9aKPB&!D|7rH%G z;C49L6HV?uz>@Co(q~77Nk}(LYJkD=qR$-&Cb2MOMdt0`g-&LHs0}iZ(|=cKLq@dt z7^`k@CP-h_AUp=UFz)DJl3GGI87HDe@NxS@v)&V7fP|rK;{8Z}e*4fo_uyOp@ud{S z*?F<7x%R#mCuIj~ypvC6G8jK0ZT;K2$Sl~jqwy+Bjk7haz+x$ojkC6DZZ2#4>QUiP z`E4s6P2}=QyuHc%3bkloQ~p_-2*eZN-rjfc!@Qu|fa-n!jG$+wm~HV7vG-GK;rN_; zoYbR0xC)H3*>6}WHmEc!=WD-B8y>)5h&s9@3LygY-Oe|mloQbm(-5Uw7Xb)x_8J8$d)+L8VAXB{T&rAP}k)!GIEqg7hXuAt0fI9z+F^rlAP| zBGQ#6RXR#9A@oR%N+9%Vh?I~!{O|j$d!P5cYuzvJx*zVWm6ge4=FH4Kd!Jp-KKtiX zDD+aP2>Ys}__p;5JwomdQFCrXN7ietmh9}Yos(eDGh#zsn~v@ePgnH1j3iD!;`0MS z{^@|Fd1qWeJya!L#n@eC%JnLsL|u#j>W|d_EdEpb8KrOZw*1r;v#+8ZGik2OW9`C~ z!BgXPsp->Us_!^B+t2y;>&G2P;e$f4-7sKVd7BoM&iLJNDy?Bd@Zbd)LPAuYZR0Yk`k!RX_)?OB=gh z_n@x$6aTb0CiWO~`jxm0q|C^VYq58txxdWDDLX#}QZiCgCxOWB^_bH}+T6c(xph86JLJPFV!&9=vw4i?(tuY6}7AvS93K!@=A+e~j zlay_NtzAED0!w^EOwd_T7}%aW(AF&5Sxq-94DRv=^5S5?dyvejtviyXcIA@Og+%|Y zJ8kb_n{~xVO~Q!`%?^)W?q&=-ugf6g)HG{BjQ!^ce#qqW8}dZmw6fLAPoF-0%#D5O z=Eg)tuFo_A`4sc!^`~1IKj&U$t;)h|sGrMyD`#))3-$9cJTKJedyj+MdeYr!%IjnD)Qd_WrBggBL@&Tm z8P10pPDZ$z7D+s~0Z7<`BXy>80HMc6#+XNi!?{SxQugiuZIkaWtRHWF+Qp+j9ZYRa zPCtkvY#fuPeMZ|~UT$tZ6_$B#7UZf+`rz^QC&lJ9B$WI7gY`IpC9vQ{VzlB|Sa<{V z;|DKpU)BqtQYKgy{;wb!%F`FCSk35ksrk8Sm96&YUq*k#lq|g^uau^}c`VScf4x&t zh-s|V^kb}_9-+jVSF!ACN9A;#Z?rJ5;_ls<$!z20tfml4CiOc_V_pRfkTb~Ni+AgM zbjQ79pS!({PmFlFMYBw~@>A;pYa?6_V{fsWByl3W+I~U0;A(Aewd?c4`zo}4&%4|O z$9$2^3_rdFSUqQq%`h?%BnV?)q-61Q8oOkA{MHihbQayX!usGvcr!HQYi-M_#E&z3 zmY(ryM6=EFI%;6^Y%xRA`Duxb6RhcR2=~~|UJF5(zhkZjNGsy>N%v#Nu7~XT?EP8P z0&@0K+&RSV+0FGNJzUsZwj|64E*E!R`CK&Q8my(o1ayT<(nHfMsAuXTP^!x{8eK*XM|;C`31+pX>Zow1%-uP zz6aIbe#K`_7ZnxdxZpGIj9YziV7_WrQl$O4imK!-)&EE>Nuum8Cqk|sx$@)P+H^wC z*ZHHN9uU_04-YpL(&6MI>17fF40s@em-1|0feW&?c;_PjFo)B-BY)#`HqGwPWf=&G zdH894E5y9(AQ|RNf0f>{uf7y`ZXC}H%=-p%7GS~-s^4{`s1O4hS%92(-OvqhQC6Me zh??8#=bc`Q-EX`$(o>3D@uRE~SrwxWdOk^X{PtC5kq-8J)x@z5t~Ba$VvcvYOr$;| zhgu-y`t7VDW~iB*RMlb;_0JIk$LkC;EyJU6xxGP&^7gpI?l!b+~S&0D5h6 zvs3s2#R{k~AO)I`JK)3bst7^2uf7%PvM#vMt(~)IT$Be3n!iM(oieKaDc%&4G1!x% zZ@&vWtNz^*-pHH8womb^Lla}fyFZcF{J+oPv(BGtcC2CBWphBw#5e0qi)lDXzUu$& zQNWR_?}p@-6tx`gzJl}D!ReCwGk|#o{eu=zdeM;1e!btSUcNzlceIRoIk>Dhu*PHh z4dVN4!Lb)g-vA|+5hobEAH`}h$Z{mIMuL;xwN|d;e{C8Ajf~!jNm`B&2$6p9Yx1)7 zB_(l7OC1m4TwGj#mbgUm{04A1+)n(jad~41F9}#84J?~0j;}IedfzTFS&{eCUy$|g zYV6G*1<|@q5!cO0n*BuL!B26C8+I2Sv=5!@UTZrkwErS!8CW-U%%9PTS9nQf20wn` zmAd7Z0W7nqioh$g(2N{&SIF?0QWe!V-_CWiqWpuz%FNHn=9L8(!Wc1v0PnrIC}UA6 zF`|AodA(^r4*1A~+Oam#b|(L7IJE%t1-kS@qhjXpRCzcbi*WF>pIpKL#-P;lcnZ*+|kgc)*wT_mIpayMQFNwXilO>9_Vuh$2c-t1Rx)lrhI(3AJ7%Gt?MvFJ=^&x zXVd(ZKw54WBr{&`?Lo5z{9{n3GX`$@=glTgf!JqzxRv5AJ`y7kwDKiAaH$Xo$}MEa zJAZ$9GIj^+J7%7ma?#pv+zI%a_MeSC`truBp5{-^xu&T`4BkFdzgFk=^Gl~NO2wPy zPm-BUH;@lIU5_+(3IfIonpKD|H|^}{)(v3s?s6NvVfVOAHcs=CQSOj^7c3SKp=I}! z^D_$z_a8ib@TxATb2sKNsh0PWBO9PGXS9PsBebmEb8AfOZM_kh0-^o zs#a!OUcV-Iz4{<5Zl&V}>3JEme0!h}&^%!ZcSdYVHT&|*LHhs*8h(?<>dH-Hi5?iu0dq-)7{Jue%gVY`d1DN)?U|_j<40Vu zTU$}A^Lh2v$i@8aOO+pijI+{@e4FX7Zc15iJ~LaG#3OzySM87UF-uvCmvRij{#1l_ zOtWV%L<@*e2_Kne0DzxNqd3b;8C@4*)_Lrx!C3K=-j&+jTlxUt0AF|%)>~+Pb!|#8xsR*g-FbotMR{NaiyVW3Rr_Koy zjGec*;+DOPg=N6g+|bv@bhm?!;gD6Q-96&M_uGq`I=0oGo;AH<`}7D|;1LnXX%R;$P?~C_@?`x< z!h%=(p%MrK@>HPYOh{lZTKAK?=(hb?H+MA86oLO}d>d6C_&Pp7k>i$vY3k+>y#2o& z3iN#c`f*V9ccFGhC-P)j04JLH$X`939de|L+u%>-&hJKREShr_Y|FQ~pu)oq_%C6r znZD848#g~;gn%MY5cG>T-OJ*-&w__rKK5K zcXkQ|#aMd6i+HL4qu3kB4`)_83VGGl)fqyw04a)Q5xP5J*&`AD*-)#Lre9ehJ)`-} zynlA}dt~R(&mYeqjMDP2Xz}#((3GhNInUPjbM?&%gX7&~rsiiW)7&@3bVJpn-)XaK zmol;GZ1J&2#uRq;Dwf{Cxo2|=u4xm#biTVLOU^$ILwno^Br;ugKRiXNrk%LfW!}ZA zQrJ+M4$(^!IJ~_y}HE=f{UL`S((dD{-l^(N8Y^Q@$c>7cc~d>G$*!>E=UiN?1&&lKqx)XfebYOkj*0YLwz6z*6!SA^*nJcz|671Z7JVF- zD&C^tADa~J?sq48PbNEKl5>kcv>Y(wG6UvQ!z9~foq7^mXh3YvdQe`Sez5&9(2#8y8@{YDb(w2#^?AU0M#oO=B@V-Y1Od+AHn5zyQb*Sc2 zlOIKKyvv8GF8O7(JnQMaFY6^J%!4R>^-~#^JS9b)ryGR8IC_q7jPcu2!9_%{UOQ;gBqr%X;3ywqTxUnsz+}*ttVO_T1}@l=Hi-505`&WMCL@ zP!^B)V)re)4=&FP%vSdXX9@>zFbD^q<(@qX&BTbc9>C&(+AM2}Q{NYkTdhsOmQW@4 z8`u{o?k%DG4D5zgZ5B{|y)E-EIFH@Ne5W5QeJ;IO0}1@&D${UX%2Onb-?QOeerDjO z!NU;hbjq-Svh+{hO)DT?)Bvnei`@Zcz}3lJBJol^^W!d9oUU-lh$~$(Km9uci@@0p zpzg5ZuVYOI{KlFW{y?pP&@j^D;)BufxV#VDPu!B6W|9aLRwdxpcj~R8;q=WbnHUeK8;F zJd^`1dh{h+(j?E&l3&_M-eNAAqrJ6$3BBbTSHE)DowJFd8>=rLgTWdmWY z=NY5cYk=8Thg|Rf-5#B)er+t2J`CF$g)2#|kU0^((LEl$Qh1SniE+mqFSX z;Dhj}1uI(D`Ph#YnLl?-zGiz!L%Pm11bpG`%uw=mXnTFmXK6%IPS*L?_gBQpbk!hv z+YrjbpNc6m)^*n%+D<6>t?=wMrYj>o=82TW;e3?mHW0OU{1(pqeAenHsd{gDnS6Dn zkza?`;V>Vl4I`Ju|P;X zF#6x>BCyifcPCO_{iWycU4lDNgQ}`3tUFy~Bf~ep&DqDA3uee#ufEL4SgrOSAM=&y zN~=_Hzi#oz3!l9f;Cn%3b%yUJL*+B{%QIn2n|jpgO#c1f6vCqjFd>}&Gj=@vfLRE6 zZcV(vT`(~!fPFKqOD4OEuSbB$U-)0_bJ=uk`1}+;xyq|EUdE<$ZvHj0WzD<8X|OQp<+`ta?H#&jGN2jYmtO@zva{Lx{2Z- z7uR8HK6M~#uf*{gP{(JQt%Bg}I^4+9AS)8&>wktLv#TqQ9=ziWv^Cg;mo49oz|W&& z-0N1ydujD+&fD%uS-8A|l9V3CPMc>}jansuQhq?`gj{0U5PjwKO}C1&#iuc8^i*7N z)h_mxK*GkZ=PMQU*EdeW)!u!dU+0)Ouw=!|o}ZBF(~SS!{ZbwewclQSDIafO@2#VW z*#}n=o|BsX%AbVqXg&l%-PsIWWu@m)du6AA0q#^vXGpb2V93zuYY8v~BcM0PvuT3`8hCjbugB9}KYu-?80u^Vbl(X8NNnZ>KR@#uuE&h(z4F^J3 zpjbDXp&K0dFP7mwwQDDYGhfGV@+smpy_?FlF`ij;;kS--6p4-_h&M&M+`7(CTEFN( z5(wkFJ$0u}m~c_3-HmVK#Iv(Qf>&R86+Af2`Di7a@zDpaDe0*7LnZ$A^Fb;c*OW=e zw=g^pAo8txAqVo#e}zyn$V*g9pXa2K$4Cug;m;C~5cYRe+Kcqd$SNw~?lppS_gb83 zY<7Pk#7F2){>_GkdejvQdq1=CASTTD=}~!>VC^PQEwNkmc=5~nKe}@Yra`c?xx_p{Dd#YCOri+yvoIi81b%TM+DS z@)#Xb|@9xG0o@(Z+ z4GpbxVFJ(Xn=ksKw799Sn!A=f&N2??97>H~E38p#29PmAfx0cBLCB1@n+C=Ue!;~% zH-roYne27X2;VY*Qe&!e4^(oS7XLyg%uqY^a&wtyGnzxxx*OBv17Q^*wx;X96W=RC zsvx<32L^f}Nr`)o(k`owYPmv7Bi)n6{UrxFb>13l2FL-sTQ-@-CdfG2q)FU!TYaix zv#eWh{V9{BQG<+NJ2XccRjISXa*T((UH&)kVPxJ&NX9oz&WKlvGv!cjT2?gy@ghg0 z{BILK!D$gAMVU<4qQ7obC|9~U7lCL*KBjw_5v-GJHJPs0?Jao=A?#ov!|Dy*+NGi!TuPr{Zi(Tkp^FpS1ckwlx zE$uF11izIXvO1lmiCJH9tLR9*Sc?0rTB4bbUvS$_<(dfY<2f|7^Wy>Vp+>OQOZZ>H zOZXDmE0qDi!tfk+LnBz#bOsBv^Q>0H1slWSK%r&us)gsri!q-$efiJ zsSn14{z_F!qH?5X?{EIm zn57SiC>X)aefw?V`h3J2xKQ%V!d=|e;;+Xe^QRvDN=`Dh%B{`A@rw}L-Y!$TX>@e( zM+ZzV@7z4N>^z0sGlJdAu^7QF;rU2=9XMYKIZ+DfVje-g0JRxvIHV=&2l)nTJB- zJSUd1JfV-M1_*K@^jB%&$ovza?C%!spwbw_uE)E%_joB*TV1ZZNfOCh>?_|ZVuJYn zqEHr52k9QaZz)_fU}LPaC4}Bmpc3tU9|5qWc0I32b4e2oCTJ58g2K}h+sv)?!U(VV zy=de0zUZXjOLK8U*V&fvbA{>(e%PEtfs8$qlA23|QEZS2>gGA>eS{a<%_P*9egt)A zkUP^Ql!W-S&vK=Dw=xf>0MMTKJ|=sHxt#DBBTsK|z<55HP$_l5&}S+G4BF+@iIoAw zH}KHrC)@Aez-NXk&6g3+X=yut51w9w#<@)hPz-7s4csP*9!iMK8MnRyr#y78kgh%a zl!qgm{j&%3pUKtg0N>&HFIaCd`St?of56sKH^*Xlv|~5D1t1mz+yAARn`a0VRW}n%c4e({cWlyRgJkz=(!^vE zX?}!O?|H90AAy1I^;gy2m`tZwu{c{|;*b;RGBLFxnBll0d2k z6TrJ3XuR021vU|rGiccf0H z9h9bCkvJH@#HHWc`T`CTyWnshBKHL0N|``wMX7|x>h!~so4hF#L&%=2ZnV~CLb8A! z>6|+c3xE=ho|a_EO%e)1AKXX35EmfNgX8aSC4+?x0IVgU^if|mGtu3{znc6#CHI;* z^zO+tv#JPD~#~7lxG+|F+&Ub_fX}9+pD4mQ|Mk(zyFjV^?Ed(PO;tJS_C8c%T|UZGnQb<1nZ&1YH5yqbN~<4>6=t<5H=GzY8;8_Q_@ zNFv2F!G+(iQEwD%7vEtU6^&ea`ftxA6XK$ZD3F0XF#C_^N>Wi4^|}U2-FA?!&g&ce z@|F~kG`oZ}tz-FPvY$-T>2W%DN>W6d{n5uW87_odI5m0pM?0C$+qgD(o=oTA*2;GNH#f@7D7jLK=-N?Q1}7Topl6kF0Kx(JPny z#>xKGT!wE41R3*hZz%}x4gmOJuRriV-LkK_eEsdDC%l?&UiJF8<>JMO8z~6g>V6H% zIn`dVQ6rq_Znh6>73Fo@Ht%}(`#tNC6>1byGEKK)rNyb5I8!9Mb`p!4S#jwNbHWVK zGE??~$(T8Xc+omdwo&oOr6>P~zE^`hfc>lQ8*Yd`!Sf^b#pNe$t)xGG3!PeVx#jKM zCmP^X$1>Ir!~@m};_lUI{nYGPAgdlPk}dAv&cua!-a~XYIb}f1G8_ALV4h>Ou2O@( zzDip`?2r7YKFzZlSh%s+q|M#hR?^q5tj%{?+5ava|1hCzFlk`nU+h6j^kKgZ>t2G< zGhqt9E|gPq#;SbTK8hFHV^VVYiM6Q)y0@?-h^p7YL+<#O_djpntJ_|+!fx%lKb;{a zt_4ewoi@9s<`W^oN+|pd$GA;=8ZB7Vsp)+j4Go~LhNcQiau|9pP5P;Iv!t!sDt7S9 z4fuCw4OU)?MDLK!8R}XhY>4LArV2KQoDITN?mxKY!Jj&x1Zo7h6j~cJMKjiMT|<*R zfH4>V+v(*fSs$Orik+R+PYY>uh@GT4)p_{|4L@_Q^R5PfAxZPJCw`gxIX-$B__;B# zr@>YyG&2oR)A1@1;-H4Td43`&vd!iG#SW&x9YFaxNeViU8v)dzp?S&$lQ&@r2?wS< zk4G{d#q)WmBU}&SVg>kgjs{0vAqGn2C9>`L5Eno-29gH;3i3nbVyXcyjsv(DFcR%| z)*hQ~`#;ga$oW_GyYAG8zYq_xF`yIWr7^}jUzEHWl%^rhc}{NJ_?n8e&bUMad*lAQ zRPUvb28B7})Ky93O{*(27ho54AacA2SH&Y*2m+Eb9C0K$k^j)>e>)!YEeo27Y0s8< zA%uk?LeZ^aJd-<#=d!J#Hp*=~7as3rxO7gVt&+wU29(zlx2CCaVmoRc23tGe=7gbN z1|m%tL~G@oN|JRSZ$4g%lnz zwAk)P2=K`?0ir9OY>vx5^CVX}U*kR|VFgS2Fi%-aH2Lo7VN+w|vbCCF68rH-`cM|J zVs|~?;6`%jwj`03oM==p2=%}|)&5+g+I zB^cr&h;VHH{_8Vl6J3^#|1YY3VWK9WPswXc)Bt2>F)`E}T_NK&#Oe`#tW0fHFSRUq zEPnfUk$!s6WICw^0Cpz526WbzCsZvpX}vn|VFm5R?CGFM^E zd_fQ>s8%dn7+W)P;xY5lt$bB;141p(c#3rW|RF5bl-ty5)P>2P_?NBk6!Eh z40aFTi^O*G6vbu07Hi?NN*l5lQq$y5;DK6SXBQOK=VGV+g*e$){S66 zWydE?bdHtsWW`d&0&Fv$C4>LDj91cY4T{*{1BwYGVE)TBIxKSW=Hf>u;&&1uiGHF1 zt7j)|&oWDZ`1SessM_gOQ58ZIaS*7uLi#hNO$Y>fYWUx6mi`yU|9^Af!7YVVz~^|b z3l5-%QIVpx^4(?$!J^$P30ChOlS!IPAUnY$6a2c7i@5otIY%?}c7nU0_dWcR9m?2^ zbrw)qH{fd*eLJXR0zGo6&QG^iPeH^?rvY*pZven>TcWKJNj+ee_#1J%&bFA&uk0XD z9*lOfj1lm1Mku|Rgi}xtSncUWCcwfa8R5z~(7_UUml;5Ia!arhw>kVOjRQL%#Nnh4OXm~pB2Bd9D)Eb@l;37!F6KLs$k+t1sK*9Db> zY}RGlb`-$7cenRuv^t*Ip~Y{NVly98&o4JB1MpL?)}|w;E`UJ8z|bTw1h)g``rr(ZQ7gG&ilaQ=qU#pzHa^jPo%} z*KKqu4TrzN=9eIZfo2sRrPczB;ndH44FY+ZSGpNO-7L{Xy$aop+irwUZcTXgv0jUA0OS${fz4l0%i($f+$2~&R7IsTVaZLSr#vp z;e7*9A7Qnkf29>!%Uu2_#jfvBj7!;e^M{q7${QuV_{T73|kOC3XF+!+8pSHVp9A z;{ob}VpdiXdy(Abf7jBWybS76-K`111ul*2VvxsCJJn*fRp#sE;O4Zo27O)e0NtLc zd%_-L0b^nEYoisVK~9Umw+6rp^2;G&bLjk#pkz-d;&IRP?Q6I#kv$OTUc^5vu_S#P zDLy``!hKxDPdp%WN9Mu4szcQ31+*2$SkVTZdum`8OyntBw}xg8)~p#po67qR1BF=) zfi61|$LGU1hNX$bwT!EP&!f>JvDcfRqS$>1wMlwRW?ci=l;F?al-%ql0C;EfZ8A-GUe@ATWY}cKrWx bd+$VN&!tE*2$pdF^M=qn2HGW>cH#d6P#)NF diff --git a/articles/run-multiple_files/figure-html/reproductive number plot-1.png b/articles/run-multiple_files/figure-html/reproductive number plot-1.png index e5e37cefcd97311b77526164c7c6c825e071f5fb..21a4b88f7b0e9508688d8a694fa501d9ad78169d 100644 GIT binary patch literal 70055 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 literal 78967 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 qkJA%e`;}X_#X>>3Q<0|^vk4kh(mR&LNdd}!b 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 model using a random graph#> Number of entities : 0 #> Days (duration) : 50 (of 50) #> Number of viruses : 1 -#> Last run elapsed t : 190.00ms -#> Last run speed : 26.22 million agents x day / second +#> Last run elapsed t : 241.00ms +#> Last run speed : 20.67 million agents x day / second #> Rewiring : off #> #> Global actions: @@ -398,14 +398,14 @@

Multiple simulations - + + - - - + + Package diff --git a/pkgdown.yml b/pkgdown.yml index 9bdad899..80a17513 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -5,5 +5,5 @@ articles: getting-started: getting-started.html implementation: implementation.html run-multiple: run-multiple.html -last_built: 2023-09-19T15:38Z +last_built: 2023-09-26T04:35Z diff --git a/search.json b/search.json index 0ffce256..025f8e67 100644 --- a/search.json +++ b/search.json @@ -1 +1 @@ -[{"path":[]},{"path":"/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement derekmeyer37@gmail.com. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2023 George G. Vega Yon Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":[]},{"path":"/articles/getting-started.html","id":"setup-and-running-the-model","dir":"Articles","previous_headings":"Example 1: Simulating an SIR model","what":"Setup and running the model","title":"Getting started with epiworldR","text":"example implements social network parameters listed within ModelSIRCONN function. virus name specified (COVID-19), 50000 agents initialized, virus prevalence 0.001 declared, agent contact two others (contact_rate), transmission rate given agent 0.3, recovery rate set \\(\\frac{1}{3}\\). create model epiworldR, simply use ModelSIRCONN function. , example take basic features epiworldR. Printing model shows us information. Nevertheless, can extract detailed information using summary method. First, name model, population size, number entities (think public spaces agents can make social contact one another), duration days, number viruses, amount time last replicate took run (last run elapsed t), rewiring status (). model also includes list global actions (interventions) called model run. Next, see list viruses used model. case, COVID-19 virus used. Note epiworldR can include one virus model. Tool(s) lists agents’ tools fight virus. Examples may include masking, vaccines, social distancing, etc. model, tools specified. Lastly, model parameters listed. execute model, use run function SIR model object, number simulation days, optional seed reproducibility. Next, print results simulated model using model_sir. two additional sections included summary running model. First, see distribution population time 50. section describes flow agents state (SIR) 50 days. example, ’ll see number agents susceptible state decreased 49,995 3,364, number agents infected state increased 5 0, recovered agents increased 46,636 50 days. counts states change based model parameters simulation run-time. transmission probabilities section outputs 3x3 matrix describes probability moving one state another. example, susceptible row, agent 0.95 probability remaining susceptible state 0.05 probability moving susceptible state infected state. Notice chance skipping states. words, agent can’t jump susceptible state recovered state; agent must pass infected state progress recovered state. logic applies moving backward; agent become susceptible infection.","code":"library(epiworldR) model_sir <- ModelSIRCONN( name = \"COVID-19\", n = 50000, prevalence = 0.0001, contact_rate = 2, transmission_rate = 0.5, recovery_rate = 1/3 ) # Printing the model model_sir #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 50000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. The model hasn't been run yet. summary(model_sir) #> ________________________________________________________________________________ #> ________________________________________________________________________________ #> SIMULATION STUDY #> #> Name of the model : Susceptible-Infected-Removed (SIR) (connected) #> Population size : 50000 #> Agents' data : (none) #> Number of entities : 0 #> Days (duration) : 0 (of 0) #> Number of viruses : 1 #> Last run elapsed t : - #> Rewiring : off #> #> Global actions: #> (none) #> #> Virus(es): #> - COVID-19 (baseline prevalence: 0.01%) #> #> Tool(s): #> (none) #> #> Model parameters: #> - Contact rate : 2.0000 #> - Recovery rate : 0.3333 #> - Transmission rate : 0.5000 run(model_sir, ndays = 50, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. summary(model_sir) #> ________________________________________________________________________________ #> ________________________________________________________________________________ #> SIMULATION STUDY #> #> Name of the model : Susceptible-Infected-Removed (SIR) (connected) #> Population size : 50000 #> Agents' data : (none) #> Number of entities : 0 #> Days (duration) : 50 (of 50) #> Number of viruses : 1 #> Last run elapsed t : 421.00ms #> Last run speed : 5.93 million agents x day / second #> Rewiring : off #> #> Global actions: #> (none) #> #> Virus(es): #> - COVID-19 (baseline prevalence: 0.01%) #> #> Tool(s): #> (none) #> #> Model parameters: #> - Contact rate : 2.0000 #> - Recovery rate : 0.3333 #> - Transmission rate : 0.5000 #> #> Distribution of the population at time 50: #> - (0) Susceptible : 49995 -> 3364 #> - (1) Infected : 5 -> 0 #> - (2) Recovered : 0 -> 46636 #> #> Transition Probabilities: #> - Susceptible 0.95 0.05 0.00 #> - Infected 0.00 0.64 0.36 #> - Recovered 0.00 0.00 1.00"},{"path":[]},{"path":"/articles/getting-started.html","id":"extracting-information","dir":"Articles","previous_headings":"Example 1: Simulating an SIR model","what":"Extracting information","title":"Getting started with epiworldR","text":"running epiworldR model, list functions can called using epiworld model object. demonstrate, start basic plot get_hist_total functions. evident plot, SIR model constructed epiworldR displays changes susceptible, infected, recovered case counts time (days). Notice certain amount time, curves flatten. , table representation plot printed, complete state within SIR model, date, agent counts. essential statistic epidemiological models reproductive number: epiworldR method plot reproductive number automatically. function takes average values table date repeats data accounted . Another typical piece information daily incidence. number new cases per day. epiworldR, can get incidence looking daily transitions states. Although function get_hist_transition_matrix provides desired data, function plot_incidence nice wrapper visualizing data:","code":"methods(class = \"epiworld_model\") #> [1] add_tool_n add_tool #> [3] add_virus_n add_virus #> [5] agents_from_edgelist agents_smallworld #> [7] get_hist_tool get_hist_total #> [9] get_hist_transition_matrix get_hist_virus #> [11] get_n_replicates get_n_tools #> [13] get_n_viruses get_name #> [15] get_ndays get_param #> [17] get_reproductive_number get_states #> [19] get_today_total get_transition_probability #> [21] get_transmissions print #> [23] queuing_off queuing_on #> [25] run_multiple run #> [27] set_name set_param #> [29] size summary #> [31] verbose_off verbose_on #> see '?methods' for accessing help and source code plot(model_sir) head(get_hist_total(model_sir)) #> date state counts #> 1 0 Susceptible 49995 #> 2 0 Infected 5 #> 3 0 Recovered 0 #> 4 1 Susceptible 49991 #> 5 1 Infected 9 #> 6 1 Recovered 0 repnum <- get_reproductive_number(model_sir) head(repnum) #> virus_id virus source source_exposure_date rt #> 1 0 COVID-19 23811 44 0 #> 2 0 COVID-19 38232 42 1 #> 3 0 COVID-19 19769 41 1 #> 4 0 COVID-19 28486 40 0 #> 5 0 COVID-19 6422 39 0 #> 6 0 COVID-19 7907 39 0 x <- plot(repnum, type = \"b\") subset(x, date == 10) # Reproductive number on day 10 #> virus_id virus date avg n sd lb ub #> 11 0 COVID-19 10 2.450464 646 2.263946 0 7.875 plot_incidence(model_sir)"},{"path":"/articles/getting-started.html","id":"adding-more-virusesviruses","dir":"Articles","previous_headings":"Example 1: Simulating an SIR model","what":"Adding more viruses/viruses","title":"Getting started with epiworldR","text":"epiworldR supports multi-virus models. code gives instructions implement . Using virus function, give name new virus/virus corresponding probability infecting given agent. example, prob_infecting set 1.0, making highly contagious. officially add new virus model, use add_virus function calling original epiworldR model object, new virus, new virus’ prevalence (set 0.01 example). running updated model new virus included 50 days, output describes simulation. confirm flu included, notice presence “Flu” Virus(es) section output. output interpretable specified previous sections. Plotting previous model (including flu) yields following. Notice presence two reproductive numbers plotted time. Variant 0 refers COVID-19, virus 1 refers flu.","code":"# Building the virus flu <- virus(name = \"Flu\", prob_infecting = .3) # Adding the virus to the model add_virus(model_sir, flu, .0001) run(model_sir, ndays = 50, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. model_sir #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 50000 agents, 2 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 3264 Susceptible, 4 Infected, and 46732 Recovered. repnum2 <- get_reproductive_number(model_sir) op <- par(mfrow = c(2,1)) plot(model_sir) plot(repnum2, type=\"b\") par(op)"},{"path":"/articles/getting-started.html","id":"tools","dir":"Articles","previous_headings":"Example 1: Simulating an SIR model","what":"Tools","title":"Getting started with epiworldR","text":"Now, implementation tools combat viruses viruses model demonstrated. First, sake simplicity, remove flu virus SIR model object (keep mind index flu virus model object 1). Next, provide parameters new tool using tool function. parameters include name tool, reduction probabilities SIR model parameters, increased probability recovery option. order add tool SIR model, use add_tool function SIR model object, new tool, prevalence tool. example, assume 85% population received vaccination.","code":"# Removing the flu virus from the model rm_virus(model_sir, 1) vaccine <- tool( name = \"Vaccine\", susceptibility_reduction = .9, transmission_reduction = .5, recovery_enhancer = .5, death_reduction = .9 ) add_tool(model_sir, vaccine, 0.5) run(model_sir, ndays = 50, seed = 1231) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. repnum3 <- get_reproductive_number(model_sir) op <- par(mfrow = c(2,1)) plot_incidence(model_sir) plot(repnum3, type=\"b\") par(op)"},{"path":"/articles/implementation.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Implementation details of epiworldR","text":"following vignette provides detailed information implementation epiworldR. package wrapper C++ package epiworld, framework building agent-based models.1","code":""},{"path":"/articles/implementation.html","id":"general-flow-of-the-models","dir":"Articles","previous_headings":"","what":"General flow of the models","title":"Implementation details of epiworldR","text":"core function epiworldR run() function. function executes model saves results database part underlying C++ object. package implements discrete-time ABM, meaning model executed discrete steps (e.g., days). run() function executes following steps: model reset(), involves: () resetting agents, available, restoring population backup2, (b) resetting database, (c) distributing viruses tools, (d) setting initial state agents. steps fixing current_date = 0. model’s state recorded database, current_date incremented 1. resetting model, start iterative process repeating following steps: state agent updated. States updated according corresponding update_state function. Since model discrete-time, state changes stored promises, meaning agents’ states updated immediately. Instead, state updated end updates. done avoid updating state agent using updated state update state another agent. example, agent \\(\\) infects agent \\(j\\), agent \\(j\\) able infect agent \\(\\) step. update schedule laid , changes made effective, , instance, individuals became infected update start next step infected state. Global actions executed. also change agents’ states, just like previous step, changes stored promises made effective actions evaluated. model’s state recorded database, current_date incremented 1. model checks whether simulation stop. simulation stop, model stops. Otherwise, model goes back step . steps included epiworld epiworldR network rewiring mutation viruses. implemented future versions epiworldR.","code":""},{"path":[]},{"path":"/articles/implementation.html","id":"transmission-probability","dir":"Articles","previous_headings":"Computing probabilities","what":"Transmission probability","title":"Implementation details of epiworldR","text":"Generally, epiworldR assumes step simulation, susceptible agents can acquire disease one infected agent. probability transmission \\(\\) \\(j\\) given following formula: \\[ P(\\j| \\mbox{one}) = \\frac{p_{ij} \\times \\prod_{k\\neq }\\left(1 - p_{kj}\\right)}{\\prod_k\\left(1 - p_{kj}\\right) + \\sum_k p_{kj} \\times \\prod_{l\\neq k}\\left(1 - p_{lj}\\right)} \\] adjusted probabilities \\(p_{ij}\\) computed function \\(\\), \\(j\\), virus. following section describes probabilities computed.","code":""},{"path":"/articles/implementation.html","id":"adjusted-probabilities","dir":"Articles","previous_headings":"Computing probabilities","what":"Adjusted probabilities","title":"Implementation details of epiworldR","text":"Viruses tools provide way adjust agents move states. Viruses epiworldR contain various baseline probabilities used across models, including transmission, recovery, death. hand, tools alter probabilities reducing/increasing . Furthermore, tools alter agents’ susceptibility, infectiousness, recovery, death probabilities. Currently, tools alter probabilities constant factor, \\[ p_{ij} = p_{v} \\times \\left(1 - factor_{host}\\right) \\times \\left(1 - factor_{target}\\right) \\] \\(p_{v}\\) raw transmission probability virus \\(v\\), \\(factor_{t}\\) increasing/reducing factors tools process. example, p_v 0.9, host wearing mask, \\(factor_{\\mbox{mask host}} = 0.3\\) target vaccinated, \\(factor_{\\mbox{vaccinated target}} = 0.5\\), adjusted probability \\(p_{ij}\\) \\(0.9 \\times (1 - 0.3) \\times (1 - 0.5) = 0.27\\). agents one tool, factors combined follows: \\[ factor_{agent} = 1 - \\prod_{t\\tools_{agent}}\\left(1 - factor_{t}\\right) \\] Therefore, example, vaccinated agent wearing mask factor \\(1 - (1 - 0.30) \\times (1 - 0.5) = 0.65\\). adjusted probabilities principle also applies recovery rates SIR SEIR models.","code":""},{"path":"/articles/implementation.html","id":"transmission-in-connected-modelsmodels","dir":"Articles","previous_headings":"Computing probabilities","what":"Transmission in connected models3","title":"Implementation details of epiworldR","text":"“connected” models provide version agents live fully connected network. means agent can infect agent, making version similar typical compartmental models. models, transmission probability depends contact rate. susceptible agent, transmission process simulated follows: number contacts \\(c\\) drawn binomial distribution parameters \\(n\\) \\(p\\), \\(n\\) number agents \\(p =\\)contact_rate\\(/ n\\). , \\(c\\) agents randomly selected population. Transmission can occur agents susceptible agent. probability transmission \\(c\\) agents calculated described previous section.","code":""},{"path":"/articles/run-multiple.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Run Multiple","text":"purpose “run_multiple” function run specified number simulations using model object. , function makes possible compare model results across several separate repeated simulations.","code":""},{"path":[]},{"path":"/articles/run-multiple.html","id":"setup-and-running-model","dir":"Articles","previous_headings":"Example: Simulating a SEIRCONN Model 50 Times","what":"Setup and Running Model","title":"Run Multiple","text":"use “run_multiple” function epiworld, create epimodel choice; case, example uses SEIRCONN model COVID-19, 100000 people, initial prevalence 0.0001 (0.01%), contact rate 2, probability transmission 0.5, total 7 incubation days, probability recovery \\(\\frac{1}{3}\\).","code":"library(epiworldR) model_seirconn <- ModelSEIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.0001, contact_rate = 2, transmission_rate = 0.5, incubation_days = 7, recovery_rate = 1/3 )"},{"path":"/articles/run-multiple.html","id":"generating-a-saver","dir":"Articles","previous_headings":"Example: Simulating a SEIRCONN Model 50 Times","what":"Generating a Saver","title":"Run Multiple","text":"Next, generate saver purpose extracting “total_hist” “reproductive” information model object. Now, use “run_multiple” function model object, number desired days run simulation, number simulations run, number threads parallel computing. Using “run_multiple_get_results” function, extract results model object simulated 50 times comparison across simulations.","code":"# Generating a saver saver <- make_saver(\"total_hist\", \"reproductive\") # Running and printing run_multiple(model_seirconn, ndays = 50, nsims = 50, saver = saver, nthreads = 1) #> Starting multiple runs (50) using 1 thread(s) #> _________________________________________________________________________ #> _________________________________________________________________________ #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Retrieving the results ans <- run_multiple_get_results(model_seirconn) head(ans$total_hist) #> sim_num date nviruses state counts #> 1 1 0 1 Susceptible 9999 #> 2 1 0 1 Exposed 1 #> 3 1 0 1 Infected 0 #> 4 1 0 1 Recovered 0 #> 5 1 1 1 Susceptible 9999 #> 6 1 1 1 Exposed 1 head(ans$reproductive) #> sim_num virus_id virus source source_exposure_date rt #> 1 1 0 COVID-19 43 50 0 #> 2 1 0 COVID-19 45 50 0 #> 3 1 0 COVID-19 206 50 0 #> 4 1 0 COVID-19 301 50 0 #> 5 1 0 COVID-19 303 50 0 #> 6 1 0 COVID-19 336 50 0"},{"path":"/articles/run-multiple.html","id":"plotting","dir":"Articles","previous_headings":"Example: Simulating a SEIRCONN Model 50 Times","what":"Plotting","title":"Run Multiple","text":"plot epicurves reproductive numbers time using boxplots, extract results model object using “run_multiple_get_results”. example, dates filtered less equal 20 observe epicurves first 20 days. Notice boxplot table represents observed values 50 simulations date. view plot reproductive number 50 days 50 simulations, store reproductive results new object using “run_multiple_get_results”, plot using “boxplot” function. Notice source exposure date displays boxplot representing distribution reproductive numbers across 50 simulations. expected, reproductive number average, decreases time.","code":"seirconn_50 <- run_multiple_get_results(model_seirconn)$total_hist seirconn_50 <- seirconn_50[seirconn_50$date <= 20,] plot(seirconn_50) seirconn_50_r <- run_multiple_get_results(model_seirconn)$reproductive plot(seirconn_50_r) # boxplot(rt ~ source_exposure_date, data = seirconn_50_r, # main = \"Reproductive Number\", # xlab = \"Source Exposure Date\", # ylab = \"rt\", # border = \"black\", # las = 2)"},{"path":"/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Derek Meyer. Author, maintainer. George Vega Yon. Author. Susan Holmes. Reviewer. JOSS reviewer Abinash Satapathy. Reviewer. JOSS reviewer Carinogurjao. Reviewer. Centers Disease Control Prevention. Funder. Award number 1U01CK000585; 75D30121F00003","code":""},{"path":"/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Meyer D, Vega Yon G (2023). epiworldR: Fast Agent-Based Epi Models. https://github.com/UofUEpiBio/epiworldR, https://uofuepibio.github.io/epiworldR/, https://uofuepibio.github.io/epiworldR-workshop/.","code":"@Manual{, title = {epiworldR: Fast Agent-Based Epi Models}, author = {Derek Meyer and George {Vega Yon}}, year = {2023}, note = {https://github.com/UofUEpiBio/epiworldR, https://uofuepibio.github.io/epiworldR/, https://uofuepibio.github.io/epiworldR-workshop/}, }"},{"path":"/index.html","id":"versions","dir":"","previous_headings":"","what":"Versions","title":"Fast Agent-Based Epi Models","text":"virtual INSNA Sunbelt 2023 session can found : https://github.com/UofUEpiBio/epiworldR-workshop/tree/sunbelt2023-virtual -person INSNA Sunbelt 2023 session can found : https://github.com/UofUEpiBio/epiworldR-workshop/tree/sunbetl2023-inperson","code":""},{"path":"/index.html","id":"epiworldr","dir":"","previous_headings":"","what":"Fast Agent-Based Epi Models","title":"Fast Agent-Based Epi Models","text":"R package wrapper C++ library epiworld. provides general framework modeling disease transmission using agent-based models. main features include: Fast simulation average 30 million agents/day per second. One model can include multiple diseases. Policies (tools) can multiple user-defined. Transmission can function agents’ features. ---box parallelization multiple simulations. package’s description: flexible framework Agent-Based Models (ABM), epiworldR package provides methods prototyping disease outbreaks transmission models using C++ backend, making fast. supports multiple epidemiological models, including Susceptible-Infected-Susceptible (SIS), Susceptible-Infected-Removed (SIR), Susceptible-Exposed-Infected-Removed (SEIR), others, involving arbitrary mitigation policies multiple-disease models. Users can specify infectiousness/susceptibility rates function agents’ features, providing great complexity model dynamics. Furthermore, epiworldR ideal simulation studies featuring large populations.","code":""},{"path":"/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Fast Agent-Based Epi Models","text":"can install development version epiworldR GitHub : CRAN","code":"devtools::install_github(\"UofUEpiBio/epiworldR\") install.packages(\"epiworldR\")"},{"path":"/index.html","id":"examples","dir":"","previous_headings":"","what":"Examples","title":"Fast Agent-Based Epi Models","text":"R package includes several popular epidemiological models including SIS, SIR, SEIR using either fully connected graph (similar compartmental model) user-defined network. examples:","code":""},{"path":"/index.html","id":"sir-model-using-a-random-graph","dir":"","previous_headings":"","what":"SIR model using a random graph","title":"Fast Agent-Based Epi Models","text":"Susceptible-Infected-Recovered model features population 100,000 agents simulated small-world network. agent connected ten agents. One percent population virus, 70% chance transmission. Infected individuals recover 0.3 rate: Visualizing outputs","code":"library(epiworldR) # Creating a SIR model sir <- ModelSIR( name = \"COVID-19\", prevalence = .01, transmission_rate = .7, recovery = .3 ) |> # Adding a Small world population agents_smallworld(n = 100000, k = 10, d = FALSE, p = .01) |> # Running the model for 50 days run(ndays = 50, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. sir #> ________________________________________________________________________________ #> Susceptible-Infected-Recovered (SIR) #> It features 100000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 822 Susceptible, 415 Infected, and 98763 Recovered. summary(sir) #> ________________________________________________________________________________ #> ________________________________________________________________________________ #> SIMULATION STUDY #> #> Name of the model : Susceptible-Infected-Recovered (SIR) #> Population size : 100000 #> Agents' data : (none) #> Number of entities : 0 #> Days (duration) : 50 (of 50) #> Number of viruses : 1 #> Last run elapsed t : 190.00ms #> Last run speed : 26.22 million agents x day / second #> Rewiring : off #> #> Global actions: #> (none) #> #> Virus(es): #> - COVID-19 (baseline prevalence: 1.00%) #> #> Tool(s): #> (none) #> #> Model parameters: #> - Recovery rate : 0.3000 #> - Transmission rate : 0.7000 #> #> Distribution of the population at time 50: #> - (0) Susceptible : 99000 -> 822 #> - (1) Infected : 1000 -> 415 #> - (2) Recovered : 0 -> 98763 #> #> Transition Probabilities: #> - Susceptible 0.91 0.09 0.00 #> - Infected 0.00 0.70 0.30 #> - Recovered 0.00 0.00 1.00 plot(sir)"},{"path":"/index.html","id":"seir-model-with-a-fully-connected-graph","dir":"","previous_headings":"","what":"SEIR model with a fully connected graph","title":"Fast Agent-Based Epi Models","text":"SEIR model similar SIR model includes exposed state. , simulate population 10,000 agents 0.01 prevalence, 0.6 transmission rate, 0.5 recovery rate, 7 days-incubation period. population fully connected, meaning agents can transmit disease agent: Computing key statistics","code":"model_seirconn <- ModelSEIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 10000, contact_rate = 4, incubation_days = 7, transmission_rate = 0.6, recovery_rate = 0.5 ) |> add_virus(virus(\"COVID-19\", 0.01, 0.6, 0.5, 7), .5) set.seed(132) run(model_seirconn, ndays = 100) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) (connected) #> It features 10000 agents, 2 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 608 Susceptible, 4 Exposed, 2 Infected, and 9386 Recovered. plot(model_seirconn) repnum <- get_reproductive_number(model_seirconn) head(plot(repnum)) #> virus_id virus date avg n sd lb ub #> 1 0 COVID-19 0 2.858974 78 2.592318 1 7.30 #> 2 0 COVID-19 2 1.964286 28 1.914509 0 5.65 #> 3 0 COVID-19 3 2.761905 21 2.321740 0 7.00 #> 4 0 COVID-19 4 2.000000 33 1.887459 0 6.40 #> 5 0 COVID-19 5 1.864865 37 2.225636 0 9.10 #> 6 0 COVID-19 6 2.104167 48 2.667692 0 10.65 plot_incidence(model_seirconn) head(plot_generation_time(model_seirconn)) #> date avg n sd ci_lower ci_upper virus virus_id #> 1 2 5.714286 21 4.681270 2 17.00 COVID-19 0 #> 2 3 7.444444 18 4.501271 2 15.45 COVID-19 0 #> 3 4 7.192308 26 5.578668 2 20.75 COVID-19 0 #> 4 5 7.111111 27 4.236593 2 15.70 COVID-19 0 #> 5 6 7.575000 40 7.249713 2 30.20 COVID-19 0 #> 6 7 6.303030 33 4.531038 2 18.00 COVID-19 0"},{"path":"/index.html","id":"sir-logit","dir":"","previous_headings":"","what":"SIR Logit","title":"Fast Agent-Based Epi Models","text":"model provides complex transmission recovery pattern based agents’ features. , can reflect co-morbidities change probability infection recovery. , simulate population including dataset two features: intercept binary variable Female. probability infection recovery functions intercept Female variables. following code simulates population 100,000 agents small-world network. agent connected eight agents. One percent population virus, 80% chance transmission. Infected individuals recover 0.3 rate:","code":"# Simulating a population of 100,000 agents set.seed(2223) n <- 100000 # Agents' features X <- cbind( Intercept = 1, Female = sample.int(2, n, replace = TRUE) - 1 ) coef_infect <- c(.1, -2, 2) coef_recover <- rnorm(2) # Creating the model model_logit <- ModelSIRLogit( \"covid2\", data = X, coefs_infect = coef_infect, coefs_recover = coef_recover, coef_infect_cols = 1L:ncol(X), coef_recover_cols = 1L:ncol(X), prob_infection = .8, recovery_rate = .3, prevalence = .01 ) # Adding a small-world population agents_smallworld(model_logit, n, 8, FALSE, .01) # Running the model run(model_logit, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(model_logit) # Females are supposed to be more likely to become infected rn <- get_reproductive_number(model_logit) (table( X[, \"Female\"], (1:n %in% rn$source) ) |> prop.table())[,2] #> 0 1 #> 0.12984 0.14201 # Looking into the agents get_agents(model_logit) #> Agents from the model \"Susceptible-Infected-Removed (SIR) (logit)\": #> Agent: 0, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 1, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 2, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 3, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 4, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 5, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 6, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 7, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 8, state: Susceptible (0), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 9, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> ... 99990 more agents ..."},{"path":"/index.html","id":"transmission-network","dir":"","previous_headings":"","what":"Transmission network","title":"Fast Agent-Based Epi Models","text":"example shows can draw transmission network simulation. following code simulates population 500 agents small-world network. agent connected ten agents. One percent population virus, 50% chance transmission. Infected individuals recover 0.5 rate:","code":"# Creating a SIR model sir <- ModelSIR( name = \"COVID-19\", prevalence = .01, transmission_rate = .5, recovery = .5 ) |> # Adding a Small world population agents_smallworld(n = 500, k = 10, d = FALSE, p = .01) |> # Running the model for 50 days run(ndays = 50, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. # Transmission network net <- get_transmissions(sir) # Plotting library(netplot) #> Loading required package: grid library(igraph) #> #> Attaching package: 'igraph' #> The following object is masked from 'package:netplot': #> #> ego #> The following objects are masked from 'package:stats': #> #> decompose, spectrum #> The following object is masked from 'package:base': #> #> union x <- graph_from_edgelist(as.matrix(net[,2:3]) + 1) nplot(x, edge.curvature = 0, edge.color = \"gray\", skip.vertex=TRUE)"},{"path":"/index.html","id":"multiple-simulations","dir":"","previous_headings":"","what":"Multiple simulations","title":"Fast Agent-Based Epi Models","text":"epiworldR supports running multiple simulations using run_multiple function. following code simulates 50 SIR models 1000 agents . agent connected ten agents. One percent population virus, 90% chance transmission. Infected individuals recover 0.1 rate. results saved data.frame: # Existing Alternatives Several alternatives epiworldR exist provide researchers range options, unique features strengths, enabling exploration analysis infectious disease dynamics agent-based modeling. manually curated table existing alternatives including ABM [@ABM], abmR [@abmR], cystiSim [@cystiSim], villager [@villager], RNetLogo [@RNetLogo].","code":"model_sir <- ModelSIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 1000, contact_rate = 2, transmission_rate = 0.9, recovery_rate = 0.1 ) # Generating a saver saver <- make_saver(\"total_hist\", \"reproductive\") # Running and printing # Notice the use of nthread = 2 to run the simulations in parallel run_multiple(model_sir, ndays = 100, nsims = 50, saver = saver, nthread = 2) #> Starting multiple runs (50) using 2 thread(s) #> _________________________________________________________________________ #> _________________________________________________________________________ #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Retrieving the results ans <- run_multiple_get_results(model_sir) head(ans$total_hist) #> sim_num date nviruses state counts #> 1 1 0 1 Susceptible 990 #> 2 1 0 1 Infected 10 #> 3 1 0 1 Recovered 0 #> 4 1 1 1 Susceptible 974 #> 5 1 1 1 Infected 25 #> 6 1 1 1 Recovered 1 head(ans$reproductive) #> sim_num virus_id virus source source_exposure_date rt #> 1 1 0 COVID-19 767 11 0 #> 2 1 0 COVID-19 835 10 0 #> 3 1 0 COVID-19 466 9 0 #> 4 1 0 COVID-19 612 9 0 #> 5 1 0 COVID-19 793 9 0 #> 6 1 0 COVID-19 20 8 0 plot(ans$reproductive)"},{"path":"/index.html","id":"other-abm-r-packages","dir":"","previous_headings":"","what":"Other ABM R packages","title":"Fast Agent-Based Epi Models","text":"may want check R packages agent-based modeling: ABM, abmR, cystiSim, villager, RNetLogo.","code":""},{"path":"/index.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Fast Agent-Based Epi Models","text":"Please note epiworldR project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"/paper.html","id":null,"dir":"","previous_headings":"","what":"Introduction","title":"Introduction","text":"Agent-based modeling (ABM) emerged powerful computational approach studying complex systems across various fields, including social sciences epidemiology. simulating interactions behaviors individual entities, known agents, ABM provides unique lens researchers can analyze understand emergent properties dynamics systems. epiworldR package provides flexible framework ABM implementation methods prototyping disease outbreaks transmission models using C++ backend. supports multiple epidemiological models, including Susceptible-Infected-Susceptible (SIS), Susceptible-Infected-Removed (SIR), Susceptible-Exposed-Infected-Removed (SEIR), others, involving arbitrary mitigation policies multiple-disease models. Users can specify transmission/susceptibility rates function agents’ features, providing great complexity model dynamics.","code":""},{"path":"/paper.html","id":"key-features","dir":"","previous_headings":"","what":"Key Features","title":"Introduction","text":"Built robust foundation C++, package combines efficient computation flexibility R, providing seamless user experience several standout features: Multiple Viruses - feature allows researchers simulate analyze dynamics various infectious diseases simultaneously. Multiple Tools - capability enables users design model objects may reflect real-world interventions. Examples include vaccines, mask wearing protocols, social distancing, much . Multiple Runs - epiworldR ability run simulations multiple times, providing complete picture simulation results behaviors. Global Actions - Similar adding multiple tools, global actions allow users implement interventions policies global scale point simulation, mimicking real-world scenarios aiding assessment impact. Built-Epidemiological Models - feature ensures researchers access well-established widely recognized frameworks, making easier compare benchmark results. Included popular epidemiological models : SIR, SIS, SEIR, SIR connected, SIS connected, SEIR connected, . extensive range features, epiworldR empowers researchers practitioners field epidemiology conduct thorough analyses, make informed decisions, contribute advancement public health.","code":""},{"path":"/paper.html","id":"existing-alternatives","dir":"","previous_headings":"","what":"Existing Alternatives","title":"Introduction","text":"Several alternatives epiworldR exist provide researchers range options, unique features strengths, enabling exploration analysis infectious disease dynamics agent-based modeling. manually curated table existing alternatives including ABM [@ABM], abmR [@abmR], cystiSim [@cystiSim], villager [@villager], RNetLogo [@RNetLogo].","code":""},{"path":"/paper.html","id":"statement-of-need","dir":"","previous_headings":"","what":"Statement of Need","title":"Introduction","text":"epiworldR package addresses need sophisticated epidemiological research offering user-friendly agent-based modeling (ABM) tool simulating analyzing infectious disease dynamics. caters diverse audience researchers, epidemiologists, public health practitioners, social scientists, policymakers, enabling study complex disease spread patterns, evaluate intervention strategies, prepare emerging pathogens. Unlike traditional epidemiological models, epiworldR’s ABM approach captures individual-level behaviors interactions, providing realistic representation disease dynamics. distinction sets apart compartmental models ABM frameworks, making epiworldR valuable accessible tool advancing infectious disease modeling enhancing outbreak preparedness.","code":""},{"path":"/paper.html","id":"conclusion","dir":"","previous_headings":"","what":"Conclusion","title":"Introduction","text":"development epiworldR package ushered new era agent-based modeling field social science epidemiology. harnessing power C++ flexibility R, comprehensive package offers multitude features enhance modeling analysis complex infectious disease dynamics. package’s ability handle multiple viruses tools, diverse set epidemiological models, capability run simulations multiple times, inclusion global actions capability empower researchers explore wide range scenarios make informed decisions regarding public health interventions. epiworldR serves valuable resource social science epidemiological communities, enabling study real-world phenomena, prediction outcomes, policy analysis. field epidemiology continues evolve, epiworldR stands forefront, providing researchers practitioners powerful tool navigate complexities infectious diseases contribute improvement global health outcomes.","code":""},{"path":[]},{"path":"/reference/ModelDiffNet.html","id":null,"dir":"Reference","previous_headings":"","what":"Network Diffusion Model — ModelDiffNet","title":"Network Diffusion Model — ModelDiffNet","text":"network diffusion model simple model assumes probability adoption behavior proportional number adopters network.","code":""},{"path":"/reference/ModelDiffNet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Network Diffusion Model — ModelDiffNet","text":"","code":"ModelDiffNet( name, prevalence, prob_adopt, normalize_exposure = TRUE, data = matrix(nrow = 0, ncol = 0), data_cols = 1L:ncol(data), params = vector(\"double\") ) # S3 method for epiworld_diffnet plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelDiffNet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Network Diffusion Model — ModelDiffNet","text":"name Name model. prevalence Prevalence disease. prob_adopt Probability adoption. normalize_exposure Normalize exposure. data Data. data_cols Data columns. params Parameters. x Object class epiworld_diffnet. main Title plot ... Passed graphics::plot.","code":""},{"path":"/reference/ModelDiffNet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Network Diffusion Model — ModelDiffNet","text":"object class epiworld_diffnet epiworld_model.","code":""},{"path":"/reference/ModelDiffNet.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Network Diffusion Model — ModelDiffNet","text":"Different common epidemiological models, network diffusion model assumes probability adoption behavior proportional number adopters network. model defined following equations: $$ P(adopt) = \\mbox{Logit}^{-1}(prob\\_adopt + params * data + exposure) $$ exposure number adopters agent's network. Another important difference transmission network necesary useful since adoption model particular neighbor.","code":""},{"path":[]},{"path":"/reference/ModelDiffNet.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Network Diffusion Model — ModelDiffNet","text":"","code":"set.seed(2223) n <- 10000 # Generating synthetic data on a matrix with 2 columns. X <- cbind( age = sample(1:100, n, replace = TRUE), female = sample.int(2, n, replace = TRUE) - 1 ) adopt_chatgpt <- ModelDiffNet( \"ChatGPT\", prevalence = .01, prob_adopt = .1, data = X, params = c(1, 4) ) # Simulating a population from smallworld agents_smallworld(adopt_chatgpt, n, 8, FALSE, .01) # Running the model for 50 steps run(adopt_chatgpt, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. # Plotting the model plot(adopt_chatgpt)"},{"path":"/reference/ModelSEIR.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"Susceptible Exposed Infected Recovered model (SEIR)","code":""},{"path":"/reference/ModelSEIR.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"","code":"ModelSEIR(name, prevalence, transmission_rate, incubation_days, recovery_rate) # S3 method for epiworld_seir plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSEIR.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"name String. Name virus. prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. incubation_days Numeric scalar greater 0. Average number incubation days. recovery_rate Numeric scalar 0 1. Rate recovery_rate virus. x Object class SEIR. main Title plot ... Currently ignore.","code":""},{"path":"/reference/ModelSEIR.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"ModelSEIRfunction returns model class epiworld_model. plot function returns plot SEIR model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSEIR.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"","code":"model_seir <- ModelSEIR(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1, incubation_days = 4) # Adding a small world population agents_smallworld( model_seir, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_seir, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seir #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 0 Susceptible, 0 Exposed, 7 Infected, and 993 Removed. plot(model_seir, main = \"SEIR Model\")"},{"path":"/reference/ModelSEIRCONN.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"SEIR connected model implements model agents connected. equivalent compartmental model (wiki).","code":""},{"path":"/reference/ModelSEIRCONN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"","code":"ModelSEIRCONN( name, n, prevalence, contact_rate, transmission_rate, incubation_days, recovery_rate ) # S3 method for epiworld_seirconn plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSEIRCONN.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"name String. Name virus. n Number individuals population. prevalence Initial proportion individuals virus. contact_rate Numeric scalar. Average number contacts per step. transmission_rate Numeric scalar 0 1. Probability transmission. incubation_days Numeric scalar greater 0. Average number incubation days. recovery_rate Numeric scalar 0 1. Probability recovery_rate. x Object class SEIRCONN. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSEIRCONN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"ModelSEIRCONNfunction returns model class epiworld_model. plot function returns plot SEIRCONN model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSEIRCONN.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"","code":"# An example with COVID-19 model_seirconn <- ModelSEIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 10000, contact_rate = 2, incubation_days = 7, transmission_rate = 0.5, recovery_rate = 0.3 ) # Running and printing run(model_seirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) (connected) #> It features 10000 agents, 1 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 430 Susceptible, 0 Exposed, 6 Infected, and 9564 Recovered. plot(model_seirconn) # Adding the flu flu <- virus(\"Flu\", .9, 1/7) add_virus(model_seirconn, flu, .001) #' # Running and printing run(model_seirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) (connected) #> It features 10000 agents, 2 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 3 Susceptible, 0 Exposed, 0 Infected, and 9997 Recovered. plot(model_seirconn)"},{"path":"/reference/ModelSEIRD.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD)","code":""},{"path":"/reference/ModelSEIRD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"","code":"ModelSEIRD( name, prevalence, transmission_rate, incubation_days, recovery_rate, death_rate ) # S3 method for epiworld_seird plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSEIRD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"name String. Name virus. prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. incubation_days Numeric scalar greater 0. Average number incubation days. recovery_rate Numeric scalar 0 1. Rate recovery_rate virus. death_rate Numeric scalar 0 1. Rate death virus. x Object class SEIRD. main Title plot ... Currently ignore.","code":""},{"path":"/reference/ModelSEIRD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"ModelSEIRDfunction returns model class epiworld_model. plot function returns plot SEIRD model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSEIRD.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"","code":"model_seird <- ModelSEIRD(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1, incubation_days = 4, death_rate = 0.01) # Adding a small world population agents_smallworld( model_seird, n = 100000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_seird, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seird #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed-Deceased (SEIRD) #> It features 100000 agents, 1 virus(es), and 0 tool(s). #> The model has 5 states. #> The final distribution is: 1961 Susceptible, 388 Exposed, 1358 Infected, 88223 Removed, and 8070 Deceased. plot(model_seird, main = \"SEIRD Model\")"},{"path":"/reference/ModelSEIRDCONN.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"SEIRD connected model implements model agents connected. equivalent compartmental model (wiki).","code":""},{"path":"/reference/ModelSEIRDCONN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"","code":"ModelSEIRDCONN( name, n, prevalence, contact_rate, transmission_rate, incubation_days, recovery_rate, death_rate ) # S3 method for epiworld_seirdconn plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSEIRDCONN.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"name String. Name virus. n Number individuals population. prevalence Initial proportion individuals virus. contact_rate Numeric scalar. Average number contacts per step. transmission_rate Numeric scalar 0 1. Probability transmission. incubation_days Numeric scalar greater 0. Average number incubation days. recovery_rate Numeric scalar 0 1. Probability recovery_rate. death_rate Numeric scalar 0 1. Probability death. x Object class SEIRCONN. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSEIRDCONN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"ModelSEIRDCONNfunction returns model class epiworld_model. plot function returns plot SEIRDCONN model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSEIRDCONN.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"","code":"# An example with COVID-19 model_seirdconn <- ModelSEIRDCONN( name = \"COVID-19\", prevalence = 0.01, n = 10000, contact_rate = 2, incubation_days = 7, transmission_rate = 0.5, recovery_rate = 0.3, death_rate = 0.01 ) # Running and printing run(model_seirdconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirdconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed-Deceased (SEIRD) (connected) #> It features 10000 agents, 1 virus(es), and 0 tool(s). #> The model has 5 states. #> The final distribution is: 439 Susceptible, 0 Exposed, 3 Infected, 9326 Removed, and 232 Deceased. plot(model_seirdconn) # Adding the flu flu <- virus(\"Flu\", prob_infecting = .3, recovery_rate = 1/7, prob_death = 0.001) add_virus(model = model_seirdconn, virus = flu, proportion = .001) #' # Running and printing run(model_seirdconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirdconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed-Deceased (SEIRD) (connected) #> It features 10000 agents, 2 virus(es), and 0 tool(s). #> The model has 5 states. #> The final distribution is: 410 Susceptible, 7 Exposed, 4 Infected, 9384 Removed, and 195 Deceased. plot(model_seirdconn)"},{"path":"/reference/ModelSIR.html","id":null,"dir":"Reference","previous_headings":"","what":"SIR model — ModelSIR","title":"SIR model — ModelSIR","text":"SIR model","code":""},{"path":"/reference/ModelSIR.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SIR model — ModelSIR","text":"","code":"ModelSIR(name, prevalence, transmission_rate, recovery_rate) # S3 method for epiworld_sir plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIR.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SIR model — ModelSIR","text":"name String. Name virus prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. recovery_rate Numeric scalar 0 1. Rate recovery_rate virus. x Object class SIR. main Title plot ... Additional arguments passed graphics::plot.","code":""},{"path":"/reference/ModelSIR.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SIR model — ModelSIR","text":"ModelSIR function returns model class epiworld_model. plot function returns plot SIR model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIR.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SIR model — ModelSIR","text":"","code":"model_sir <- ModelSIR(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1) # Adding a small world population agents_smallworld( model_sir, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_sir, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sir #> ________________________________________________________________________________ #> Susceptible-Infected-Recovered (SIR) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 0 Susceptible, 9 Infected, and 991 Recovered. # Plotting plot(model_sir)"},{"path":"/reference/ModelSIRCONN.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"Susceptible Infected Removed model (SIR connected)","code":""},{"path":"/reference/ModelSIRCONN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"","code":"ModelSIRCONN( name, n, prevalence, contact_rate, transmission_rate, recovery_rate ) # S3 method for epiworld_sirconn plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIRCONN.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"name String. Name virus n Number individuals population. prevalence Double. Initial proportion individuals virus. contact_rate Numeric scalar. Average number contacts per step. transmission_rate Numeric scalar 0 1. Probability transmission. recovery_rate Numeric scalar 0 1. Probability recovery. x Object class SIRCONN. main Title plot ... Currently ignore.","code":""},{"path":"/reference/ModelSIRCONN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"ModelSIRCONNfunction returns model class epiworld_model. plot function returns plot SIRCONN model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIRCONN.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"","code":"model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) # Running and printing run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sirconn #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 10000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 2000 Susceptible, 0 Infected, and 8000 Recovered. plot(model_sirconn, main = \"SIRCONN Model\")"},{"path":"/reference/ModelSIRD.html","id":null,"dir":"Reference","previous_headings":"","what":"SIRD model — ModelSIRD","title":"SIRD model — ModelSIRD","text":"SIRD model","code":""},{"path":"/reference/ModelSIRD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SIRD model — ModelSIRD","text":"","code":"ModelSIRD(name, prevalence, transmission_rate, recovery_rate, death_rate) # S3 method for epiworld_sird plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIRD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SIRD model — ModelSIRD","text":"name String. Name virus prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. recovery_rate Numeric scalar 0 1. Rate recovery_rate virus. death_rate Numeric scalar 0 1. Rate death virus. x Object class SIR. main Title plot ... Additional arguments passed graphics::plot.","code":""},{"path":"/reference/ModelSIRD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SIRD model — ModelSIRD","text":"ModelSIRD function returns model class epiworld_model. plot function returns plot SIRD model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIRD.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SIRD model — ModelSIRD","text":"","code":"model_sird <- ModelSIRD( name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1, death_rate = 0.01 ) # Adding a small world population agents_smallworld( model_sird, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_sird, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sird #> ________________________________________________________________________________ #> Susceptible-Infected-Recovered-Deceased (SIRD) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 0 Susceptible, 5 Infected, 912 Recovered, and 83 Deceased. # Plotting plot(model_sird)"},{"path":"/reference/ModelSIRDCONN.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"Susceptible Infected Removed Deceased model (SIRD connected)","code":""},{"path":"/reference/ModelSIRDCONN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"","code":"ModelSIRDCONN( name, n, prevalence, contact_rate, transmission_rate, recovery_rate, death_rate ) # S3 method for epiworld_sirdconn plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIRDCONN.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"name String. Name virus n Number individuals population. prevalence Double. Initial proportion individuals virus. contact_rate Numeric scalar. Average number contacts per step. transmission_rate Numeric scalar 0 1. Probability transmission. recovery_rate Numeric scalar 0 1. Probability recovery. death_rate Numeric scalar 0 1. Probability death. x Object class SIRDCONN. main Title plot ... Currently ignore.","code":""},{"path":"/reference/ModelSIRDCONN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"ModelSIRDCONNfunction returns model class epiworld_model. plot function returns plot SIRDCONN model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIRDCONN.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"","code":"model_sirdconn <- ModelSIRDCONN( name = \"COVID-19\", n = 100000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.5, death_rate = 0.1 ) # Running and printing run(model_sirdconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sirdconn #> ________________________________________________________________________________ #> Susceptible-Infected-Removed-Deceased (SIRD) (connected) #> It features 100000 agents, 1 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 3778 Susceptible, 0 Infected, 86521 Recovered, and 9701 Deceased. plot(model_sirdconn, main = \"SIRDCONN Model\")"},{"path":"/reference/ModelSIRLogit.html","id":null,"dir":"Reference","previous_headings":"","what":"SIR Logistic model — ModelSIRLogit","title":"SIR Logistic model — ModelSIRLogit","text":"SIR Logistic model","code":""},{"path":"/reference/ModelSIRLogit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SIR Logistic model — ModelSIRLogit","text":"","code":"ModelSIRLogit( vname, data, coefs_infect, coefs_recover, coef_infect_cols, coef_recover_cols, prob_infection, recovery_rate, prevalence )"},{"path":"/reference/ModelSIRLogit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SIR Logistic model — ModelSIRLogit","text":"vname Name virus. data numeric matrix n rows. coefs_infect Numeric vector. Coefficients associated infect. coefs_recover Numeric vector. Coefficients associated recover. coef_infect_cols Integer vector. Columns coeficient. coef_recover_cols Integer vector. Columns coeficient. prob_infection Numeric scalar. Baseline probability infection. recovery_rate Numeric scalar. Baseline probability recovery. prevalence Numeric scalar. Prevalence (initial state) proportion.","code":""},{"path":"/reference/ModelSIRLogit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SIR Logistic model — ModelSIRLogit","text":"ModelSIRLogit function returns model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIRLogit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SIR Logistic model — ModelSIRLogit","text":"","code":"set.seed(2223) n <- 100000 # Creating the data to use for the \"ModelSIRLogit\" function. It contains # information on the sex of each agent and will be used to determine # differences in disease progression between males and females. Note that # the number of rows in these data are identical to n (100000). X <- cbind( Intercept = 1, Female = sample.int(2, n, replace = TRUE) - 1 ) # Declare coefficients for each sex regarding transmission_rate and recovery. coef_infect <- c(.1, -2, 2) coef_recover <- rnorm(2) # Feed all above information into the \"ModelSIRLogit\" function. model_logit <- ModelSIRLogit( \"covid2\", data = X, coefs_infect = coef_infect, coefs_recover = coef_recover, coef_infect_cols = 1L:ncol(X), coef_recover_cols = 1L:ncol(X), prob_infection = .8, recovery_rate = .3, prevalence = .01 ) agents_smallworld(model_logit, n, 8, FALSE, .01) run(model_logit, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(model_logit) # Females are supposed to be more likely to become infected. rn <- get_reproductive_number(model_logit) # Probability of infection for males and females. (table( X[, \"Female\"], (1:n %in% rn$source) ) |> prop.table())[,2] #> 0 1 #> 0.12984 0.14201 # Looking into the individual agents. get_agents(model_logit) #> Agents from the model \"Susceptible-Infected-Removed (SIR) (logit)\": #> Agent: 0, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 1, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 2, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 3, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 4, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 5, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 6, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 7, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 8, state: Susceptible (0), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 9, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> ... 99990 more agents ..."},{"path":"/reference/ModelSIS.html","id":null,"dir":"Reference","previous_headings":"","what":"SIS model — ModelSIS","title":"SIS model — ModelSIS","text":"Susceptible-Infected-Susceptible model (SIS) (wiki)","code":""},{"path":"/reference/ModelSIS.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SIS model — ModelSIS","text":"","code":"ModelSIS(name, prevalence, transmission_rate, recovery_rate) # S3 method for epiworld_sis plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIS.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SIS model — ModelSIS","text":"name String. Name virus. prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. recovery_rate Numeric scalar 0 1. Rate recovery virus. x Object class SIS. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSIS.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SIS model — ModelSIS","text":"ModelSIS function returns model class epiworld_model. plot function returns plot SIS model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIS.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SIS model — ModelSIS","text":"","code":"model_sis <- ModelSIS(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1) # Adding a small world population agents_smallworld( model_sis, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_sis, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sis #> ________________________________________________________________________________ #> Susceptible-Infected-Susceptible (SIS) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 2 states. #> The final distribution is: 100 Susceptible, and 900 Infected. # Plotting plot(model_sis, main = \"SIS Model\")"},{"path":"/reference/ModelSISD.html","id":null,"dir":"Reference","previous_headings":"","what":"SISD model — ModelSISD","title":"SISD model — ModelSISD","text":"Susceptible-Infected-Susceptible-Deceased model (SISD) (wiki)","code":""},{"path":"/reference/ModelSISD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SISD model — ModelSISD","text":"","code":"ModelSISD(name, prevalence, transmission_rate, recovery_rate, death_rate) # S3 method for epiworld_sisd plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSISD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SISD model — ModelSISD","text":"name String. Name virus. prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. recovery_rate Numeric scalar 0 1. Rate recovery virus. death_rate Numeric scalar 0 1. Rate death virus. x Object class SISD. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSISD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SISD model — ModelSISD","text":"ModelSISD function returns model class epiworld_model. plot function returns plot SISD model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSISD.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SISD model — ModelSISD","text":"","code":"model_sisd <- ModelSISD( name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1, death_rate = 0.01 ) # Adding a small world population agents_smallworld( model_sisd, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_sisd, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sisd #> ________________________________________________________________________________ #> Susceptible-Infected-Susceptible-Deceased (SISD) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 52 Susceptible, 490 Infected, and 458 Deceased. # Plotting plot(model_sisd, main = \"SISD Model\")"},{"path":"/reference/ModelSURV.html","id":null,"dir":"Reference","previous_headings":"","what":"SURV model — ModelSURV","title":"SURV model — ModelSURV","text":"SURV model","code":""},{"path":"/reference/ModelSURV.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SURV model — ModelSURV","text":"","code":"ModelSURV( name, prevalence, efficacy_vax, latent_period, infect_period, prob_symptoms, prop_vaccinated, prop_vax_redux_transm, prop_vax_redux_infect, surveillance_prob, transmission_rate, prob_death, prob_noreinfect ) # S3 method for epiworld_surv plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSURV.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SURV model — ModelSURV","text":"name String. Name virus. prevalence Initial number individuals virus. efficacy_vax Double. Efficacy vaccine. (1 - P(acquire disease)). latent_period Double. Shape parameter 'Gamma(latent_period, 1)' distribution. coincides expected number latent days. infect_period Double. Shape parameter 'Gamma(infected_period, 1)' distribution. coincides expected number infectious days. prob_symptoms Double. Probability generating symptoms. prop_vaccinated Double. Probability vaccination. Coincides initial prevalence vaccinated individuals. prop_vax_redux_transm Double. Factor vaccine reduces transmissibility. prop_vax_redux_infect Double. Factor vaccine reduces chances becoming infected. surveillance_prob Double. Probability testing agent. transmission_rate Double. Raw transmission probability. prob_death Double. Raw probability death symptomatic individuals. prob_noreinfect Double. Probability re-infection. x Object class SURV. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSURV.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SURV model — ModelSURV","text":"ModelSURVfunction returns model class epiworld_model. plot function returns plot SURV model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSURV.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SURV model — ModelSURV","text":"","code":"model_surv <- ModelSURV( name = \"COVID-19\", prevalence = 20, efficacy_vax = 0.6, latent_period = 4, infect_period = 5, prob_symptoms = 0.5, prop_vaccinated = 0.7, prop_vax_redux_transm = 0.8, prop_vax_redux_infect = 0.95, surveillance_prob = 0.1, transmission_rate = 0.2, prob_death = 0.001, prob_noreinfect = 0.5 ) # Adding a small world population agents_smallworld( model_surv, n = 10000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_surv, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_surv #> ________________________________________________________________________________ #> Surveillance #> It features 10000 agents, 1 virus(es), and 1 tool(s). #> The model has 8 states. #> The final distribution is: 9978 Susceptible, 0 Latent, 0 Symptomatic, 0 Symptomatic isolated, 0 Asymptomatic, 0 Asymptomatic isolated, 22 Recovered, and 0 Removed. # Plotting plot(model_surv, main = \"SURV Model\")"},{"path":"/reference/agents_smallworld.html","id":null,"dir":"Reference","previous_headings":"","what":"Load agents to a model — agents_smallworld","title":"Load agents to a model — agents_smallworld","text":"functions provide access network model. network represented edgelist. agents_smallworld function generates small world network Watts-Strogatz algorithm. agents_from_edgelist function loads network edgelist. get_network function returns edgelist network.","code":""},{"path":"/reference/agents_smallworld.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Load agents to a model — agents_smallworld","text":"","code":"agents_smallworld(model, n, k, d, p) agents_from_edgelist(model, source, target, size, directed) get_network(model) get_agents_states(model) add_virus_agent(agent, model, virus, state_new = -99, queue = -99) add_tool_agent(agent, model, tool, state_new = -99, queue = -99) has_virus(agent, virus) has_tool(agent, tool) change_state(agent, model, state_new, queue = -99) get_agents_tools(model) get_agents_viruses(model)"},{"path":"/reference/agents_smallworld.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Load agents to a model — agents_smallworld","text":"model Model object class epiworld_model. n, size Number individuals population. k Number ties small world network. d, directed Logical scalar. Whether graph directed . p Probability rewiring. source, target Integer vectors describing source target edgelist. agent Agent object class epiworld_agent. virus Virus object class epiworld_virus. state_new Integer scalar. New state agent action executed. queue Integer scalar. Change queuing system action executed. tool Tool object class epiworld_tool.","code":""},{"path":"/reference/agents_smallworld.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Load agents to a model — agents_smallworld","text":"'agents_smallworld' function returns model agents loaded. agents_from_edgelist function returns empty model class epiworld_model. get_network function returns data frame two columns (source target) describing edgelist network. get_agents_states returns character vector states agents end simulation. function add_virus_agent adds virus agent returns agent invisibly. function add_tool_agent adds tool agent returns agent invisibly. functions has_virus has_tool return logical scalar indicating whether agent virus/tool . get_agents_tools returns list class epiworld_agents_tools epiworld_tools (list lists). get_agents_viruses returns list class epiworld_agents_viruses epiworld_viruses (list lists).","code":""},{"path":"/reference/agents_smallworld.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Load agents to a model — agents_smallworld","text":"new_state queue parameters optional. provided, agent updated default values virus/tool.","code":""},{"path":"/reference/agents_smallworld.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Load agents to a model — agents_smallworld","text":"","code":"# Initializing SIR model with agents_smallworld sir <- ModelSIR(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1) agents_smallworld( sir, n = 1000, k = 5, d = FALSE, p = .01 ) run(sir, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. sir #> ________________________________________________________________________________ #> Susceptible-Infected-Recovered (SIR) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 0 Susceptible, 9 Infected, and 991 Recovered. # We can also retrieve the network net <- get_network(sir) head(net) #> from to #> 1 0 1 #> 2 0 2 #> 3 0 998 #> 4 0 999 #> 5 1 2 #> 6 1 3 # Simulating a bernoulli graph set.seed(333) n <- 1000 g <- matrix(runif(n ^ 2) < .01, nrow = n) diag(g) <- FALSE el <- which(g, arr.ind = TRUE) - 1L # Generating an empty model sir <- ModelSIR(\"COVID-19\", .01, .8, .3) agents_from_edgelist( sir, source = el[,1], target = el[,2], size = n, directed = TRUE ) # Running the simulation run(sir, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(sir)"},{"path":"/reference/epiworld-data.html","id":null,"dir":"Reference","previous_headings":"","what":"Accessing the database of epiworld — epiworld-data","title":"Accessing the database of epiworld — epiworld-data","text":"Models epiworld stored database. database can accessed using functions described manual page. elements database : transition matrix, incidence matrix, reproductive number, generation time, daily incidence virus tool level.","code":""},{"path":"/reference/epiworld-data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Accessing the database of epiworld — epiworld-data","text":"","code":"get_hist_total(x) get_today_total(x) get_hist_virus(x) get_hist_tool(x) get_transition_probability(x) get_reproductive_number(x) # S3 method for epiworld_repnum plot( x, y = NULL, ylab = \"Average Rep. Number\", xlab = \"Day (step)\", main = \"Reproductive Number\", type = \"b\", plot = TRUE, ... ) plot_reproductive_number(x, ...) get_hist_transition_matrix(x, skip_zeros = FALSE) # S3 method for epiworld_hist_transition as.array(x, ...) plot_incidence(x, ...) # S3 method for epiworld_hist_transition plot( x, type = \"b\", xlab = \"Day (step)\", ylab = \"Counts\", main = \"Daily incidence\", plot = TRUE, ... ) get_transmissions(x) get_generation_time(x) # S3 method for epiworld_generation_time plot( x, type = \"b\", xlab = \"Day (step)\", ylab = \"Avg. Generation Time\", main = \"Generation Time\", plot = TRUE, ... ) plot_generation_time(x, ...)"},{"path":"/reference/epiworld-data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Accessing the database of epiworld — epiworld-data","text":"x object class epiworld_sir, epiworld_seir, etc. model. y Ignored. ylab, xlab, main, type parameters passed graphics::plot() plot Logical scalar. TRUE (default), function desired statistic. ... case plot methods, arguments passed graphics::plot. skip_zeros Logical scalar. FALSE return entries transition matrix.","code":""},{"path":"/reference/epiworld-data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Accessing the database of epiworld — epiworld-data","text":"get_hist_total function returns object class epiworld_hist_total. get_today_total function returns named vector total number individuals state end simulation. get_hist_virus function returns object class epiworld_hist_virus. get_hist_tool function returns object epiworld_hist_virus. get_transition_probability function returns object class matrix. get_reproductive_number function returns object class epiworld_repnum. plot function returns plot reproductive number time. get_hist_transition_matrix returns data.frame four columns: \"state_from\", \"state_to\", \"date\", \"counts.\" .array method epiworld_hist_transition objects turns data.frame returned get_hist_transition_matrix array nstates x nstates x (ndays + 1) entries, first entry initial state. plot_incidence function returns plot originating object get_hist_transition_matrix. plot function returns plot originates epiworld_hist_transition object. function get_transmissions returns data.frame following columns: date, source, target, virus_id, virus, source_exposure_date. function get_generation_time returns data.frame following columns: \"agent\", \"virus_id\", \"virus\", \"date\", \"gentime\". function plot_generation_time wrapper plot get_generation_time.","code":""},{"path":"/reference/epiworld-data.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Accessing the database of epiworld — epiworld-data","text":"plot_reproductive_number function wrapper around get_reproductive_number plots result. plot_incidence function wrapper get_hist_transition_matrix plot method. plot method epiworld_hist_transition class plots daily incidence state. function returns data frame used plotting.","code":""},{"path":[]},{"path":"/reference/epiworld-data.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Accessing the database of epiworld — epiworld-data","text":"","code":"# SEIR Connected seirconn <- ModelSEIRCONN( name = \"Disease\", n = 10000, prevalence = 0.1, contact_rate = 2.0, transmission_rate = 0.8, incubation_days = 7.0, recovery_rate = 0.3 ) # Running the simulation for 50 steps (days) set.seed(937) run(seirconn, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. # Retrieving the transition probability get_transition_probability(seirconn) #> Susceptible Exposed Infected Recovered #> Susceptible 0.9001378 0.09986219 0.0000000 0.0000000 #> Exposed 0.0000000 0.85468656 0.1453134 0.0000000 #> Infected 0.0000000 0.00000000 0.7024578 0.2975422 #> Recovered 0.0000000 0.00000000 0.0000000 1.0000000 # Retrieving date, state, and counts dataframe including any added tools get_hist_tool(seirconn) #> [1] date tool_id tool state counts #> <0 rows> (or 0-length row.names) # Retrieving overall date, state, and counts dataframe head(get_hist_total(seirconn)) #> date state counts #> 1 0 Susceptible 9000 #> 2 0 Exposed 1000 #> 3 0 Infected 0 #> 4 0 Recovered 0 #> 5 1 Susceptible 9000 #> 6 1 Exposed 859 # Retrieving date, state, and counts dataframe by variant head(get_hist_virus(seirconn)) #> date virus_id virus state counts #> 1 0 0 Disease Susceptible 0 #> 2 0 0 Disease Exposed 1000 #> 3 0 0 Disease Infected 0 #> 4 0 0 Disease Recovered 0 #> 5 1 0 Disease Susceptible 0 #> 6 1 0 Disease Exposed 859 # Retrieving (and plotting) the reproductive number rp <- get_reproductive_number(seirconn) plot(rp) # Also equivalent to plot_reproductive_number(seirconn) # We can go further and get all the history t_hist <- get_hist_transition_matrix(seirconn) head(t_hist) #> state_from state_to date counts #> 1 Susceptible Susceptible 0 9000 #> 2 Exposed Susceptible 0 0 #> 3 Infected Susceptible 0 0 #> 4 Recovered Susceptible 0 0 #> 5 Susceptible Exposed 0 1000 #> 6 Exposed Exposed 0 0 # And turn it into an array as.array(t_hist)[,,1:3] #> , , 0 #> #> Susceptible Exposed Infected Recovered #> Susceptible 9000 1000 0 0 #> Exposed 0 0 0 0 #> Infected 0 0 0 0 #> Recovered 0 0 0 0 #> #> , , 1 #> #> Susceptible Exposed Infected Recovered #> Susceptible 9000 0 0 0 #> Exposed 0 859 141 0 #> Infected 0 0 0 0 #> Recovered 0 0 0 0 #> #> , , 2 #> #> Susceptible Exposed Infected Recovered #> Susceptible 8805 195 0 0 #> Exposed 0 753 106 0 #> Infected 0 0 95 46 #> Recovered 0 0 0 0 #> # We cam also get (and plot) the incidence, as well as # the generation time inci <- plot_incidence(seirconn) gent <- plot_generation_time(seirconn)"},{"path":"/reference/epiworld-methods.html","id":null,"dir":"Reference","previous_headings":"","what":"Methods for epiworldR objects — epiworld-methods","title":"Methods for epiworldR objects — epiworld-methods","text":"functions described section methods objects class epiworld_model. Besides printing plotting, methods provide access manipulate model parameters, getting information model running simulation.","code":""},{"path":"/reference/epiworld-methods.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Methods for epiworldR objects — epiworld-methods","text":"","code":"queuing_on(x) queuing_off(x) verbose_off(x) verbose_on(x) run(model, ndays, seed = sample.int(10000, 1)) # S3 method for epiworld_model summary(object, ...) get_states(x) get_param(x, pname) set_param(x, pname, pval) set_name(x, mname) get_name(x) get_n_viruses(x) get_n_tools(x) get_ndays(x) get_n_replicates(x) size(x) set_agents_data(model, data) get_agents_data_ncols(model) get_virus(model, virus_pos) get_tool(model, tool_pos)"},{"path":"/reference/epiworld-methods.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Methods for epiworldR objects — epiworld-methods","text":"x object class epiworld_model. model Model object. ndays Number days (steps) simulation. seed Seed set initializing random number generator. object Object class epiworld_model. ... Additional arguments. pname String. Name parameter. pval Numeric. Value parameter. mname String. Name model. data numeric matrix. virus_pos Integer. Relative location (starting 0) virus model tool_pos Integer. Relative location (starting 0) tool model","code":""},{"path":"/reference/epiworld-methods.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Methods for epiworldR objects — epiworld-methods","text":"verbose_on verbose_off functions return model, however verbose_off returns model progress bar. run function returns simulated model class epiworld_model. summary function prints detailed view model, returns model invisibly. get_states function returns unique states found model. get_param function returns selected parameter model object class epiworld_model. set_param function return value instead alters parameter value. set_name function return value instead alters object epiworld_model. get_name returns name model. get_n_viruses returns number viruses model. get_n_tools returns number tools model. get_ndays returns number days model. get_n_replicates returns number replicates model. size.epiworld_model returns number agents model. 'set_agents_data' function returns object class DataFrame. 'get_agents_data_ncols' returns number columns model dataframe. 'get_virus' returns virus. get_tool returns tool.","code":""},{"path":"/reference/epiworld-methods.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Methods for epiworldR objects — epiworld-methods","text":"verbose_on verbose_off functions activate deactivate printing progress screen, respectively. functions return model (x) invisibly.","code":""},{"path":"/reference/epiworld-methods.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Methods for epiworldR objects — epiworld-methods","text":"","code":"model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) # Queuing - If you wish to implement the queuing function, declare whether # you would like it \"on\" or \"off\", if any. queuing_on(model_sirconn) #> Warning: SIR Connected models do not have queue. queuing_off(model_sirconn) run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Verbose - \"on\" prints the progress bar on the screen while \"off\" # deactivates the progress bar. Declare which function you want to implement, # if any. verbose_on(model_sirconn) verbose_off(model_sirconn) run(model_sirconn, ndays = 100, seed = 1912) get_states(model_sirconn) # Returns all unique states found within the model. #> [1] \"Susceptible\" \"Infected\" \"Recovered\" get_param(model_sirconn, 'Contact rate') # Returns the value of the selected #> [1] 5 # parameter within the model object. # In order to view the parameters, # run the model object and find the # \"Model parameters\" section. set_param(model_sirconn, 'Contact rate', 2) # Allows for adjustment of model # parameters within the model # object. In this example, the # Contact rate parameter is # changed to 2. You can now rerun # the model to observe any # differences. set_name(model_sirconn, 'My Epi-Model') # This function allows for setting # a name for the model. Running the # model object, the name of the model # is now reflected next to \"Name of # the model\". get_name(model_sirconn) # Returns the set name of the model. #> [1] \"My Epi-Model\" get_n_viruses(model_sirconn) # Returns the number of viruses in the model. #> [1] 1 # In this case, there is only one virus: # \"COVID-19\". get_n_tools(model_sirconn) # Returns the number of tools in the model. In #> [1] 0 # this case, there are zero tools. get_ndays(model_sirconn) # Returns the length of the simulation in days. This #> [1] 100 # will match \"ndays\" within the \"run\" function. get_n_replicates(model_sirconn) # Returns the number of replicates of the #> [1] 2 # model. size(model_sirconn) # Returns the population size in the model. In this case, #> [1] 10000 # there are 10,000 agents in the model. # Set Agents Data # First, your data matrix must have the same number of rows as agents in the # model. Below is a generated matrix which will be passed into the # \"set_agents_data\" function. data <- matrix(data=runif(20000, min=0, max=100), nrow=10000, ncol=2) set_agents_data(model_sirconn, data) get_agents_data_ncols(model_sirconn) # Returns number of columns #> [1] 2 get_virus(model_sirconn, 0) # Returns information about the first virus in #> Virus : COVID-19 #> Id : 0 #> state_init : 1 #> state_post : 2 #> state_removed : 2 #> queue_init : 2 #> queue_post : -2 #> queue_removed : -99 # the model (index begins at 0). add_tool(model_sirconn, tool(\"Vaccine\", .9, .9, .5, 1), proportion = .5) get_tool(model_sirconn, 0) # Returns information about the first tool in the #> Tool : Vaccine #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 # model. In this case, there are no tools so an # error message will occur."},{"path":"/reference/epiworldR-package.html","id":null,"dir":"Reference","previous_headings":"","what":"epiworldR — epiworldR-package","title":"epiworldR — epiworldR-package","text":"flexible framework Agent-Based Models (ABM), 'epiworldR' package provides methods prototyping disease outbreaks transmission models using 'C++' backend, making fast. supports multiple epidemiological models, including Susceptible-Infected-Susceptible (SIS), Susceptible-Infected-Removed (SIR), Susceptible-Exposed-Infected-Removed (SEIR), others, involving arbitrary mitigation policies multiple-disease models. Users can specify infectiousness/susceptibility rates function agents' features, providing great complexity model dynamics. Furthermore, 'epiworldR' ideal simulation studies featuring large populations.","code":""},{"path":[]},{"path":"/reference/epiworldR-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"epiworldR — epiworldR-package","text":"Maintainer: Derek Meyer derekmeyer37@gmail.com (ORCID) Authors: George Vega Yon g.vegayon@gmail.com (ORCID) contributors: Susan Holmes (ORCID) (JOSS reviewer) [reviewer] Abinash Satapathy (ORCID) (JOSS reviewer) [reviewer] Carinogurjao [reviewer] Centers Disease Control Prevention (Award number 1U01CK000585; 75D30121F00003) [funder]","code":""},{"path":"/reference/get_agents.html","id":null,"dir":"Reference","previous_headings":"","what":"Agents in epiworldR — get_agents","title":"Agents in epiworldR — get_agents","text":"functions provide read-access agents model. get_agents function returns object class epiworld_agents contains information agents model. get_agent function returns information single agent. get_state function returns state single agent.","code":""},{"path":"/reference/get_agents.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Agents in epiworldR — get_agents","text":"","code":"get_agents(model) # S3 method for epiworld_agents [(x, i) # S3 method for epiworld_agent print(x, compressed = FALSE, ...) # S3 method for epiworld_agents print(x, compressed = TRUE, max_print = 10, ...) get_state(x)"},{"path":"/reference/get_agents.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Agents in epiworldR — get_agents","text":"model object class epiworld_model. x object class epiworld_agents Index (id) agent (0 n-1) compressed Logical scalar. FALSE, prints detailed information agent. ... Ignored max_print Integer scalar. Maximum number agents print.","code":""},{"path":"/reference/get_agents.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Agents in epiworldR — get_agents","text":"get_agents function returns object class epiworld_agents. [ method returns object class epiworld_agent. print function returns information individual agent class epiworld_agent. get_state function returns state epiworld_agents object.","code":""},{"path":[]},{"path":"/reference/get_agents.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Agents in epiworldR — get_agents","text":"","code":"model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. x <- get_agents(model_sirconn) # Storing all agent information into object of # class epiworld_agents print(x, compressed = FALSE, max_print = 5) # Displaying detailed information of #> Agents from the model \"Susceptible-Infected-Removed (SIR) (connected)\": #> Information about agent id 0 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> Information about agent id 1 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> Information about agent id 2 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> Information about agent id 3 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> Information about agent id 4 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> ... 9995 more agents ... # the first 5 agents using # compressed=F. Using compressed=T # results in less-detailed # information about each agent. x[0] # Print information about the first agent. Substitute the agent of #> Information about agent id 0 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 # interest's position where '0' is."},{"path":"/reference/global-actions.html","id":null,"dir":"Reference","previous_headings":"","what":"Global Actions — global-actions","title":"Global Actions — global-actions","text":"Global actions functions executed time step simulation. useful implementing interventions, vaccination, isolation, social distancing means tools.","code":""},{"path":"/reference/global-actions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Global Actions — global-actions","text":"","code":"globalaction_tool(tool, prob, name = get_name_tool(tool), day = -99) globalaction_tool_logit( tool, vars, coefs, name = get_name_tool(tool), day = -99 ) globalaction_set_params( param, value, name = paste0(\"Set \", param, \" to \", value), day = -99 ) globalaction_fun(fun, name = deparse(substitute(fun)), day = -99) add_global_action(model, action)"},{"path":"/reference/global-actions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Global Actions — global-actions","text":"tool object class tool. prob Numeric scalar. probability 0 1. name Character scalar. name action. day Integer. day (step) action executed (see details). vars Integer vector. position variables model. coefs Numeric vector. coefficients logistic regression. param Character scalar. name parameter set. value Numeric scalar. value parameter. fun Function. function executed. model object class epiworld_model. action global action.","code":""},{"path":"/reference/global-actions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Global Actions — global-actions","text":"globalaction_set_params function returns object class epiworld_globalaction_set_param epiworld_globalaction. globalaction_tool returns object class epiworld_globalaction_tool epiworld_globalaction. globalaction_tool_logit returns object class epiworld_globalaction_tool_logit epiworld_globalaction. function add_global_action returns model added action.","code":""},{"path":"/reference/global-actions.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Global Actions — global-actions","text":"function globalaction_tool_logit allows specify logistic regression model probability using tool. model specified vector coefficients coefs vector variables vars. vars integer vector indicating position variables model. function globalaction_set_param allows set parameter model. parameter specified name param value value. function globalaction_fun allows specify function executed given day. function object must receive object class epiworld_model argument. function add_global_action adds global action model. model checks actions executed time step. added action matches current time step, action executed. day negative, action executed time step. day positive, action executed specified time step.","code":""},{"path":[]},{"path":"/reference/global-actions.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Global Actions — global-actions","text":"","code":"# Simple model model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) # Creating a tool epitool <- tool( name = \"Vaccine\", susceptibility_reduction = .9, transmission_reduction = .5, recovery_enhancer = .5, death_reduction = .9 ) # Adding a global action vaccine_day_20 <- globalaction_tool(epitool, .2, day = 20) add_global_action(model_sirconn, vaccine_day_20) # Running and printing run(model_sirconn, ndays = 40, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. model_sirconn #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 10000 agents, 1 virus(es), and 1 tool(s). #> The model has 3 states. #> The final distribution is: 2000 Susceptible, 0 Infected, and 8000 Recovered. plot_incidence(model_sirconn) # Example 2: Changing the contact rate ------------------------------------- model_sirconn2 <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) closure_day_10 <- globalaction_set_params(\"Contact rate\", 0, day = 10) add_global_action(model_sirconn2, closure_day_10) # Running and printing run(model_sirconn2, ndays = 40, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. model_sirconn2 #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 10000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 2127 Susceptible, 0 Infected, and 7873 Recovered. plot_incidence(model_sirconn2) # Example using `globalaction_fun` to record the state of the # agents at each time step. # We start by creating an SIR connected model model <- ModelSIRCONN( name = \"SIR with Global Saver\", n = 1000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.3 ) # We create the object where the history of the agents will be stored agents_history <- NULL # This function prints the total number of agents in each state # and stores the history of the agents in the object `agents_history` hist_saver <- function(m) { message(\"Today's totals are: \", paste(get_today_total(m), collapse = \", \")) # We use the `<<-` operator to assign the value to the global variable # `agents_history` (see ?\"<<-\") agents_history <<- cbind( agents_history, get_agents_states(m) ) }"},{"path":"/reference/run_multiple.html","id":null,"dir":"Reference","previous_headings":"","what":"Run multiple simulations at once — run_multiple","title":"Run multiple simulations at once — run_multiple","text":"run_multiple function allows running multiple simulations . available, users can take advantage parallel computing speed process.","code":""},{"path":"/reference/run_multiple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Run multiple simulations at once — run_multiple","text":"","code":"run_multiple( m, ndays, nsims, seed = sample.int(10000, 1), saver = make_saver(), reset = TRUE, verbose = TRUE, nthreads = 1L ) run_multiple_get_results(m) make_saver(..., fn = \"\")"},{"path":"/reference/run_multiple.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Run multiple simulations at once — run_multiple","text":"m, ndays, seed See run. nsims Integer. Number replicats saver object class epiworld_saver. reset TRUE (default,) resets simulation. verbose TRUE (default,) prints progress bar. nthreads Integer. Number threads (parallel computing.) ... List strings (characters) specifying save (see details). fn file name pattern.","code":""},{"path":"/reference/run_multiple.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Run multiple simulations at once — run_multiple","text":"case make_saver, list class epiworld_saver. run_multiple function runs specified number simulations returns model object class epiworld_model. run_multiple_get_results function returns named list data specified make_saver.","code":""},{"path":"/reference/run_multiple.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Run multiple simulations at once — run_multiple","text":"Currently, following elements can saved: total_hist History model (total numbers per time). virus_info Information viruses. virus_hist Changes viruses. tool_info Information tools. tool_hist Changes tools. transmission Transmission events. transition Transition matrices. reproductive Reproductive number. generation Estimation generation time.","code":""},{"path":"/reference/run_multiple.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Run multiple simulations at once — run_multiple","text":"","code":"model_sir <- ModelSIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 1000, contact_rate = 2, transmission_rate = 0.9, recovery_rate = 0.1 ) # Generating a saver saver <- make_saver(\"total_hist\", \"reproductive\") # Running and printing run_multiple(model_sir, ndays = 100, nsims = 50, saver = saver, nthreads = 2) #> Starting multiple runs (50) using 2 thread(s) #> _________________________________________________________________________ #> _________________________________________________________________________ #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Retrieving the results ans <- run_multiple_get_results(model_sir) head(ans$total_hist) #> sim_num date nviruses state counts #> 1 1 0 1 Susceptible 990 #> 2 1 0 1 Infected 10 #> 3 1 0 1 Recovered 0 #> 4 1 1 1 Susceptible 974 #> 5 1 1 1 Infected 26 #> 6 1 1 1 Recovered 0 head(ans$reproductive) #> sim_num virus_id virus source source_exposure_date rt #> 1 1 0 COVID-19 175 10 0 #> 2 1 0 COVID-19 672 10 0 #> 3 1 0 COVID-19 718 10 0 #> 4 1 0 COVID-19 210 9 0 #> 5 1 0 COVID-19 448 8 0 #> 6 1 0 COVID-19 592 8 0 # Plotting multi_sir <- run_multiple_get_results(model_sir)$total_hist multi_sir <- multi_sir[multi_sir$date <= 20,] plot(multi_sir)"},{"path":"/reference/tool.html","id":null,"dir":"Reference","previous_headings":"","what":"Tools in epiworld — tool","title":"Tools in epiworld — tool","text":"Tools functions affect agents react virus. can used simulate effects vaccination, isolation, social distancing.","code":""},{"path":"/reference/tool.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tools in epiworld — tool","text":"","code":"tool( name, susceptibility_reduction, transmission_reduction, recovery_enhancer, death_reduction ) set_name_tool(tool, name) get_name_tool(tool) add_tool(model, tool, proportion) add_tool_n(model, tool, n) rm_tool(model, tool_pos) rm_tool(model, tool_pos) tool_fun_logit(vars, coefs, model) set_susceptibility_reduction(tool, prob) set_susceptibility_reduction_ptr(tool, model, param) set_susceptibility_reduction_fun(tool, model, tfun) set_transmission_reduction(tool, prob) set_transmission_reduction_ptr(tool, model, param) set_transmission_reduction_fun(tool, model, tfun) set_recovery_enhancer(tool, prob) set_recovery_enhancer_ptr(tool, model, param) set_recovery_enhancer_fun(tool, model, tfun) set_death_reduction(tool, prob) set_death_reduction_ptr(tool, model, param) set_death_reduction_fun(tool, model, tfun) # S3 method for epiworld_agents_tools print(x, max_print = 10, ...)"},{"path":"/reference/tool.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tools in epiworld — tool","text":"name Name tool susceptibility_reduction Numeric. Proportion reduces susceptibility. transmission_reduction Numeric. Proportion reduces transmission. recovery_enhancer Numeric. Proportion improves recovery. death_reduction Numeric. Proportion reduces probability death.e tool object class epiworld_tool model Model proportion case add_tool, proportion, otherwise, integer. n positive integer. Number agents initially tool. tool_pos Positive integer. Index tool's position model. vars Integer vector. Indices (starting 0) positions variables used compute logit probability. coefs Numeric vector. length vars, vector coefficients associated logit probability. prob Numeric scalar. probability (zero one). param Character scalar. Name parameter featured model added tool (see details). tfun object class epiworld_tool_fun. x object class epiworld_agents_tools. max_print Numeric scalar. Maximum number tools print. ... Currently ignored.","code":""},{"path":"/reference/tool.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tools in epiworld — tool","text":"tool function creates tool class epiworld_tool. set_name_tool function assigns name tool class epiworld_tool returns tool. get_name_tool function returns name tool class epiworld_tool. add_tool_n function adds specified tool model class epiworld_model specified count n. rm_tool function removes specified tool model. set_susceptibility_reduction function assigns probability reduction specified tool class epiworld_tool. set_transmission_reduction function assigns probability reduction specified tool class epiworld_tool. set_recovery_enhancer function assigns probability increase specified tool class epiworld_tool. set_death_reduction function assigns probability decrease specified tool class epiworld_tool.","code":""},{"path":"/reference/tool.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Tools in epiworld — tool","text":"name epiworld_tool object can manipulated functions set_name_tool() get_name_tool(). add_tool function adds specified tool model class epiworld_model specified proportion. case set_susceptibility_reduction_ptr, set_transmission_reduction_ptr, set_recovery_enhancer, set_death_reduction_ptr, corresponding parameters passed pointer tool. implication using pointers values read directly model object, changes reflected.","code":""},{"path":"/reference/tool.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tools in epiworld — tool","text":"","code":"# Simple model model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) # Running and printing run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. plot(model_sirconn) epitool <- tool( name = \"Vaccine\", susceptibility_reduction = .9, transmission_reduction = .5, recovery_enhancer = .5, death_reduction = .9 ) epitool #> Tool : Vaccine #> Id : (empty) #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 set_name_tool(epitool, 'Pfizer') # Assigning name to the tool get_name_tool(epitool) # Returning the name of the tool #> [1] \"Pfizer\" add_tool(model_sirconn, epitool, .5) run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sirconn #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 10000 agents, 1 virus(es), and 1 tool(s). #> The model has 3 states. #> The final distribution is: 8344 Susceptible, 0 Infected, and 1656 Recovered. plot(model_sirconn) # To declare a certain number of individuals with the tool rm_tool(model_sirconn, 0) # Removing epitool from the model add_tool_n(model_sirconn, epitool, 5500) run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Adjusting probabilities due to tool set_susceptibility_reduction(epitool, 0.1) # Susceptibility reduction #> Tool : Pfizer #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 set_transmission_reduction(epitool, 0.2) # Transmission reduction #> Tool : Pfizer #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 set_recovery_enhancer(epitool, 0.15) # Probability increase of recovery #> Tool : Pfizer #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 set_death_reduction(epitool, 0.05) # Probability reduction of death #> Tool : Pfizer #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 run(model_sirconn, ndays = 100, seed = 1912) # Run model to view changes #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Using the logit function -------------- sir <- ModelSIR( name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1 ) # Adding a small world population agents_smallworld( sir, n = 10000, k = 5, d = FALSE, p = .01 ) # Creating a tool mask_wearing <- tool( name = \"Mask\", susceptibility_reduction = 0.0, transmission_reduction = 0.3, # Only transmission recovery_enhancer = 0.0, death_reduction = 0.0 ) add_tool(sir, mask_wearing, .5) run(sir, ndays = 50, seed = 11) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. hist_0 <- get_hist_total(sir) # And adding features dat <- cbind( female = sample.int(2, 10000, replace = TRUE) - 1, x = rnorm(10000) ) set_agents_data(sir, dat) # Creating the logit function tfun <- tool_fun_logit( vars = c(0L, 1L), coefs = c(-1, 1), model = sir ) # The infection prob is lower hist(plogis(dat %*% rbind(.5,1))) tfun # printing #> An epiworld_tool_function object. #> (model: Susceptible-Infected-Recovered (SIR)) #> This function was built using -tool_fun_logit()-. and it features the following coefficients: #> 0: -1.00 #> 1: 1.00 set_susceptibility_reduction_fun( tool = get_tool(sir, 0), model = sir, tfun = tfun ) run(sir, ndays = 50, seed = 11) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. hist_1 <- get_hist_total(sir) op <- par(mfrow = c(1, 2)) plot(hist_0); abline(v = 30) plot(hist_1); abline(v = 30) par(op)"},{"path":"/reference/virus.html","id":null,"dir":"Reference","previous_headings":"","what":"Virus design — virus","title":"Virus design — virus","text":"Viruses can considered anything can transmitted (e.g., diseases, well ideas.) models epiworldR can feature multiple viruses.","code":""},{"path":"/reference/virus.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Virus design — virus","text":"","code":"virus( name, prob_infecting, recovery_rate = 0.5, prob_death = 0, post_immunity = -1, incubation = 7 ) set_name_virus(virus, name) get_name_virus(virus) add_virus(model, virus, proportion) add_virus_n(model, virus, n) virus_set_state(virus, init, end, removed) rm_virus(model, virus_pos) virus_fun_logit(vars, coefs, model) set_prob_infecting(virus, prob) set_prob_infecting_ptr(virus, model, param) set_prob_infecting_fun(virus, model, vfun) set_prob_recovery(virus, prob) set_prob_recovery_ptr(virus, model, param) set_prob_recovery_fun(virus, model, vfun) set_prob_death(virus, prob) set_prob_death_ptr(virus, model, param) set_prob_death_fun(virus, model, vfun) set_incubation(virus, incubation) set_incubation_ptr(virus, model, param) set_incubation_fun(virus, model, vfun) # S3 method for epiworld_agents_viruses print(x, max_print = 10, ...)"},{"path":"/reference/virus.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Virus design — virus","text":"name virus prob_infecting Numeric scalar. Probability infection (transmission). recovery_rate Numeric scalar. Probability recovery. prob_death Numeric scalar. Probability death. post_immunity Numeric scalar. Post immunity (prob re-infection). incubation Numeric scalar. Incubation period (days) virus. virus object class epiworld_virus model object class epiworld_model. proportion case add_virus, proportion, otherwise, integer. n positive integer. Initial count agents virus. init, end, removed states acquiring virus, removing virus, removing agent result virus, respectively. virus_pos Positive integer. Index virus's position model. vars Integer vector. Indices (starting 0) positions variables used compute logit probability. coefs Numeric vector. length vars, vector coefficients associated logit probability. prob Numeric scalar. probability (zero one). param Character scalar. Name parameter featured model added virus (see details). vfun object class epiworld_virus_fun. x object class epiworld_agents_viruses. max_print Numeric scalar. Maximum number viruses print. ... Currently ignored.","code":""},{"path":"/reference/virus.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Virus design — virus","text":"set_name_virus function return value, merely assigns name virus choice. get_name_virus function returns name virus class epiworld_virus. add_virus function return value, instead adds virus choice model object class epiworld_model. add_virus_n function return value, instead adds specified number agents virus choice model object class epiworld_model. virus_set_state function return value assigns epidemiological properties specified virus class epiworld_virus. rm_virus function return value, instead removes specified virus model class epiworld_model. set_prob_infecting function return value, instead assigns probability infection specified virus class epiworld_virus. set_prob_recovery function return value, instead assigns probability recovery specified virus class epiworld_virus. set_prob_death function return value, instead assigns probability death specified virus class epiworld_virus. set_incubation function return value, instead assigns incubation period specified virus class epiworld_virus.","code":""},{"path":"/reference/virus.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Virus design — virus","text":"virus() function can used initialize virus. Virus features can modified using functions set_prob_*. function virus_fun_logit() creates \"virus function\" can evaluated transmission, recovery, death. name sugests, computes probabilities using logit function (see examples). name epiworld_virus object can manipulated functions set_name_virus() get_name_virus(). case set_prob_infecting_ptr, set_prob_recovery_ptr, set_prob_death_ptr, corresponding parameters passed pointer virus. implication using pointers values read directly model object, changes reflected.","code":""},{"path":"/reference/virus.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Virus design — virus","text":"","code":"mseirconn <- ModelSEIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 10000, contact_rate = 4, incubation_days = 7, transmission_rate = 0.5, recovery_rate = 0.99 ) delta <- virus(\"Delta Variant\", 0, .5, .2, .01) # Adding virus and setting/getting virus name add_virus(mseirconn, delta, .3) set_name_virus(delta, \"COVID-19 Strain\") get_name_virus(delta) #> [1] \"COVID-19 Strain\" run(mseirconn, ndays = 100, seed = 992) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. mseirconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) (connected) #> It features 10000 agents, 2 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 3774 Susceptible, 102 Exposed, 18 Infected, and 6106 Recovered. rm_virus(mseirconn, 0) # Removing the first virus from the model object add_virus_n(mseirconn, delta, 100) # Setting initial count of delta virus # to n = 100 # Setting parameters for the delta virus manually set_prob_infecting(delta, 0.5) set_prob_recovery(delta, 0.9) set_prob_death(delta, 0.01) run(mseirconn, ndays = 100, seed = 992) # Run the model to observe changes #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # If the states were (for example): # 1: Infected # 2: Recovered # 3: Dead delta2 <- virus(\"Delta Variant 2\", 0, .5, .2, .01) virus_set_state(delta2, 1, 2, 3) # Using the logit function -------------- sir <- ModelSIR( name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery = 0.1 ) # Adding a small world population agents_smallworld( sir, n = 10000, k = 5, d = FALSE, p = .01 ) run(sir, ndays = 50, seed = 11) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(sir) # And adding features dat <- cbind( female = sample.int(2, 10000, replace = TRUE) - 1, x = rnorm(10000) ) set_agents_data(sir, dat) # Creating the logit function vfun <- virus_fun_logit( vars = c(0L, 1L), coefs = c(-1, 1), model = sir ) # The infection prob is lower hist(plogis(dat %*% rbind(-1,1))) vfun # printing #> An epiworld_virus_function object. #> (model: Susceptible-Infected-Recovered (SIR)) #> This function was built using -virus_fun_logit()-. and it features the following coefficients: #> 0: -1.00 #> 1: 1.00 set_prob_infecting_fun( virus = get_virus(sir, 0), model = sir, vfun = vfun ) run(sir, ndays = 50, seed = 11) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(sir)"},{"path":"/news/index.html","id":"epiworldr-00-39000-development-version","dir":"Changelog","previous_headings":"","what":"epiworldR 0.0-3.9000 (development version)","title":"epiworldR 0.0-3.9000 (development version)","text":"Added missing checks tool class adding model add_too_n. Various small improvements.","code":""},{"path":"/news/index.html","id":"epiworldr-00-3","dir":"Changelog","previous_headings":"","what":"epiworldR 0.0-3","title":"epiworldR 0.0-3","text":"CRAN release: 2023-09-08 Added following models: ModelSEIRD, ModelSEIRDCONN, ModelSIRD, ModelSIRDCONN, ModelSISD. Fixed bug reported issue 6.","code":""},{"path":"/news/index.html","id":"epiworldr-00-2","dir":"Changelog","previous_headings":"","what":"epiworldR 0.0-2","title":"epiworldR 0.0-2","text":"CRAN release: 2023-06-21 Added NEWS.md file track changes package. Fixed bug reported CRAN reference nullptr. Renamed arguments across Models favor consistency. Figures now show virus/tool name instead id. Fixed bug run_multiple added tests (C++). Redid autoconf Makevars using RcppArmadillo template checking OpenMP.","code":""}] +[{"path":[]},{"path":"/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement derekmeyer37@gmail.com. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2023 George G. Vega Yon Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":[]},{"path":"/articles/getting-started.html","id":"setup-and-running-the-model","dir":"Articles","previous_headings":"Example 1: Simulating an SIR model","what":"Setup and running the model","title":"Getting started with epiworldR","text":"example implements social network parameters listed within ModelSIRCONN function. virus name specified (COVID-19), 50000 agents initialized, virus prevalence 0.001 declared, agent contact two others (contact_rate), transmission rate given agent 0.3, recovery rate set \\(\\frac{1}{3}\\). create model epiworldR, simply use ModelSIRCONN function. , example take basic features epiworldR. Printing model shows us information. Nevertheless, can extract detailed information using summary method. First, name model, population size, number entities (think public spaces agents can make social contact one another), duration days, number viruses, amount time last replicate took run (last run elapsed t), rewiring status (). model also includes list global actions (interventions) called model run. Next, see list viruses used model. case, COVID-19 virus used. Note epiworldR can include one virus model. Tool(s) lists agents’ tools fight virus. Examples may include masking, vaccines, social distancing, etc. model, tools specified. Lastly, model parameters listed. execute model, use run function SIR model object, number simulation days, optional seed reproducibility. Next, print results simulated model using model_sir. two additional sections included summary running model. First, see distribution population time 50. section describes flow agents state (SIR) 50 days. example, ’ll see number agents susceptible state decreased 49,995 3,364, number agents infected state increased 5 0, recovered agents increased 46,636 50 days. counts states change based model parameters simulation run-time. transmission probabilities section outputs 3x3 matrix describes probability moving one state another. example, susceptible row, agent 0.95 probability remaining susceptible state 0.05 probability moving susceptible state infected state. Notice chance skipping states. words, agent can’t jump susceptible state recovered state; agent must pass infected state progress recovered state. logic applies moving backward; agent become susceptible infection.","code":"library(epiworldR) model_sir <- ModelSIRCONN( name = \"COVID-19\", n = 50000, prevalence = 0.0001, contact_rate = 2, transmission_rate = 0.5, recovery_rate = 1/3 ) # Printing the model model_sir #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 50000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. The model hasn't been run yet. summary(model_sir) #> ________________________________________________________________________________ #> ________________________________________________________________________________ #> SIMULATION STUDY #> #> Name of the model : Susceptible-Infected-Removed (SIR) (connected) #> Population size : 50000 #> Agents' data : (none) #> Number of entities : 0 #> Days (duration) : 0 (of 0) #> Number of viruses : 1 #> Last run elapsed t : - #> Rewiring : off #> #> Global actions: #> (none) #> #> Virus(es): #> - COVID-19 (baseline prevalence: 0.01%) #> #> Tool(s): #> (none) #> #> Model parameters: #> - Contact rate : 2.0000 #> - Recovery rate : 0.3333 #> - Transmission rate : 0.5000 run(model_sir, ndays = 50, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. summary(model_sir) #> ________________________________________________________________________________ #> ________________________________________________________________________________ #> SIMULATION STUDY #> #> Name of the model : Susceptible-Infected-Removed (SIR) (connected) #> Population size : 50000 #> Agents' data : (none) #> Number of entities : 0 #> Days (duration) : 50 (of 50) #> Number of viruses : 1 #> Last run elapsed t : 371.00ms #> Last run speed : 6.73 million agents x day / second #> Rewiring : off #> #> Global actions: #> (none) #> #> Virus(es): #> - COVID-19 (baseline prevalence: 0.01%) #> #> Tool(s): #> (none) #> #> Model parameters: #> - Contact rate : 2.0000 #> - Recovery rate : 0.3333 #> - Transmission rate : 0.5000 #> #> Distribution of the population at time 50: #> - (0) Susceptible : 49995 -> 3364 #> - (1) Infected : 5 -> 0 #> - (2) Recovered : 0 -> 46636 #> #> Transition Probabilities: #> - Susceptible 0.95 0.05 0.00 #> - Infected 0.00 0.64 0.36 #> - Recovered 0.00 0.00 1.00"},{"path":[]},{"path":"/articles/getting-started.html","id":"extracting-information","dir":"Articles","previous_headings":"Example 1: Simulating an SIR model","what":"Extracting information","title":"Getting started with epiworldR","text":"running epiworldR model, list functions can called using epiworld model object. demonstrate, start basic plot get_hist_total functions. evident plot, SIR model constructed epiworldR displays changes susceptible, infected, recovered case counts time (days). Notice certain amount time, curves flatten. , table representation plot printed, complete state within SIR model, date, agent counts. essential statistic epidemiological models reproductive number: epiworldR method plot reproductive number automatically. function takes average values table date repeats data accounted . Another typical piece information daily incidence. number new cases per day. epiworldR, can get incidence looking daily transitions states. Although function get_hist_transition_matrix provides desired data, function plot_incidence nice wrapper visualizing data:","code":"methods(class = \"epiworld_model\") #> [1] add_tool_n add_tool #> [3] add_virus_n add_virus #> [5] agents_from_edgelist agents_smallworld #> [7] get_hist_tool get_hist_total #> [9] get_hist_transition_matrix get_hist_virus #> [11] get_n_replicates get_n_tools #> [13] get_n_viruses get_name #> [15] get_ndays get_param #> [17] get_reproductive_number get_states #> [19] get_today_total get_transition_probability #> [21] get_transmissions print #> [23] queuing_off queuing_on #> [25] run_multiple run #> [27] set_name set_param #> [29] size summary #> [31] verbose_off verbose_on #> see '?methods' for accessing help and source code plot(model_sir) head(get_hist_total(model_sir)) #> date state counts #> 1 0 Susceptible 49995 #> 2 0 Infected 5 #> 3 0 Recovered 0 #> 4 1 Susceptible 49991 #> 5 1 Infected 9 #> 6 1 Recovered 0 repnum <- get_reproductive_number(model_sir) head(repnum) #> virus_id virus source source_exposure_date rt #> 1 0 COVID-19 23811 44 0 #> 2 0 COVID-19 38232 42 1 #> 3 0 COVID-19 19769 41 1 #> 4 0 COVID-19 28486 40 0 #> 5 0 COVID-19 6422 39 0 #> 6 0 COVID-19 7907 39 0 x <- plot(repnum, type = \"b\") subset(x, date == 10) # Reproductive number on day 10 #> virus_id virus date avg n sd lb ub #> 11 0 COVID-19 10 2.450464 646 2.263946 0 7.875 plot_incidence(model_sir)"},{"path":"/articles/getting-started.html","id":"adding-more-virusesviruses","dir":"Articles","previous_headings":"Example 1: Simulating an SIR model","what":"Adding more viruses/viruses","title":"Getting started with epiworldR","text":"epiworldR supports multi-virus models. code gives instructions implement . Using virus function, give name new virus/virus corresponding probability infecting given agent. example, prob_infecting set 1.0, making highly contagious. officially add new virus model, use add_virus function calling original epiworldR model object, new virus, new virus’ prevalence (set 0.01 example). running updated model new virus included 50 days, output describes simulation. confirm flu included, notice presence “Flu” Virus(es) section output. output interpretable specified previous sections. Plotting previous model (including flu) yields following. Notice presence two reproductive numbers plotted time. Variant 0 refers COVID-19, virus 1 refers flu.","code":"# Building the virus flu <- virus(name = \"Flu\", prob_infecting = .3) # Adding the virus to the model add_virus(model_sir, flu, .0001) run(model_sir, ndays = 50, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. model_sir #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 50000 agents, 2 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 3264 Susceptible, 4 Infected, and 46732 Recovered. repnum2 <- get_reproductive_number(model_sir) op <- par(mfrow = c(2,1)) plot(model_sir) plot(repnum2, type=\"b\") par(op)"},{"path":"/articles/getting-started.html","id":"tools","dir":"Articles","previous_headings":"Example 1: Simulating an SIR model","what":"Tools","title":"Getting started with epiworldR","text":"Now, implementation tools combat viruses viruses model demonstrated. First, sake simplicity, remove flu virus SIR model object (keep mind index flu virus model object 1). Next, provide parameters new tool using tool function. parameters include name tool, reduction probabilities SIR model parameters, increased probability recovery option. order add tool SIR model, use add_tool function SIR model object, new tool, prevalence tool. example, assume 85% population received vaccination.","code":"# Removing the flu virus from the model rm_virus(model_sir, 1) vaccine <- tool( name = \"Vaccine\", susceptibility_reduction = .9, transmission_reduction = .5, recovery_enhancer = .5, death_reduction = .9 ) add_tool(model_sir, vaccine, 0.5) run(model_sir, ndays = 50, seed = 1231) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. repnum3 <- get_reproductive_number(model_sir) op <- par(mfrow = c(2,1)) plot_incidence(model_sir) plot(repnum3, type=\"b\") par(op)"},{"path":"/articles/implementation.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Implementation details of epiworldR","text":"following vignette provides detailed information implementation epiworldR. package wrapper C++ package epiworld, framework building agent-based models.1","code":""},{"path":"/articles/implementation.html","id":"general-flow-of-the-models","dir":"Articles","previous_headings":"","what":"General flow of the models","title":"Implementation details of epiworldR","text":"core function epiworldR run() function. function executes model saves results database part underlying C++ object. package implements discrete-time ABM, meaning model executed discrete steps (e.g., days). run() function executes following steps: model reset(), involves: () resetting agents, available, restoring population backup2, (b) resetting database, (c) distributing viruses tools, (d) setting initial state agents. steps fixing current_date = 0. model’s state recorded database, current_date incremented 1. resetting model, start iterative process repeating following steps: state agent updated. States updated according corresponding update_state function. Since model discrete-time, state changes stored promises, meaning agents’ states updated immediately. Instead, state updated end updates. done avoid updating state agent using updated state update state another agent. example, agent \\(\\) infects agent \\(j\\), agent \\(j\\) able infect agent \\(\\) step. update schedule laid , changes made effective, , instance, individuals became infected update start next step infected state. Global actions executed. also change agents’ states, just like previous step, changes stored promises made effective actions evaluated. model’s state recorded database, current_date incremented 1. model checks whether simulation stop. simulation stop, model stops. Otherwise, model goes back step . steps included epiworld epiworldR network rewiring mutation viruses. implemented future versions epiworldR.","code":""},{"path":[]},{"path":"/articles/implementation.html","id":"transmission-probability","dir":"Articles","previous_headings":"Computing probabilities","what":"Transmission probability","title":"Implementation details of epiworldR","text":"Generally, epiworldR assumes step simulation, susceptible agents can acquire disease one infected agent. probability transmission \\(\\) \\(j\\) given following formula: \\[ P(\\j| \\mbox{one}) = \\frac{p_{ij} \\times \\prod_{k\\neq }\\left(1 - p_{kj}\\right)}{\\prod_k\\left(1 - p_{kj}\\right) + \\sum_k p_{kj} \\times \\prod_{l\\neq k}\\left(1 - p_{lj}\\right)} \\] adjusted probabilities \\(p_{ij}\\) computed function \\(\\), \\(j\\), virus. following section describes probabilities computed.","code":""},{"path":"/articles/implementation.html","id":"adjusted-probabilities","dir":"Articles","previous_headings":"Computing probabilities","what":"Adjusted probabilities","title":"Implementation details of epiworldR","text":"Viruses tools provide way adjust agents move states. Viruses epiworldR contain various baseline probabilities used across models, including transmission, recovery, death. hand, tools alter probabilities reducing/increasing . Furthermore, tools alter agents’ susceptibility, infectiousness, recovery, death probabilities. Currently, tools alter probabilities constant factor, \\[ p_{ij} = p_{v} \\times \\left(1 - factor_{host}\\right) \\times \\left(1 - factor_{target}\\right) \\] \\(p_{v}\\) raw transmission probability virus \\(v\\), \\(factor_{t}\\) increasing/reducing factors tools process. example, p_v 0.9, host wearing mask, \\(factor_{\\mbox{mask host}} = 0.3\\) target vaccinated, \\(factor_{\\mbox{vaccinated target}} = 0.5\\), adjusted probability \\(p_{ij}\\) \\(0.9 \\times (1 - 0.3) \\times (1 - 0.5) = 0.27\\). agents one tool, factors combined follows: \\[ factor_{agent} = 1 - \\prod_{t\\tools_{agent}}\\left(1 - factor_{t}\\right) \\] Therefore, example, vaccinated agent wearing mask factor \\(1 - (1 - 0.30) \\times (1 - 0.5) = 0.65\\). adjusted probabilities principle also applies recovery rates SIR SEIR models.","code":""},{"path":"/articles/implementation.html","id":"transmission-in-connected-modelsmodels","dir":"Articles","previous_headings":"Computing probabilities","what":"Transmission in connected models3","title":"Implementation details of epiworldR","text":"“connected” models provide version agents live fully connected network. means agent can infect agent, making version similar typical compartmental models. models, transmission probability depends contact rate. susceptible agent, transmission process simulated follows: number contacts \\(c\\) drawn binomial distribution parameters \\(n\\) \\(p\\), \\(n\\) number agents \\(p =\\)contact_rate\\(/ n\\). , \\(c\\) agents randomly selected population. Transmission can occur agents susceptible agent. probability transmission \\(c\\) agents calculated described previous section.","code":""},{"path":"/articles/run-multiple.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Run Multiple","text":"purpose “run_multiple” function run specified number simulations using model object. , function makes possible compare model results across several separate repeated simulations.","code":""},{"path":[]},{"path":"/articles/run-multiple.html","id":"setup-and-running-model","dir":"Articles","previous_headings":"Example: Simulating a SEIRCONN Model 50 Times","what":"Setup and Running Model","title":"Run Multiple","text":"use “run_multiple” function epiworld, create epimodel choice; case, example uses SEIRCONN model COVID-19, 100000 people, initial prevalence 0.0001 (0.01%), contact rate 2, probability transmission 0.5, total 7 incubation days, probability recovery \\(\\frac{1}{3}\\).","code":"library(epiworldR) model_seirconn <- ModelSEIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.0001, contact_rate = 2, transmission_rate = 0.5, incubation_days = 7, recovery_rate = 1/3 )"},{"path":"/articles/run-multiple.html","id":"generating-a-saver","dir":"Articles","previous_headings":"Example: Simulating a SEIRCONN Model 50 Times","what":"Generating a Saver","title":"Run Multiple","text":"Next, generate saver purpose extracting “total_hist” “reproductive” information model object. Now, use “run_multiple” function model object, number desired days run simulation, number simulations run, number threads parallel computing. Using “run_multiple_get_results” function, extract results model object simulated 50 times comparison across simulations.","code":"# Generating a saver saver <- make_saver(\"total_hist\", \"reproductive\") # Running and printing run_multiple(model_seirconn, ndays = 50, nsims = 50, saver = saver, nthreads = 1) #> Starting multiple runs (50) using 1 thread(s) #> _________________________________________________________________________ #> _________________________________________________________________________ #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Retrieving the results ans <- run_multiple_get_results(model_seirconn) head(ans$total_hist) #> sim_num date nviruses state counts #> 1 1 0 1 Susceptible 9999 #> 2 1 0 1 Exposed 1 #> 3 1 0 1 Infected 0 #> 4 1 0 1 Recovered 0 #> 5 1 1 1 Susceptible 9999 #> 6 1 1 1 Exposed 1 head(ans$reproductive) #> sim_num virus_id virus source source_exposure_date rt #> 1 1 0 COVID-19 2633 50 0 #> 2 1 0 COVID-19 4894 50 0 #> 3 1 0 COVID-19 6298 50 0 #> 4 1 0 COVID-19 9338 50 0 #> 5 1 0 COVID-19 3517 49 0 #> 6 1 0 COVID-19 5661 49 0"},{"path":"/articles/run-multiple.html","id":"plotting","dir":"Articles","previous_headings":"Example: Simulating a SEIRCONN Model 50 Times","what":"Plotting","title":"Run Multiple","text":"plot epicurves reproductive numbers time using boxplots, extract results model object using “run_multiple_get_results”. example, dates filtered less equal 20 observe epicurves first 20 days. Notice boxplot table represents observed values 50 simulations date. view plot reproductive number 50 days 50 simulations, store reproductive results new object using “run_multiple_get_results”, plot using “boxplot” function. Notice source exposure date displays boxplot representing distribution reproductive numbers across 50 simulations. expected, reproductive number average, decreases time.","code":"seirconn_50 <- run_multiple_get_results(model_seirconn)$total_hist seirconn_50 <- seirconn_50[seirconn_50$date <= 20,] plot(seirconn_50) seirconn_50_r <- run_multiple_get_results(model_seirconn)$reproductive plot(seirconn_50_r) # boxplot(rt ~ source_exposure_date, data = seirconn_50_r, # main = \"Reproductive Number\", # xlab = \"Source Exposure Date\", # ylab = \"rt\", # border = \"black\", # las = 2)"},{"path":"/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Derek Meyer. Author, maintainer. George Vega Yon. Author. Susan Holmes. Reviewer. JOSS reviewer Abinash Satapathy. Reviewer. JOSS reviewer Carinogurjao. Reviewer. Centers Disease Control Prevention. Funder. Award number 1U01CK000585; 75D30121F00003","code":""},{"path":"/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Meyer D, Vega Yon G (2023). epiworldR: Fast Agent-Based Epi Models. https://github.com/UofUEpiBio/epiworldR, https://uofuepibio.github.io/epiworldR/, https://uofuepibio.github.io/epiworldR-workshop/.","code":"@Manual{, title = {epiworldR: Fast Agent-Based Epi Models}, author = {Derek Meyer and George {Vega Yon}}, year = {2023}, note = {https://github.com/UofUEpiBio/epiworldR, https://uofuepibio.github.io/epiworldR/, https://uofuepibio.github.io/epiworldR-workshop/}, }"},{"path":"/index.html","id":"versions","dir":"","previous_headings":"","what":"Versions","title":"Fast Agent-Based Epi Models","text":"virtual INSNA Sunbelt 2023 session can found : https://github.com/UofUEpiBio/epiworldR-workshop/tree/sunbelt2023-virtual -person INSNA Sunbelt 2023 session can found : https://github.com/UofUEpiBio/epiworldR-workshop/tree/sunbetl2023-inperson","code":""},{"path":"/index.html","id":"epiworldr","dir":"","previous_headings":"","what":"Fast Agent-Based Epi Models","title":"Fast Agent-Based Epi Models","text":"R package wrapper C++ library epiworld. provides general framework modeling disease transmission using agent-based models. main features include: Fast simulation average 30 million agents/day per second. One model can include multiple diseases. Policies (tools) can multiple user-defined. Transmission can function agents’ features. ---box parallelization multiple simulations. package’s description: flexible framework Agent-Based Models (ABM), epiworldR package provides methods prototyping disease outbreaks transmission models using C++ backend, making fast. supports multiple epidemiological models, including Susceptible-Infected-Susceptible (SIS), Susceptible-Infected-Removed (SIR), Susceptible-Exposed-Infected-Removed (SEIR), others, involving arbitrary mitigation policies multiple-disease models. Users can specify infectiousness/susceptibility rates function agents’ features, providing great complexity model dynamics. Furthermore, epiworldR ideal simulation studies featuring large populations.","code":""},{"path":"/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Fast Agent-Based Epi Models","text":"can install development version epiworldR GitHub : CRAN","code":"devtools::install_github(\"UofUEpiBio/epiworldR\") install.packages(\"epiworldR\")"},{"path":"/index.html","id":"examples","dir":"","previous_headings":"","what":"Examples","title":"Fast Agent-Based Epi Models","text":"R package includes several popular epidemiological models including SIS, SIR, SEIR using either fully connected graph (similar compartmental model) user-defined network. examples:","code":""},{"path":"/index.html","id":"sir-model-using-a-random-graph","dir":"","previous_headings":"","what":"SIR model using a random graph","title":"Fast Agent-Based Epi Models","text":"Susceptible-Infected-Recovered model features population 100,000 agents simulated small-world network. agent connected ten agents. One percent population virus, 70% chance transmission. Infected individuals recover 0.3 rate: Visualizing outputs","code":"library(epiworldR) # Creating a SIR model sir <- ModelSIR( name = \"COVID-19\", prevalence = .01, transmission_rate = .7, recovery = .3 ) |> # Adding a Small world population agents_smallworld(n = 100000, k = 10, d = FALSE, p = .01) |> # Running the model for 50 days run(ndays = 50, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. sir #> ________________________________________________________________________________ #> Susceptible-Infected-Recovered (SIR) #> It features 100000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 822 Susceptible, 415 Infected, and 98763 Recovered. summary(sir) #> ________________________________________________________________________________ #> ________________________________________________________________________________ #> SIMULATION STUDY #> #> Name of the model : Susceptible-Infected-Recovered (SIR) #> Population size : 100000 #> Agents' data : (none) #> Number of entities : 0 #> Days (duration) : 50 (of 50) #> Number of viruses : 1 #> Last run elapsed t : 241.00ms #> Last run speed : 20.67 million agents x day / second #> Rewiring : off #> #> Global actions: #> (none) #> #> Virus(es): #> - COVID-19 (baseline prevalence: 1.00%) #> #> Tool(s): #> (none) #> #> Model parameters: #> - Recovery rate : 0.3000 #> - Transmission rate : 0.7000 #> #> Distribution of the population at time 50: #> - (0) Susceptible : 99000 -> 822 #> - (1) Infected : 1000 -> 415 #> - (2) Recovered : 0 -> 98763 #> #> Transition Probabilities: #> - Susceptible 0.91 0.09 0.00 #> - Infected 0.00 0.70 0.30 #> - Recovered 0.00 0.00 1.00 plot(sir)"},{"path":"/index.html","id":"seir-model-with-a-fully-connected-graph","dir":"","previous_headings":"","what":"SEIR model with a fully connected graph","title":"Fast Agent-Based Epi Models","text":"SEIR model similar SIR model includes exposed state. , simulate population 10,000 agents 0.01 prevalence, 0.6 transmission rate, 0.5 recovery rate, 7 days-incubation period. population fully connected, meaning agents can transmit disease agent: Computing key statistics","code":"model_seirconn <- ModelSEIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 10000, contact_rate = 4, incubation_days = 7, transmission_rate = 0.6, recovery_rate = 0.5 ) |> add_virus(virus(\"COVID-19\", 0.01, 0.6, 0.5, 7), .5) set.seed(132) run(model_seirconn, ndays = 100) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) (connected) #> It features 10000 agents, 2 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 608 Susceptible, 4 Exposed, 2 Infected, and 9386 Recovered. plot(model_seirconn) repnum <- get_reproductive_number(model_seirconn) head(plot(repnum)) #> virus_id virus date avg n sd lb ub #> 1 0 COVID-19 0 2.858974 78 2.592318 1 7.30 #> 2 0 COVID-19 2 1.964286 28 1.914509 0 5.65 #> 3 0 COVID-19 3 2.761905 21 2.321740 0 7.00 #> 4 0 COVID-19 4 2.000000 33 1.887459 0 6.40 #> 5 0 COVID-19 5 1.864865 37 2.225636 0 9.10 #> 6 0 COVID-19 6 2.104167 48 2.667692 0 10.65 plot_incidence(model_seirconn) head(plot_generation_time(model_seirconn)) #> date avg n sd ci_lower ci_upper virus virus_id #> 1 2 5.714286 21 4.681270 2 17.00 COVID-19 0 #> 2 3 7.444444 18 4.501271 2 15.45 COVID-19 0 #> 3 4 7.192308 26 5.578668 2 20.75 COVID-19 0 #> 4 5 7.111111 27 4.236593 2 15.70 COVID-19 0 #> 5 6 7.575000 40 7.249713 2 30.20 COVID-19 0 #> 6 7 6.303030 33 4.531038 2 18.00 COVID-19 0"},{"path":"/index.html","id":"sir-logit","dir":"","previous_headings":"","what":"SIR Logit","title":"Fast Agent-Based Epi Models","text":"model provides complex transmission recovery pattern based agents’ features. , can reflect co-morbidities change probability infection recovery. , simulate population including dataset two features: intercept binary variable Female. probability infection recovery functions intercept Female variables. following code simulates population 100,000 agents small-world network. agent connected eight agents. One percent population virus, 80% chance transmission. Infected individuals recover 0.3 rate:","code":"# Simulating a population of 100,000 agents set.seed(2223) n <- 100000 # Agents' features X <- cbind( Intercept = 1, Female = sample.int(2, n, replace = TRUE) - 1 ) coef_infect <- c(.1, -2, 2) coef_recover <- rnorm(2) # Creating the model model_logit <- ModelSIRLogit( \"covid2\", data = X, coefs_infect = coef_infect, coefs_recover = coef_recover, coef_infect_cols = 1L:ncol(X), coef_recover_cols = 1L:ncol(X), prob_infection = .8, recovery_rate = .3, prevalence = .01 ) # Adding a small-world population agents_smallworld(model_logit, n, 8, FALSE, .01) # Running the model run(model_logit, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(model_logit) # Females are supposed to be more likely to become infected rn <- get_reproductive_number(model_logit) (table( X[, \"Female\"], (1:n %in% rn$source) ) |> prop.table())[,2] #> 0 1 #> 0.12984 0.14201 # Looking into the agents get_agents(model_logit) #> Agents from the model \"Susceptible-Infected-Removed (SIR) (logit)\": #> Agent: 0, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 1, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 2, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 3, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 4, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 5, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 6, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 7, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 8, state: Susceptible (0), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 9, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> ... 99990 more agents ..."},{"path":"/index.html","id":"transmission-network","dir":"","previous_headings":"","what":"Transmission network","title":"Fast Agent-Based Epi Models","text":"example shows can draw transmission network simulation. following code simulates population 500 agents small-world network. agent connected ten agents. One percent population virus, 50% chance transmission. Infected individuals recover 0.5 rate:","code":"# Creating a SIR model sir <- ModelSIR( name = \"COVID-19\", prevalence = .01, transmission_rate = .5, recovery = .5 ) |> # Adding a Small world population agents_smallworld(n = 500, k = 10, d = FALSE, p = .01) |> # Running the model for 50 days run(ndays = 50, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. # Transmission network net <- get_transmissions(sir) # Plotting library(netplot) #> Loading required package: grid library(igraph) #> #> Attaching package: 'igraph' #> The following object is masked from 'package:netplot': #> #> ego #> The following objects are masked from 'package:stats': #> #> decompose, spectrum #> The following object is masked from 'package:base': #> #> union x <- graph_from_edgelist(as.matrix(net[,2:3]) + 1) nplot(x, edge.curvature = 0, edge.color = \"gray\", skip.vertex=TRUE)"},{"path":"/index.html","id":"multiple-simulations","dir":"","previous_headings":"","what":"Multiple simulations","title":"Fast Agent-Based Epi Models","text":"epiworldR supports running multiple simulations using run_multiple function. following code simulates 50 SIR models 1000 agents . agent connected ten agents. One percent population virus, 90% chance transmission. Infected individuals recover 0.1 rate. results saved data.frame: # Existing Alternatives Several alternatives epiworldR exist provide researchers range options, unique features strengths, enabling exploration analysis infectious disease dynamics agent-based modeling. manually curated table existing alternatives including ABM [@ABM], abmR [@abmR], cystiSim [@cystiSim], villager [@villager], RNetLogo [@RNetLogo].","code":"model_sir <- ModelSIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 1000, contact_rate = 2, transmission_rate = 0.9, recovery_rate = 0.1 ) # Generating a saver saver <- make_saver(\"total_hist\", \"reproductive\") # Running and printing # Notice the use of nthread = 2 to run the simulations in parallel run_multiple(model_sir, ndays = 100, nsims = 50, saver = saver, nthread = 2) #> Starting multiple runs (50) using 2 thread(s) #> _________________________________________________________________________ #> _________________________________________________________________________ #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Retrieving the results ans <- run_multiple_get_results(model_sir) head(ans$total_hist) #> sim_num date nviruses state counts #> 1 1 0 1 Susceptible 990 #> 2 1 0 1 Infected 10 #> 3 1 0 1 Recovered 0 #> 4 1 1 1 Susceptible 974 #> 5 1 1 1 Infected 25 #> 6 1 1 1 Recovered 1 head(ans$reproductive) #> sim_num virus_id virus source source_exposure_date rt #> 1 1 0 COVID-19 767 11 0 #> 2 1 0 COVID-19 835 10 0 #> 3 1 0 COVID-19 466 9 0 #> 4 1 0 COVID-19 612 9 0 #> 5 1 0 COVID-19 793 9 0 #> 6 1 0 COVID-19 20 8 0 plot(ans$reproductive)"},{"path":"/index.html","id":"other-abm-r-packages","dir":"","previous_headings":"","what":"Other ABM R packages","title":"Fast Agent-Based Epi Models","text":"may want check R packages agent-based modeling: ABM, abmR, cystiSim, villager, RNetLogo.","code":""},{"path":"/index.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Fast Agent-Based Epi Models","text":"Please note epiworldR project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"/paper.html","id":null,"dir":"","previous_headings":"","what":"Introduction","title":"Introduction","text":"Agent-based modeling (ABM) emerged powerful computational approach studying complex systems across various fields, including social sciences epidemiology. simulating interactions behaviors individual entities, known agents, ABM provides unique lens researchers can analyze understand emergent properties dynamics systems. epiworldR package provides flexible framework ABM implementation methods prototyping disease outbreaks transmission models using C++ backend. supports multiple epidemiological models, including Susceptible-Infected-Susceptible (SIS), Susceptible-Infected-Removed (SIR), Susceptible-Exposed-Infected-Removed (SEIR), others, involving arbitrary mitigation policies multiple-disease models. Users can specify transmission/susceptibility rates function agents’ features, providing great complexity model dynamics.","code":""},{"path":"/paper.html","id":"key-features","dir":"","previous_headings":"","what":"Key Features","title":"Introduction","text":"Built robust foundation C++, package combines efficient computation flexibility R, providing seamless user experience several standout features: Multiple Viruses - feature allows researchers simulate analyze dynamics various infectious diseases simultaneously. Multiple Tools - capability enables users design model objects may reflect real-world interventions. Examples include vaccines, mask wearing protocols, social distancing, much . Multiple Runs - epiworldR ability run simulations multiple times, providing complete picture simulation results behaviors. Global Actions - Similar adding multiple tools, global actions allow users implement interventions policies global scale point simulation, mimicking real-world scenarios aiding assessment impact. Built-Epidemiological Models - feature ensures researchers access well-established widely recognized frameworks, making easier compare benchmark results. Included popular epidemiological models : SIR, SIS, SEIR, SIR connected, SIS connected, SEIR connected, . extensive range features, epiworldR empowers researchers practitioners field epidemiology conduct thorough analyses, make informed decisions, contribute advancement public health.","code":""},{"path":"/paper.html","id":"existing-alternatives","dir":"","previous_headings":"","what":"Existing Alternatives","title":"Introduction","text":"Several alternatives epiworldR exist provide researchers range options, unique features strengths, enabling exploration analysis infectious disease dynamics agent-based modeling. manually curated table existing alternatives including ABM [@ABM], abmR [@abmR], cystiSim [@cystiSim], villager [@villager], RNetLogo [@RNetLogo].","code":""},{"path":"/paper.html","id":"statement-of-need","dir":"","previous_headings":"","what":"Statement of Need","title":"Introduction","text":"epiworldR package addresses need sophisticated epidemiological research offering user-friendly agent-based modeling (ABM) tool simulating analyzing infectious disease dynamics. caters diverse audience researchers, epidemiologists, public health practitioners, social scientists, policymakers, enabling study complex disease spread patterns, evaluate intervention strategies, prepare emerging pathogens. Unlike traditional epidemiological models, epiworldR’s ABM approach captures individual-level behaviors interactions, providing realistic representation disease dynamics. distinction sets apart compartmental models ABM frameworks, making epiworldR valuable accessible tool advancing infectious disease modeling enhancing outbreak preparedness.","code":""},{"path":"/paper.html","id":"conclusion","dir":"","previous_headings":"","what":"Conclusion","title":"Introduction","text":"development epiworldR package ushered new era agent-based modeling field social science epidemiology. harnessing power C++ flexibility R, comprehensive package offers multitude features enhance modeling analysis complex infectious disease dynamics. package’s ability handle multiple viruses tools, diverse set epidemiological models, capability run simulations multiple times, inclusion global actions capability empower researchers explore wide range scenarios make informed decisions regarding public health interventions. epiworldR serves valuable resource social science epidemiological communities, enabling study real-world phenomena, prediction outcomes, policy analysis. field epidemiology continues evolve, epiworldR stands forefront, providing researchers practitioners powerful tool navigate complexities infectious diseases contribute improvement global health outcomes.","code":""},{"path":[]},{"path":"/reference/ModelDiffNet.html","id":null,"dir":"Reference","previous_headings":"","what":"Network Diffusion Model — ModelDiffNet","title":"Network Diffusion Model — ModelDiffNet","text":"network diffusion model simple model assumes probability adoption behavior proportional number adopters network.","code":""},{"path":"/reference/ModelDiffNet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Network Diffusion Model — ModelDiffNet","text":"","code":"ModelDiffNet( name, prevalence, prob_adopt, normalize_exposure = TRUE, data = matrix(nrow = 0, ncol = 0), data_cols = 1L:ncol(data), params = vector(\"double\") ) # S3 method for epiworld_diffnet plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelDiffNet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Network Diffusion Model — ModelDiffNet","text":"name Name model. prevalence Prevalence disease. prob_adopt Probability adoption. normalize_exposure Normalize exposure. data Data. data_cols Data columns. params Parameters. x Object class epiworld_diffnet. main Title plot ... Passed graphics::plot.","code":""},{"path":"/reference/ModelDiffNet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Network Diffusion Model — ModelDiffNet","text":"object class epiworld_diffnet epiworld_model.","code":""},{"path":"/reference/ModelDiffNet.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Network Diffusion Model — ModelDiffNet","text":"Different common epidemiological models, network diffusion model assumes probability adoption behavior proportional number adopters network. model defined following equations: $$ P(adopt) = \\mbox{Logit}^{-1}(prob\\_adopt + params * data + exposure) $$ exposure number adopters agent's network. Another important difference transmission network necesary useful since adoption model particular neighbor.","code":""},{"path":[]},{"path":"/reference/ModelDiffNet.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Network Diffusion Model — ModelDiffNet","text":"","code":"set.seed(2223) n <- 10000 # Generating synthetic data on a matrix with 2 columns. X <- cbind( age = sample(1:100, n, replace = TRUE), female = sample.int(2, n, replace = TRUE) - 1 ) adopt_chatgpt <- ModelDiffNet( \"ChatGPT\", prevalence = .01, prob_adopt = .1, data = X, params = c(1, 4) ) # Simulating a population from smallworld agents_smallworld(adopt_chatgpt, n, 8, FALSE, .01) # Running the model for 50 steps run(adopt_chatgpt, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. # Plotting the model plot(adopt_chatgpt)"},{"path":"/reference/ModelSEIR.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"Susceptible Exposed Infected Recovered model (SEIR)","code":""},{"path":"/reference/ModelSEIR.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"","code":"ModelSEIR(name, prevalence, transmission_rate, incubation_days, recovery_rate) # S3 method for epiworld_seir plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSEIR.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"name String. Name virus. prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. incubation_days Numeric scalar greater 0. Average number incubation days. recovery_rate Numeric scalar 0 1. Rate recovery_rate virus. x Object class SEIR. main Title plot ... Currently ignore.","code":""},{"path":"/reference/ModelSEIR.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"ModelSEIRfunction returns model class epiworld_model. plot function returns plot SEIR model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSEIR.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Exposed Infected Recovered model (SEIR) — ModelSEIR","text":"","code":"model_seir <- ModelSEIR(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1, incubation_days = 4) # Adding a small world population agents_smallworld( model_seir, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_seir, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seir #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 0 Susceptible, 0 Exposed, 7 Infected, and 993 Removed. plot(model_seir, main = \"SEIR Model\")"},{"path":"/reference/ModelSEIRCONN.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"SEIR connected model implements model agents connected. equivalent compartmental model (wiki).","code":""},{"path":"/reference/ModelSEIRCONN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"","code":"ModelSEIRCONN( name, n, prevalence, contact_rate, transmission_rate, incubation_days, recovery_rate ) # S3 method for epiworld_seirconn plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSEIRCONN.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"name String. Name virus. n Number individuals population. prevalence Initial proportion individuals virus. contact_rate Numeric scalar. Average number contacts per step. transmission_rate Numeric scalar 0 1. Probability transmission. incubation_days Numeric scalar greater 0. Average number incubation days. recovery_rate Numeric scalar 0 1. Probability recovery_rate. x Object class SEIRCONN. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSEIRCONN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"ModelSEIRCONNfunction returns model class epiworld_model. plot function returns plot SEIRCONN model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSEIRCONN.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Exposed Infected Removed model (SEIR connected) — ModelSEIRCONN","text":"","code":"# An example with COVID-19 model_seirconn <- ModelSEIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 10000, contact_rate = 2, incubation_days = 7, transmission_rate = 0.5, recovery_rate = 0.3 ) # Running and printing run(model_seirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) (connected) #> It features 10000 agents, 1 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 430 Susceptible, 0 Exposed, 6 Infected, and 9564 Recovered. plot(model_seirconn) # Adding the flu flu <- virus(\"Flu\", .9, 1/7) add_virus(model_seirconn, flu, .001) #' # Running and printing run(model_seirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) (connected) #> It features 10000 agents, 2 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 3 Susceptible, 0 Exposed, 0 Infected, and 9997 Recovered. plot(model_seirconn)"},{"path":"/reference/ModelSEIRD.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD)","code":""},{"path":"/reference/ModelSEIRD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"","code":"ModelSEIRD( name, prevalence, transmission_rate, incubation_days, recovery_rate, death_rate ) # S3 method for epiworld_seird plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSEIRD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"name String. Name virus. prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. incubation_days Numeric scalar greater 0. Average number incubation days. recovery_rate Numeric scalar 0 1. Rate recovery_rate virus. death_rate Numeric scalar 0 1. Rate death virus. x Object class SEIRD. main Title plot ... Currently ignore.","code":""},{"path":"/reference/ModelSEIRD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"ModelSEIRDfunction returns model class epiworld_model. plot function returns plot SEIRD model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSEIRD.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible-Exposed-Infected-Recovered-Deceased model (SEIRD) — ModelSEIRD","text":"","code":"model_seird <- ModelSEIRD(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1, incubation_days = 4, death_rate = 0.01) # Adding a small world population agents_smallworld( model_seird, n = 100000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_seird, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seird #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed-Deceased (SEIRD) #> It features 100000 agents, 1 virus(es), and 0 tool(s). #> The model has 5 states. #> The final distribution is: 1961 Susceptible, 388 Exposed, 1358 Infected, 88223 Removed, and 8070 Deceased. plot(model_seird, main = \"SEIRD Model\")"},{"path":"/reference/ModelSEIRDCONN.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"SEIRD connected model implements model agents connected. equivalent compartmental model (wiki).","code":""},{"path":"/reference/ModelSEIRDCONN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"","code":"ModelSEIRDCONN( name, n, prevalence, contact_rate, transmission_rate, incubation_days, recovery_rate, death_rate ) # S3 method for epiworld_seirdconn plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSEIRDCONN.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"name String. Name virus. n Number individuals population. prevalence Initial proportion individuals virus. contact_rate Numeric scalar. Average number contacts per step. transmission_rate Numeric scalar 0 1. Probability transmission. incubation_days Numeric scalar greater 0. Average number incubation days. recovery_rate Numeric scalar 0 1. Probability recovery_rate. death_rate Numeric scalar 0 1. Probability death. x Object class SEIRCONN. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSEIRDCONN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"ModelSEIRDCONNfunction returns model class epiworld_model. plot function returns plot SEIRDCONN model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSEIRDCONN.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Exposed Infected Removed Deceased model (SEIRD connected) — ModelSEIRDCONN","text":"","code":"# An example with COVID-19 model_seirdconn <- ModelSEIRDCONN( name = \"COVID-19\", prevalence = 0.01, n = 10000, contact_rate = 2, incubation_days = 7, transmission_rate = 0.5, recovery_rate = 0.3, death_rate = 0.01 ) # Running and printing run(model_seirdconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirdconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed-Deceased (SEIRD) (connected) #> It features 10000 agents, 1 virus(es), and 0 tool(s). #> The model has 5 states. #> The final distribution is: 439 Susceptible, 0 Exposed, 3 Infected, 9326 Removed, and 232 Deceased. plot(model_seirdconn) # Adding the flu flu <- virus(\"Flu\", prob_infecting = .3, recovery_rate = 1/7, prob_death = 0.001) add_virus(model = model_seirdconn, virus = flu, proportion = .001) #' # Running and printing run(model_seirdconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_seirdconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed-Deceased (SEIRD) (connected) #> It features 10000 agents, 2 virus(es), and 0 tool(s). #> The model has 5 states. #> The final distribution is: 410 Susceptible, 7 Exposed, 4 Infected, 9384 Removed, and 195 Deceased. plot(model_seirdconn)"},{"path":"/reference/ModelSIR.html","id":null,"dir":"Reference","previous_headings":"","what":"SIR model — ModelSIR","title":"SIR model — ModelSIR","text":"SIR model","code":""},{"path":"/reference/ModelSIR.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SIR model — ModelSIR","text":"","code":"ModelSIR(name, prevalence, transmission_rate, recovery_rate) # S3 method for epiworld_sir plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIR.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SIR model — ModelSIR","text":"name String. Name virus prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. recovery_rate Numeric scalar 0 1. Rate recovery_rate virus. x Object class SIR. main Title plot ... Additional arguments passed graphics::plot.","code":""},{"path":"/reference/ModelSIR.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SIR model — ModelSIR","text":"ModelSIR function returns model class epiworld_model. plot function returns plot SIR model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIR.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SIR model — ModelSIR","text":"","code":"model_sir <- ModelSIR(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1) # Adding a small world population agents_smallworld( model_sir, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_sir, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sir #> ________________________________________________________________________________ #> Susceptible-Infected-Recovered (SIR) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 0 Susceptible, 9 Infected, and 991 Recovered. # Plotting plot(model_sir)"},{"path":"/reference/ModelSIRCONN.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"Susceptible Infected Removed model (SIR connected)","code":""},{"path":"/reference/ModelSIRCONN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"","code":"ModelSIRCONN( name, n, prevalence, contact_rate, transmission_rate, recovery_rate ) # S3 method for epiworld_sirconn plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIRCONN.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"name String. Name virus n Number individuals population. prevalence Double. Initial proportion individuals virus. contact_rate Numeric scalar. Average number contacts per step. transmission_rate Numeric scalar 0 1. Probability transmission. recovery_rate Numeric scalar 0 1. Probability recovery. x Object class SIRCONN. main Title plot ... Currently ignore.","code":""},{"path":"/reference/ModelSIRCONN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"ModelSIRCONNfunction returns model class epiworld_model. plot function returns plot SIRCONN model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIRCONN.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Infected Removed model (SIR connected) — ModelSIRCONN","text":"","code":"model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) # Running and printing run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sirconn #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 10000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 2000 Susceptible, 0 Infected, and 8000 Recovered. plot(model_sirconn, main = \"SIRCONN Model\")"},{"path":"/reference/ModelSIRD.html","id":null,"dir":"Reference","previous_headings":"","what":"SIRD model — ModelSIRD","title":"SIRD model — ModelSIRD","text":"SIRD model","code":""},{"path":"/reference/ModelSIRD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SIRD model — ModelSIRD","text":"","code":"ModelSIRD(name, prevalence, transmission_rate, recovery_rate, death_rate) # S3 method for epiworld_sird plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIRD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SIRD model — ModelSIRD","text":"name String. Name virus prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. recovery_rate Numeric scalar 0 1. Rate recovery_rate virus. death_rate Numeric scalar 0 1. Rate death virus. x Object class SIR. main Title plot ... Additional arguments passed graphics::plot.","code":""},{"path":"/reference/ModelSIRD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SIRD model — ModelSIRD","text":"ModelSIRD function returns model class epiworld_model. plot function returns plot SIRD model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIRD.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SIRD model — ModelSIRD","text":"","code":"model_sird <- ModelSIRD( name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1, death_rate = 0.01 ) # Adding a small world population agents_smallworld( model_sird, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_sird, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sird #> ________________________________________________________________________________ #> Susceptible-Infected-Recovered-Deceased (SIRD) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 0 Susceptible, 5 Infected, 912 Recovered, and 83 Deceased. # Plotting plot(model_sird)"},{"path":"/reference/ModelSIRDCONN.html","id":null,"dir":"Reference","previous_headings":"","what":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"Susceptible Infected Removed Deceased model (SIRD connected)","code":""},{"path":"/reference/ModelSIRDCONN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"","code":"ModelSIRDCONN( name, n, prevalence, contact_rate, transmission_rate, recovery_rate, death_rate ) # S3 method for epiworld_sirdconn plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIRDCONN.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"name String. Name virus n Number individuals population. prevalence Double. Initial proportion individuals virus. contact_rate Numeric scalar. Average number contacts per step. transmission_rate Numeric scalar 0 1. Probability transmission. recovery_rate Numeric scalar 0 1. Probability recovery. death_rate Numeric scalar 0 1. Probability death. x Object class SIRDCONN. main Title plot ... Currently ignore.","code":""},{"path":"/reference/ModelSIRDCONN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"ModelSIRDCONNfunction returns model class epiworld_model. plot function returns plot SIRDCONN model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIRDCONN.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Susceptible Infected Removed Deceased model (SIRD connected) — ModelSIRDCONN","text":"","code":"model_sirdconn <- ModelSIRDCONN( name = \"COVID-19\", n = 100000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.5, death_rate = 0.1 ) # Running and printing run(model_sirdconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sirdconn #> ________________________________________________________________________________ #> Susceptible-Infected-Removed-Deceased (SIRD) (connected) #> It features 100000 agents, 1 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 3778 Susceptible, 0 Infected, 86521 Recovered, and 9701 Deceased. plot(model_sirdconn, main = \"SIRDCONN Model\")"},{"path":"/reference/ModelSIRLogit.html","id":null,"dir":"Reference","previous_headings":"","what":"SIR Logistic model — ModelSIRLogit","title":"SIR Logistic model — ModelSIRLogit","text":"SIR Logistic model","code":""},{"path":"/reference/ModelSIRLogit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SIR Logistic model — ModelSIRLogit","text":"","code":"ModelSIRLogit( vname, data, coefs_infect, coefs_recover, coef_infect_cols, coef_recover_cols, prob_infection, recovery_rate, prevalence )"},{"path":"/reference/ModelSIRLogit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SIR Logistic model — ModelSIRLogit","text":"vname Name virus. data numeric matrix n rows. coefs_infect Numeric vector. Coefficients associated infect. coefs_recover Numeric vector. Coefficients associated recover. coef_infect_cols Integer vector. Columns coeficient. coef_recover_cols Integer vector. Columns coeficient. prob_infection Numeric scalar. Baseline probability infection. recovery_rate Numeric scalar. Baseline probability recovery. prevalence Numeric scalar. Prevalence (initial state) proportion.","code":""},{"path":"/reference/ModelSIRLogit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SIR Logistic model — ModelSIRLogit","text":"ModelSIRLogit function returns model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIRLogit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SIR Logistic model — ModelSIRLogit","text":"","code":"set.seed(2223) n <- 100000 # Creating the data to use for the \"ModelSIRLogit\" function. It contains # information on the sex of each agent and will be used to determine # differences in disease progression between males and females. Note that # the number of rows in these data are identical to n (100000). X <- cbind( Intercept = 1, Female = sample.int(2, n, replace = TRUE) - 1 ) # Declare coefficients for each sex regarding transmission_rate and recovery. coef_infect <- c(.1, -2, 2) coef_recover <- rnorm(2) # Feed all above information into the \"ModelSIRLogit\" function. model_logit <- ModelSIRLogit( \"covid2\", data = X, coefs_infect = coef_infect, coefs_recover = coef_recover, coef_infect_cols = 1L:ncol(X), coef_recover_cols = 1L:ncol(X), prob_infection = .8, recovery_rate = .3, prevalence = .01 ) agents_smallworld(model_logit, n, 8, FALSE, .01) run(model_logit, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(model_logit) # Females are supposed to be more likely to become infected. rn <- get_reproductive_number(model_logit) # Probability of infection for males and females. (table( X[, \"Female\"], (1:n %in% rn$source) ) |> prop.table())[,2] #> 0 1 #> 0.12984 0.14201 # Looking into the individual agents. get_agents(model_logit) #> Agents from the model \"Susceptible-Infected-Removed (SIR) (logit)\": #> Agent: 0, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 1, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 2, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 3, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 4, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 5, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 6, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 7, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 8, state: Susceptible (0), Nvirus: 0, NTools: 0, NNeigh: 8 #> Agent: 9, state: Recovered (2), Nvirus: 0, NTools: 0, NNeigh: 8 #> ... 99990 more agents ..."},{"path":"/reference/ModelSIS.html","id":null,"dir":"Reference","previous_headings":"","what":"SIS model — ModelSIS","title":"SIS model — ModelSIS","text":"Susceptible-Infected-Susceptible model (SIS) (wiki)","code":""},{"path":"/reference/ModelSIS.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SIS model — ModelSIS","text":"","code":"ModelSIS(name, prevalence, transmission_rate, recovery_rate) # S3 method for epiworld_sis plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSIS.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SIS model — ModelSIS","text":"name String. Name virus. prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. recovery_rate Numeric scalar 0 1. Rate recovery virus. x Object class SIS. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSIS.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SIS model — ModelSIS","text":"ModelSIS function returns model class epiworld_model. plot function returns plot SIS model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSIS.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SIS model — ModelSIS","text":"","code":"model_sis <- ModelSIS(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1) # Adding a small world population agents_smallworld( model_sis, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_sis, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sis #> ________________________________________________________________________________ #> Susceptible-Infected-Susceptible (SIS) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 2 states. #> The final distribution is: 100 Susceptible, and 900 Infected. # Plotting plot(model_sis, main = \"SIS Model\")"},{"path":"/reference/ModelSISD.html","id":null,"dir":"Reference","previous_headings":"","what":"SISD model — ModelSISD","title":"SISD model — ModelSISD","text":"Susceptible-Infected-Susceptible-Deceased model (SISD) (wiki)","code":""},{"path":"/reference/ModelSISD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SISD model — ModelSISD","text":"","code":"ModelSISD(name, prevalence, transmission_rate, recovery_rate, death_rate) # S3 method for epiworld_sisd plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSISD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SISD model — ModelSISD","text":"name String. Name virus. prevalence Double. Initial proportion individuals virus. transmission_rate Numeric scalar 0 1. Virus's rate infection. recovery_rate Numeric scalar 0 1. Rate recovery virus. death_rate Numeric scalar 0 1. Rate death virus. x Object class SISD. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSISD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SISD model — ModelSISD","text":"ModelSISD function returns model class epiworld_model. plot function returns plot SISD model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSISD.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SISD model — ModelSISD","text":"","code":"model_sisd <- ModelSISD( name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1, death_rate = 0.01 ) # Adding a small world population agents_smallworld( model_sisd, n = 1000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_sisd, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sisd #> ________________________________________________________________________________ #> Susceptible-Infected-Susceptible-Deceased (SISD) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 52 Susceptible, 490 Infected, and 458 Deceased. # Plotting plot(model_sisd, main = \"SISD Model\")"},{"path":"/reference/ModelSURV.html","id":null,"dir":"Reference","previous_headings":"","what":"SURV model — ModelSURV","title":"SURV model — ModelSURV","text":"SURV model","code":""},{"path":"/reference/ModelSURV.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"SURV model — ModelSURV","text":"","code":"ModelSURV( name, prevalence, efficacy_vax, latent_period, infect_period, prob_symptoms, prop_vaccinated, prop_vax_redux_transm, prop_vax_redux_infect, surveillance_prob, transmission_rate, prob_death, prob_noreinfect ) # S3 method for epiworld_surv plot(x, main = get_name(x), ...)"},{"path":"/reference/ModelSURV.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"SURV model — ModelSURV","text":"name String. Name virus. prevalence Initial number individuals virus. efficacy_vax Double. Efficacy vaccine. (1 - P(acquire disease)). latent_period Double. Shape parameter 'Gamma(latent_period, 1)' distribution. coincides expected number latent days. infect_period Double. Shape parameter 'Gamma(infected_period, 1)' distribution. coincides expected number infectious days. prob_symptoms Double. Probability generating symptoms. prop_vaccinated Double. Probability vaccination. Coincides initial prevalence vaccinated individuals. prop_vax_redux_transm Double. Factor vaccine reduces transmissibility. prop_vax_redux_infect Double. Factor vaccine reduces chances becoming infected. surveillance_prob Double. Probability testing agent. transmission_rate Double. Raw transmission probability. prob_death Double. Raw probability death symptomatic individuals. prob_noreinfect Double. Probability re-infection. x Object class SURV. main Title plot. ... Currently ignore.","code":""},{"path":"/reference/ModelSURV.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"SURV model — ModelSURV","text":"ModelSURVfunction returns model class epiworld_model. plot function returns plot SURV model class epiworld_model.","code":""},{"path":[]},{"path":"/reference/ModelSURV.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"SURV model — ModelSURV","text":"","code":"model_surv <- ModelSURV( name = \"COVID-19\", prevalence = 20, efficacy_vax = 0.6, latent_period = 4, infect_period = 5, prob_symptoms = 0.5, prop_vaccinated = 0.7, prop_vax_redux_transm = 0.8, prop_vax_redux_infect = 0.95, surveillance_prob = 0.1, transmission_rate = 0.2, prob_death = 0.001, prob_noreinfect = 0.5 ) # Adding a small world population agents_smallworld( model_surv, n = 10000, k = 5, d = FALSE, p = .01 ) # Running and printing run(model_surv, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_surv #> ________________________________________________________________________________ #> Surveillance #> It features 10000 agents, 1 virus(es), and 1 tool(s). #> The model has 8 states. #> The final distribution is: 9978 Susceptible, 0 Latent, 0 Symptomatic, 0 Symptomatic isolated, 0 Asymptomatic, 0 Asymptomatic isolated, 22 Recovered, and 0 Removed. # Plotting plot(model_surv, main = \"SURV Model\")"},{"path":"/reference/agents_smallworld.html","id":null,"dir":"Reference","previous_headings":"","what":"Load agents to a model — agents_smallworld","title":"Load agents to a model — agents_smallworld","text":"functions provide access network model. network represented edgelist. agents_smallworld function generates small world network Watts-Strogatz algorithm. agents_from_edgelist function loads network edgelist. get_network function returns edgelist network.","code":""},{"path":"/reference/agents_smallworld.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Load agents to a model — agents_smallworld","text":"","code":"agents_smallworld(model, n, k, d, p) agents_from_edgelist(model, source, target, size, directed) get_network(model) get_agents_states(model) add_virus_agent(agent, model, virus, state_new = -99, queue = -99) add_tool_agent(agent, model, tool, state_new = -99, queue = -99) has_virus(agent, virus) has_tool(agent, tool) change_state(agent, model, state_new, queue = -99) get_agents_tools(model) get_agents_viruses(model)"},{"path":"/reference/agents_smallworld.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Load agents to a model — agents_smallworld","text":"model Model object class epiworld_model. n, size Number individuals population. k Number ties small world network. d, directed Logical scalar. Whether graph directed . p Probability rewiring. source, target Integer vectors describing source target edgelist. agent Agent object class epiworld_agent. virus Virus object class epiworld_virus. state_new Integer scalar. New state agent action executed. queue Integer scalar. Change queuing system action executed. tool Tool object class epiworld_tool.","code":""},{"path":"/reference/agents_smallworld.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Load agents to a model — agents_smallworld","text":"'agents_smallworld' function returns model agents loaded. agents_from_edgelist function returns empty model class epiworld_model. get_network function returns data frame two columns (source target) describing edgelist network. get_agents_states returns character vector states agents end simulation. function add_virus_agent adds virus agent returns agent invisibly. function add_tool_agent adds tool agent returns agent invisibly. functions has_virus has_tool return logical scalar indicating whether agent virus/tool . get_agents_tools returns list class epiworld_agents_tools epiworld_tools (list lists). get_agents_viruses returns list class epiworld_agents_viruses epiworld_viruses (list lists).","code":""},{"path":"/reference/agents_smallworld.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Load agents to a model — agents_smallworld","text":"new_state queue parameters optional. provided, agent updated default values virus/tool.","code":""},{"path":"/reference/agents_smallworld.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Load agents to a model — agents_smallworld","text":"","code":"# Initializing SIR model with agents_smallworld sir <- ModelSIR(name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1) agents_smallworld( sir, n = 1000, k = 5, d = FALSE, p = .01 ) run(sir, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. sir #> ________________________________________________________________________________ #> Susceptible-Infected-Recovered (SIR) #> It features 1000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 0 Susceptible, 9 Infected, and 991 Recovered. # We can also retrieve the network net <- get_network(sir) head(net) #> from to #> 1 0 1 #> 2 0 2 #> 3 0 998 #> 4 0 999 #> 5 1 2 #> 6 1 3 # Simulating a bernoulli graph set.seed(333) n <- 1000 g <- matrix(runif(n ^ 2) < .01, nrow = n) diag(g) <- FALSE el <- which(g, arr.ind = TRUE) - 1L # Generating an empty model sir <- ModelSIR(\"COVID-19\", .01, .8, .3) agents_from_edgelist( sir, source = el[,1], target = el[,2], size = n, directed = TRUE ) # Running the simulation run(sir, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(sir)"},{"path":"/reference/epiworld-data.html","id":null,"dir":"Reference","previous_headings":"","what":"Accessing the database of epiworld — epiworld-data","title":"Accessing the database of epiworld — epiworld-data","text":"Models epiworld stored database. database can accessed using functions described manual page. elements database : transition matrix, incidence matrix, reproductive number, generation time, daily incidence virus tool level.","code":""},{"path":"/reference/epiworld-data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Accessing the database of epiworld — epiworld-data","text":"","code":"get_hist_total(x) get_today_total(x) get_hist_virus(x) get_hist_tool(x) get_transition_probability(x) get_reproductive_number(x) # S3 method for epiworld_repnum plot( x, y = NULL, ylab = \"Average Rep. Number\", xlab = \"Day (step)\", main = \"Reproductive Number\", type = \"b\", plot = TRUE, ... ) plot_reproductive_number(x, ...) get_hist_transition_matrix(x, skip_zeros = FALSE) # S3 method for epiworld_hist_transition as.array(x, ...) plot_incidence(x, ...) # S3 method for epiworld_hist_transition plot( x, type = \"b\", xlab = \"Day (step)\", ylab = \"Counts\", main = \"Daily incidence\", plot = TRUE, ... ) get_transmissions(x) get_generation_time(x) # S3 method for epiworld_generation_time plot( x, type = \"b\", xlab = \"Day (step)\", ylab = \"Avg. Generation Time\", main = \"Generation Time\", plot = TRUE, ... ) plot_generation_time(x, ...)"},{"path":"/reference/epiworld-data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Accessing the database of epiworld — epiworld-data","text":"x object class epiworld_sir, epiworld_seir, etc. model. y Ignored. ylab, xlab, main, type parameters passed graphics::plot() plot Logical scalar. TRUE (default), function desired statistic. ... case plot methods, arguments passed graphics::plot. skip_zeros Logical scalar. FALSE return entries transition matrix.","code":""},{"path":"/reference/epiworld-data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Accessing the database of epiworld — epiworld-data","text":"get_hist_total function returns object class epiworld_hist_total. get_today_total function returns named vector total number individuals state end simulation. get_hist_virus function returns object class epiworld_hist_virus. get_hist_tool function returns object epiworld_hist_virus. get_transition_probability function returns object class matrix. get_reproductive_number function returns object class epiworld_repnum. plot function returns plot reproductive number time. get_hist_transition_matrix returns data.frame four columns: \"state_from\", \"state_to\", \"date\", \"counts.\" .array method epiworld_hist_transition objects turns data.frame returned get_hist_transition_matrix array nstates x nstates x (ndays + 1) entries, first entry initial state. plot_incidence function returns plot originating object get_hist_transition_matrix. plot function returns plot originates epiworld_hist_transition object. function get_transmissions returns data.frame following columns: date, source, target, virus_id, virus, source_exposure_date. function get_generation_time returns data.frame following columns: \"agent\", \"virus_id\", \"virus\", \"date\", \"gentime\". function plot_generation_time wrapper plot get_generation_time.","code":""},{"path":"/reference/epiworld-data.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Accessing the database of epiworld — epiworld-data","text":"plot_reproductive_number function wrapper around get_reproductive_number plots result. plot_incidence function wrapper get_hist_transition_matrix plot method. plot method epiworld_hist_transition class plots daily incidence state. function returns data frame used plotting.","code":""},{"path":[]},{"path":"/reference/epiworld-data.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Accessing the database of epiworld — epiworld-data","text":"","code":"# SEIR Connected seirconn <- ModelSEIRCONN( name = \"Disease\", n = 10000, prevalence = 0.1, contact_rate = 2.0, transmission_rate = 0.8, incubation_days = 7.0, recovery_rate = 0.3 ) # Running the simulation for 50 steps (days) set.seed(937) run(seirconn, 50) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. # Retrieving the transition probability get_transition_probability(seirconn) #> Susceptible Exposed Infected Recovered #> Susceptible 0.9001378 0.09986219 0.0000000 0.0000000 #> Exposed 0.0000000 0.85468656 0.1453134 0.0000000 #> Infected 0.0000000 0.00000000 0.7024578 0.2975422 #> Recovered 0.0000000 0.00000000 0.0000000 1.0000000 # Retrieving date, state, and counts dataframe including any added tools get_hist_tool(seirconn) #> [1] date tool_id tool state counts #> <0 rows> (or 0-length row.names) # Retrieving overall date, state, and counts dataframe head(get_hist_total(seirconn)) #> date state counts #> 1 0 Susceptible 9000 #> 2 0 Exposed 1000 #> 3 0 Infected 0 #> 4 0 Recovered 0 #> 5 1 Susceptible 9000 #> 6 1 Exposed 859 # Retrieving date, state, and counts dataframe by variant head(get_hist_virus(seirconn)) #> date virus_id virus state counts #> 1 0 0 Disease Susceptible 0 #> 2 0 0 Disease Exposed 1000 #> 3 0 0 Disease Infected 0 #> 4 0 0 Disease Recovered 0 #> 5 1 0 Disease Susceptible 0 #> 6 1 0 Disease Exposed 859 # Retrieving (and plotting) the reproductive number rp <- get_reproductive_number(seirconn) plot(rp) # Also equivalent to plot_reproductive_number(seirconn) # We can go further and get all the history t_hist <- get_hist_transition_matrix(seirconn) head(t_hist) #> state_from state_to date counts #> 1 Susceptible Susceptible 0 9000 #> 2 Exposed Susceptible 0 0 #> 3 Infected Susceptible 0 0 #> 4 Recovered Susceptible 0 0 #> 5 Susceptible Exposed 0 1000 #> 6 Exposed Exposed 0 0 # And turn it into an array as.array(t_hist)[,,1:3] #> , , 0 #> #> Susceptible Exposed Infected Recovered #> Susceptible 9000 1000 0 0 #> Exposed 0 0 0 0 #> Infected 0 0 0 0 #> Recovered 0 0 0 0 #> #> , , 1 #> #> Susceptible Exposed Infected Recovered #> Susceptible 9000 0 0 0 #> Exposed 0 859 141 0 #> Infected 0 0 0 0 #> Recovered 0 0 0 0 #> #> , , 2 #> #> Susceptible Exposed Infected Recovered #> Susceptible 8805 195 0 0 #> Exposed 0 753 106 0 #> Infected 0 0 95 46 #> Recovered 0 0 0 0 #> # We cam also get (and plot) the incidence, as well as # the generation time inci <- plot_incidence(seirconn) gent <- plot_generation_time(seirconn)"},{"path":"/reference/epiworld-methods.html","id":null,"dir":"Reference","previous_headings":"","what":"Methods for epiworldR objects — epiworld-methods","title":"Methods for epiworldR objects — epiworld-methods","text":"functions described section methods objects class epiworld_model. Besides printing plotting, methods provide access manipulate model parameters, getting information model running simulation.","code":""},{"path":"/reference/epiworld-methods.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Methods for epiworldR objects — epiworld-methods","text":"","code":"queuing_on(x) queuing_off(x) verbose_off(x) verbose_on(x) run(model, ndays, seed = sample.int(10000, 1)) # S3 method for epiworld_model summary(object, ...) get_states(x) get_param(x, pname) set_param(x, pname, pval) set_name(x, mname) get_name(x) get_n_viruses(x) get_n_tools(x) get_ndays(x) get_n_replicates(x) size(x) set_agents_data(model, data) get_agents_data_ncols(model) get_virus(model, virus_pos) get_tool(model, tool_pos)"},{"path":"/reference/epiworld-methods.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Methods for epiworldR objects — epiworld-methods","text":"x object class epiworld_model. model Model object. ndays Number days (steps) simulation. seed Seed set initializing random number generator. object Object class epiworld_model. ... Additional arguments. pname String. Name parameter. pval Numeric. Value parameter. mname String. Name model. data numeric matrix. virus_pos Integer. Relative location (starting 0) virus model tool_pos Integer. Relative location (starting 0) tool model","code":""},{"path":"/reference/epiworld-methods.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Methods for epiworldR objects — epiworld-methods","text":"verbose_on verbose_off functions return model, however verbose_off returns model progress bar. run function returns simulated model class epiworld_model. summary function prints detailed view model, returns model invisibly. get_states function returns unique states found model. get_param function returns selected parameter model object class epiworld_model. set_param function return value instead alters parameter value. set_name function return value instead alters object epiworld_model. get_name returns name model. get_n_viruses returns number viruses model. get_n_tools returns number tools model. get_ndays returns number days model. get_n_replicates returns number replicates model. size.epiworld_model returns number agents model. 'set_agents_data' function returns object class DataFrame. 'get_agents_data_ncols' returns number columns model dataframe. 'get_virus' returns virus. get_tool returns tool.","code":""},{"path":"/reference/epiworld-methods.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Methods for epiworldR objects — epiworld-methods","text":"verbose_on verbose_off functions activate deactivate printing progress screen, respectively. functions return model (x) invisibly.","code":""},{"path":"/reference/epiworld-methods.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Methods for epiworldR objects — epiworld-methods","text":"","code":"model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) # Queuing - If you wish to implement the queuing function, declare whether # you would like it \"on\" or \"off\", if any. queuing_on(model_sirconn) #> Warning: SIR Connected models do not have queue. queuing_off(model_sirconn) run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Verbose - \"on\" prints the progress bar on the screen while \"off\" # deactivates the progress bar. Declare which function you want to implement, # if any. verbose_on(model_sirconn) verbose_off(model_sirconn) run(model_sirconn, ndays = 100, seed = 1912) get_states(model_sirconn) # Returns all unique states found within the model. #> [1] \"Susceptible\" \"Infected\" \"Recovered\" get_param(model_sirconn, 'Contact rate') # Returns the value of the selected #> [1] 5 # parameter within the model object. # In order to view the parameters, # run the model object and find the # \"Model parameters\" section. set_param(model_sirconn, 'Contact rate', 2) # Allows for adjustment of model # parameters within the model # object. In this example, the # Contact rate parameter is # changed to 2. You can now rerun # the model to observe any # differences. set_name(model_sirconn, 'My Epi-Model') # This function allows for setting # a name for the model. Running the # model object, the name of the model # is now reflected next to \"Name of # the model\". get_name(model_sirconn) # Returns the set name of the model. #> [1] \"My Epi-Model\" get_n_viruses(model_sirconn) # Returns the number of viruses in the model. #> [1] 1 # In this case, there is only one virus: # \"COVID-19\". get_n_tools(model_sirconn) # Returns the number of tools in the model. In #> [1] 0 # this case, there are zero tools. get_ndays(model_sirconn) # Returns the length of the simulation in days. This #> [1] 100 # will match \"ndays\" within the \"run\" function. get_n_replicates(model_sirconn) # Returns the number of replicates of the #> [1] 2 # model. size(model_sirconn) # Returns the population size in the model. In this case, #> [1] 10000 # there are 10,000 agents in the model. # Set Agents Data # First, your data matrix must have the same number of rows as agents in the # model. Below is a generated matrix which will be passed into the # \"set_agents_data\" function. data <- matrix(data=runif(20000, min=0, max=100), nrow=10000, ncol=2) set_agents_data(model_sirconn, data) get_agents_data_ncols(model_sirconn) # Returns number of columns #> [1] 2 get_virus(model_sirconn, 0) # Returns information about the first virus in #> Virus : COVID-19 #> Id : 0 #> state_init : 1 #> state_post : 2 #> state_removed : 2 #> queue_init : 2 #> queue_post : -2 #> queue_removed : -99 # the model (index begins at 0). add_tool(model_sirconn, tool(\"Vaccine\", .9, .9, .5, 1), proportion = .5) get_tool(model_sirconn, 0) # Returns information about the first tool in the #> Tool : Vaccine #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 # model. In this case, there are no tools so an # error message will occur."},{"path":"/reference/epiworldR-package.html","id":null,"dir":"Reference","previous_headings":"","what":"epiworldR — epiworldR-package","title":"epiworldR — epiworldR-package","text":"flexible framework Agent-Based Models (ABM), 'epiworldR' package provides methods prototyping disease outbreaks transmission models using 'C++' backend, making fast. supports multiple epidemiological models, including Susceptible-Infected-Susceptible (SIS), Susceptible-Infected-Removed (SIR), Susceptible-Exposed-Infected-Removed (SEIR), others, involving arbitrary mitigation policies multiple-disease models. Users can specify infectiousness/susceptibility rates function agents' features, providing great complexity model dynamics. Furthermore, 'epiworldR' ideal simulation studies featuring large populations.","code":""},{"path":[]},{"path":"/reference/epiworldR-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"epiworldR — epiworldR-package","text":"Maintainer: Derek Meyer derekmeyer37@gmail.com (ORCID) Authors: George Vega Yon g.vegayon@gmail.com (ORCID) contributors: Susan Holmes (ORCID) (JOSS reviewer) [reviewer] Abinash Satapathy (ORCID) (JOSS reviewer) [reviewer] Carinogurjao [reviewer] Centers Disease Control Prevention (Award number 1U01CK000585; 75D30121F00003) [funder]","code":""},{"path":"/reference/get_agents.html","id":null,"dir":"Reference","previous_headings":"","what":"Agents in epiworldR — get_agents","title":"Agents in epiworldR — get_agents","text":"functions provide read-access agents model. get_agents function returns object class epiworld_agents contains information agents model. get_agent function returns information single agent. get_state function returns state single agent.","code":""},{"path":"/reference/get_agents.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Agents in epiworldR — get_agents","text":"","code":"get_agents(model) # S3 method for epiworld_agents [(x, i) # S3 method for epiworld_agent print(x, compressed = FALSE, ...) # S3 method for epiworld_agents print(x, compressed = TRUE, max_print = 10, ...) get_state(x)"},{"path":"/reference/get_agents.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Agents in epiworldR — get_agents","text":"model object class epiworld_model. x object class epiworld_agents Index (id) agent (0 n-1) compressed Logical scalar. FALSE, prints detailed information agent. ... Ignored max_print Integer scalar. Maximum number agents print.","code":""},{"path":"/reference/get_agents.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Agents in epiworldR — get_agents","text":"get_agents function returns object class epiworld_agents. [ method returns object class epiworld_agent. print function returns information individual agent class epiworld_agent. get_state function returns state epiworld_agents object.","code":""},{"path":[]},{"path":"/reference/get_agents.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Agents in epiworldR — get_agents","text":"","code":"model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. x <- get_agents(model_sirconn) # Storing all agent information into object of # class epiworld_agents print(x, compressed = FALSE, max_print = 5) # Displaying detailed information of #> Agents from the model \"Susceptible-Infected-Removed (SIR) (connected)\": #> Information about agent id 0 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> Information about agent id 1 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> Information about agent id 2 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> Information about agent id 3 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> Information about agent id 4 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 #> ... 9995 more agents ... # the first 5 agents using # compressed=F. Using compressed=T # results in less-detailed # information about each agent. x[0] # Print information about the first agent. Substitute the agent of #> Information about agent id 0 #> State : Recovered (2) #> Virus count : 0 #> Tool count : 0 #> Neigh. count : 0 # interest's position where '0' is."},{"path":"/reference/global-actions.html","id":null,"dir":"Reference","previous_headings":"","what":"Global Actions — global-actions","title":"Global Actions — global-actions","text":"Global actions functions executed time step simulation. useful implementing interventions, vaccination, isolation, social distancing means tools.","code":""},{"path":"/reference/global-actions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Global Actions — global-actions","text":"","code":"globalaction_tool(tool, prob, name = get_name_tool(tool), day = -99) globalaction_tool_logit( tool, vars, coefs, name = get_name_tool(tool), day = -99 ) globalaction_set_params( param, value, name = paste0(\"Set \", param, \" to \", value), day = -99 ) globalaction_fun(fun, name = deparse(substitute(fun)), day = -99) add_global_action(model, action)"},{"path":"/reference/global-actions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Global Actions — global-actions","text":"tool object class tool. prob Numeric scalar. probability 0 1. name Character scalar. name action. day Integer. day (step) action executed (see details). vars Integer vector. position variables model. coefs Numeric vector. coefficients logistic regression. param Character scalar. name parameter set. value Numeric scalar. value parameter. fun Function. function executed. model object class epiworld_model. action global action.","code":""},{"path":"/reference/global-actions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Global Actions — global-actions","text":"globalaction_set_params function returns object class epiworld_globalaction_set_param epiworld_globalaction. globalaction_tool returns object class epiworld_globalaction_tool epiworld_globalaction. globalaction_tool_logit returns object class epiworld_globalaction_tool_logit epiworld_globalaction. function add_global_action returns model added action.","code":""},{"path":"/reference/global-actions.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Global Actions — global-actions","text":"function globalaction_tool_logit allows specify logistic regression model probability using tool. model specified vector coefficients coefs vector variables vars. vars integer vector indicating position variables model. function globalaction_set_param allows set parameter model. parameter specified name param value value. function globalaction_fun allows specify function executed given day. function object must receive object class epiworld_model argument. function add_global_action adds global action model. model checks actions executed time step. added action matches current time step, action executed. day negative, action executed time step. day positive, action executed specified time step.","code":""},{"path":[]},{"path":"/reference/global-actions.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Global Actions — global-actions","text":"","code":"# Simple model model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) # Creating a tool epitool <- tool( name = \"Vaccine\", susceptibility_reduction = .9, transmission_reduction = .5, recovery_enhancer = .5, death_reduction = .9 ) # Adding a global action vaccine_day_20 <- globalaction_tool(epitool, .2, day = 20) add_global_action(model_sirconn, vaccine_day_20) # Running and printing run(model_sirconn, ndays = 40, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. model_sirconn #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 10000 agents, 1 virus(es), and 1 tool(s). #> The model has 3 states. #> The final distribution is: 2000 Susceptible, 0 Infected, and 8000 Recovered. plot_incidence(model_sirconn) # Example 2: Changing the contact rate ------------------------------------- model_sirconn2 <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) closure_day_10 <- globalaction_set_params(\"Contact rate\", 0, day = 10) add_global_action(model_sirconn2, closure_day_10) # Running and printing run(model_sirconn2, ndays = 40, seed = 1912) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. model_sirconn2 #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 10000 agents, 1 virus(es), and 0 tool(s). #> The model has 3 states. #> The final distribution is: 2127 Susceptible, 0 Infected, and 7873 Recovered. plot_incidence(model_sirconn2) # Example using `globalaction_fun` to record the state of the # agents at each time step. # We start by creating an SIR connected model model <- ModelSIRCONN( name = \"SIR with Global Saver\", n = 1000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.3 ) # We create the object where the history of the agents will be stored agents_history <- NULL # This function prints the total number of agents in each state # and stores the history of the agents in the object `agents_history` hist_saver <- function(m) { message(\"Today's totals are: \", paste(get_today_total(m), collapse = \", \")) # We use the `<<-` operator to assign the value to the global variable # `agents_history` (see ?\"<<-\") agents_history <<- cbind( agents_history, get_agents_states(m) ) }"},{"path":"/reference/run_multiple.html","id":null,"dir":"Reference","previous_headings":"","what":"Run multiple simulations at once — run_multiple","title":"Run multiple simulations at once — run_multiple","text":"run_multiple function allows running multiple simulations . available, users can take advantage parallel computing speed process.","code":""},{"path":"/reference/run_multiple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Run multiple simulations at once — run_multiple","text":"","code":"run_multiple( m, ndays, nsims, seed = sample.int(10000, 1), saver = make_saver(), reset = TRUE, verbose = TRUE, nthreads = 1L ) run_multiple_get_results(m) make_saver(..., fn = \"\")"},{"path":"/reference/run_multiple.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Run multiple simulations at once — run_multiple","text":"m, ndays, seed See run. nsims Integer. Number replicats saver object class epiworld_saver. reset TRUE (default,) resets simulation. verbose TRUE (default,) prints progress bar. nthreads Integer. Number threads (parallel computing.) ... List strings (characters) specifying save (see details). fn file name pattern.","code":""},{"path":"/reference/run_multiple.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Run multiple simulations at once — run_multiple","text":"case make_saver, list class epiworld_saver. run_multiple function runs specified number simulations returns model object class epiworld_model. run_multiple_get_results function returns named list data specified make_saver.","code":""},{"path":"/reference/run_multiple.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Run multiple simulations at once — run_multiple","text":"Currently, following elements can saved: total_hist History model (total numbers per time). virus_info Information viruses. virus_hist Changes viruses. tool_info Information tools. tool_hist Changes tools. transmission Transmission events. transition Transition matrices. reproductive Reproductive number. generation Estimation generation time.","code":""},{"path":"/reference/run_multiple.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Run multiple simulations at once — run_multiple","text":"","code":"model_sir <- ModelSIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 1000, contact_rate = 2, transmission_rate = 0.9, recovery_rate = 0.1 ) # Generating a saver saver <- make_saver(\"total_hist\", \"reproductive\") # Running and printing run_multiple(model_sir, ndays = 100, nsims = 50, saver = saver, nthreads = 2) #> Starting multiple runs (50) using 2 thread(s) #> _________________________________________________________________________ #> _________________________________________________________________________ #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Retrieving the results ans <- run_multiple_get_results(model_sir) head(ans$total_hist) #> sim_num date nviruses state counts #> 1 1 0 1 Susceptible 990 #> 2 1 0 1 Infected 10 #> 3 1 0 1 Recovered 0 #> 4 1 1 1 Susceptible 974 #> 5 1 1 1 Infected 26 #> 6 1 1 1 Recovered 0 head(ans$reproductive) #> sim_num virus_id virus source source_exposure_date rt #> 1 1 0 COVID-19 175 10 0 #> 2 1 0 COVID-19 672 10 0 #> 3 1 0 COVID-19 718 10 0 #> 4 1 0 COVID-19 210 9 0 #> 5 1 0 COVID-19 448 8 0 #> 6 1 0 COVID-19 592 8 0 # Plotting multi_sir <- run_multiple_get_results(model_sir)$total_hist multi_sir <- multi_sir[multi_sir$date <= 20,] plot(multi_sir)"},{"path":"/reference/tool.html","id":null,"dir":"Reference","previous_headings":"","what":"Tools in epiworld — tool","title":"Tools in epiworld — tool","text":"Tools functions affect agents react virus. can used simulate effects vaccination, isolation, social distancing.","code":""},{"path":"/reference/tool.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tools in epiworld — tool","text":"","code":"tool( name, susceptibility_reduction, transmission_reduction, recovery_enhancer, death_reduction ) set_name_tool(tool, name) get_name_tool(tool) add_tool(model, tool, proportion) add_tool_n(model, tool, n) rm_tool(model, tool_pos) rm_tool(model, tool_pos) tool_fun_logit(vars, coefs, model) set_susceptibility_reduction(tool, prob) set_susceptibility_reduction_ptr(tool, model, param) set_susceptibility_reduction_fun(tool, model, tfun) set_transmission_reduction(tool, prob) set_transmission_reduction_ptr(tool, model, param) set_transmission_reduction_fun(tool, model, tfun) set_recovery_enhancer(tool, prob) set_recovery_enhancer_ptr(tool, model, param) set_recovery_enhancer_fun(tool, model, tfun) set_death_reduction(tool, prob) set_death_reduction_ptr(tool, model, param) set_death_reduction_fun(tool, model, tfun) # S3 method for epiworld_agents_tools print(x, max_print = 10, ...)"},{"path":"/reference/tool.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tools in epiworld — tool","text":"name Name tool susceptibility_reduction Numeric. Proportion reduces susceptibility. transmission_reduction Numeric. Proportion reduces transmission. recovery_enhancer Numeric. Proportion improves recovery. death_reduction Numeric. Proportion reduces probability death.e tool object class epiworld_tool model Model proportion case add_tool, proportion, otherwise, integer. n positive integer. Number agents initially tool. tool_pos Positive integer. Index tool's position model. vars Integer vector. Indices (starting 0) positions variables used compute logit probability. coefs Numeric vector. length vars, vector coefficients associated logit probability. prob Numeric scalar. probability (zero one). param Character scalar. Name parameter featured model added tool (see details). tfun object class epiworld_tool_fun. x object class epiworld_agents_tools. max_print Numeric scalar. Maximum number tools print. ... Currently ignored.","code":""},{"path":"/reference/tool.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tools in epiworld — tool","text":"tool function creates tool class epiworld_tool. set_name_tool function assigns name tool class epiworld_tool returns tool. get_name_tool function returns name tool class epiworld_tool. add_tool_n function adds specified tool model class epiworld_model specified count n. rm_tool function removes specified tool model. set_susceptibility_reduction function assigns probability reduction specified tool class epiworld_tool. set_transmission_reduction function assigns probability reduction specified tool class epiworld_tool. set_recovery_enhancer function assigns probability increase specified tool class epiworld_tool. set_death_reduction function assigns probability decrease specified tool class epiworld_tool.","code":""},{"path":"/reference/tool.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Tools in epiworld — tool","text":"name epiworld_tool object can manipulated functions set_name_tool() get_name_tool(). add_tool function adds specified tool model class epiworld_model specified proportion. case set_susceptibility_reduction_ptr, set_transmission_reduction_ptr, set_recovery_enhancer, set_death_reduction_ptr, corresponding parameters passed pointer tool. implication using pointers values read directly model object, changes reflected.","code":""},{"path":"/reference/tool.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tools in epiworld — tool","text":"","code":"# Simple model model_sirconn <- ModelSIRCONN( name = \"COVID-19\", n = 10000, prevalence = 0.01, contact_rate = 5, transmission_rate = 0.4, recovery_rate = 0.95 ) # Running and printing run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. plot(model_sirconn) epitool <- tool( name = \"Vaccine\", susceptibility_reduction = .9, transmission_reduction = .5, recovery_enhancer = .5, death_reduction = .9 ) epitool #> Tool : Vaccine #> Id : (empty) #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 set_name_tool(epitool, 'Pfizer') # Assigning name to the tool get_name_tool(epitool) # Returning the name of the tool #> [1] \"Pfizer\" add_tool(model_sirconn, epitool, .5) run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. model_sirconn #> ________________________________________________________________________________ #> Susceptible-Infected-Removed (SIR) (connected) #> It features 10000 agents, 1 virus(es), and 1 tool(s). #> The model has 3 states. #> The final distribution is: 8344 Susceptible, 0 Infected, and 1656 Recovered. plot(model_sirconn) # To declare a certain number of individuals with the tool rm_tool(model_sirconn, 0) # Removing epitool from the model add_tool_n(model_sirconn, epitool, 5500) run(model_sirconn, ndays = 100, seed = 1912) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Adjusting probabilities due to tool set_susceptibility_reduction(epitool, 0.1) # Susceptibility reduction #> Tool : Pfizer #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 set_transmission_reduction(epitool, 0.2) # Transmission reduction #> Tool : Pfizer #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 set_recovery_enhancer(epitool, 0.15) # Probability increase of recovery #> Tool : Pfizer #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 set_death_reduction(epitool, 0.05) # Probability reduction of death #> Tool : Pfizer #> Id : 0 #> state_init : -99 #> state_post : -99 #> queue_init : 0 #> queue_post : 0 run(model_sirconn, ndays = 100, seed = 1912) # Run model to view changes #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # Using the logit function -------------- sir <- ModelSIR( name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery_rate = 0.1 ) # Adding a small world population agents_smallworld( sir, n = 10000, k = 5, d = FALSE, p = .01 ) # Creating a tool mask_wearing <- tool( name = \"Mask\", susceptibility_reduction = 0.0, transmission_reduction = 0.3, # Only transmission recovery_enhancer = 0.0, death_reduction = 0.0 ) add_tool(sir, mask_wearing, .5) run(sir, ndays = 50, seed = 11) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. hist_0 <- get_hist_total(sir) # And adding features dat <- cbind( female = sample.int(2, 10000, replace = TRUE) - 1, x = rnorm(10000) ) set_agents_data(sir, dat) # Creating the logit function tfun <- tool_fun_logit( vars = c(0L, 1L), coefs = c(-1, 1), model = sir ) # The infection prob is lower hist(plogis(dat %*% rbind(.5,1))) tfun # printing #> An epiworld_tool_function object. #> (model: Susceptible-Infected-Recovered (SIR)) #> This function was built using -tool_fun_logit()-. and it features the following coefficients: #> 0: -1.00 #> 1: 1.00 set_susceptibility_reduction_fun( tool = get_tool(sir, 0), model = sir, tfun = tfun ) run(sir, ndays = 50, seed = 11) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. hist_1 <- get_hist_total(sir) op <- par(mfrow = c(1, 2)) plot(hist_0); abline(v = 30) plot(hist_1); abline(v = 30) par(op)"},{"path":"/reference/virus.html","id":null,"dir":"Reference","previous_headings":"","what":"Virus design — virus","title":"Virus design — virus","text":"Viruses can considered anything can transmitted (e.g., diseases, well ideas.) models epiworldR can feature multiple viruses.","code":""},{"path":"/reference/virus.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Virus design — virus","text":"","code":"virus( name, prob_infecting, recovery_rate = 0.5, prob_death = 0, post_immunity = -1, incubation = 7 ) set_name_virus(virus, name) get_name_virus(virus) add_virus(model, virus, proportion) add_virus_n(model, virus, n) virus_set_state(virus, init, end, removed) rm_virus(model, virus_pos) virus_fun_logit(vars, coefs, model) set_prob_infecting(virus, prob) set_prob_infecting_ptr(virus, model, param) set_prob_infecting_fun(virus, model, vfun) set_prob_recovery(virus, prob) set_prob_recovery_ptr(virus, model, param) set_prob_recovery_fun(virus, model, vfun) set_prob_death(virus, prob) set_prob_death_ptr(virus, model, param) set_prob_death_fun(virus, model, vfun) set_incubation(virus, incubation) set_incubation_ptr(virus, model, param) set_incubation_fun(virus, model, vfun) # S3 method for epiworld_agents_viruses print(x, max_print = 10, ...)"},{"path":"/reference/virus.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Virus design — virus","text":"name virus prob_infecting Numeric scalar. Probability infection (transmission). recovery_rate Numeric scalar. Probability recovery. prob_death Numeric scalar. Probability death. post_immunity Numeric scalar. Post immunity (prob re-infection). incubation Numeric scalar. Incubation period (days) virus. virus object class epiworld_virus model object class epiworld_model. proportion case add_virus, proportion, otherwise, integer. n positive integer. Initial count agents virus. init, end, removed states acquiring virus, removing virus, removing agent result virus, respectively. virus_pos Positive integer. Index virus's position model. vars Integer vector. Indices (starting 0) positions variables used compute logit probability. coefs Numeric vector. length vars, vector coefficients associated logit probability. prob Numeric scalar. probability (zero one). param Character scalar. Name parameter featured model added virus (see details). vfun object class epiworld_virus_fun. x object class epiworld_agents_viruses. max_print Numeric scalar. Maximum number viruses print. ... Currently ignored.","code":""},{"path":"/reference/virus.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Virus design — virus","text":"set_name_virus function return value, merely assigns name virus choice. get_name_virus function returns name virus class epiworld_virus. add_virus function return value, instead adds virus choice model object class epiworld_model. add_virus_n function return value, instead adds specified number agents virus choice model object class epiworld_model. virus_set_state function return value assigns epidemiological properties specified virus class epiworld_virus. rm_virus function return value, instead removes specified virus model class epiworld_model. set_prob_infecting function return value, instead assigns probability infection specified virus class epiworld_virus. set_prob_recovery function return value, instead assigns probability recovery specified virus class epiworld_virus. set_prob_death function return value, instead assigns probability death specified virus class epiworld_virus. set_incubation function return value, instead assigns incubation period specified virus class epiworld_virus.","code":""},{"path":"/reference/virus.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Virus design — virus","text":"virus() function can used initialize virus. Virus features can modified using functions set_prob_*. function virus_fun_logit() creates \"virus function\" can evaluated transmission, recovery, death. name sugests, computes probabilities using logit function (see examples). name epiworld_virus object can manipulated functions set_name_virus() get_name_virus(). case set_prob_infecting_ptr, set_prob_recovery_ptr, set_prob_death_ptr, corresponding parameters passed pointer virus. implication using pointers values read directly model object, changes reflected.","code":""},{"path":"/reference/virus.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Virus design — virus","text":"","code":"mseirconn <- ModelSEIRCONN( name = \"COVID-19\", prevalence = 0.01, n = 10000, contact_rate = 4, incubation_days = 7, transmission_rate = 0.5, recovery_rate = 0.99 ) delta <- virus(\"Delta Variant\", 0, .5, .2, .01) # Adding virus and setting/getting virus name add_virus(mseirconn, delta, .3) set_name_virus(delta, \"COVID-19 Strain\") get_name_virus(delta) #> [1] \"COVID-19 Strain\" run(mseirconn, ndays = 100, seed = 992) #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. mseirconn #> ________________________________________________________________________________ #> Susceptible-Exposed-Infected-Removed (SEIR) (connected) #> It features 10000 agents, 2 virus(es), and 0 tool(s). #> The model has 4 states. #> The final distribution is: 3774 Susceptible, 102 Exposed, 18 Infected, and 6106 Recovered. rm_virus(mseirconn, 0) # Removing the first virus from the model object add_virus_n(mseirconn, delta, 100) # Setting initial count of delta virus # to n = 100 # Setting parameters for the delta virus manually set_prob_infecting(delta, 0.5) set_prob_recovery(delta, 0.9) set_prob_death(delta, 0.01) run(mseirconn, ndays = 100, seed = 992) # Run the model to observe changes #> _________________________________________________________________________ #> Running the model... #> ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> done. # If the states were (for example): # 1: Infected # 2: Recovered # 3: Dead delta2 <- virus(\"Delta Variant 2\", 0, .5, .2, .01) virus_set_state(delta2, 1, 2, 3) # Using the logit function -------------- sir <- ModelSIR( name = \"COVID-19\", prevalence = 0.01, transmission_rate = 0.9, recovery = 0.1 ) # Adding a small world population agents_smallworld( sir, n = 10000, k = 5, d = FALSE, p = .01 ) run(sir, ndays = 50, seed = 11) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(sir) # And adding features dat <- cbind( female = sample.int(2, 10000, replace = TRUE) - 1, x = rnorm(10000) ) set_agents_data(sir, dat) # Creating the logit function vfun <- virus_fun_logit( vars = c(0L, 1L), coefs = c(-1, 1), model = sir ) # The infection prob is lower hist(plogis(dat %*% rbind(-1,1))) vfun # printing #> An epiworld_virus_function object. #> (model: Susceptible-Infected-Recovered (SIR)) #> This function was built using -virus_fun_logit()-. and it features the following coefficients: #> 0: -1.00 #> 1: 1.00 set_prob_infecting_fun( virus = get_virus(sir, 0), model = sir, vfun = vfun ) run(sir, ndays = 50, seed = 11) #> _________________________________________________________________________ #> |Running the model... #> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done. #> | done. plot(sir)"},{"path":"/news/index.html","id":"epiworldr-00-39000-development-version","dir":"Changelog","previous_headings":"","what":"epiworldR 0.0-3.9000 (development version)","title":"epiworldR 0.0-3.9000 (development version)","text":"Added missing checks tool class adding model add_too_n. Various small improvements.","code":""},{"path":"/news/index.html","id":"epiworldr-00-3","dir":"Changelog","previous_headings":"","what":"epiworldR 0.0-3","title":"epiworldR 0.0-3","text":"CRAN release: 2023-09-08 Added following models: ModelSEIRD, ModelSEIRDCONN, ModelSIRD, ModelSIRDCONN, ModelSISD. Fixed bug reported issue 6.","code":""},{"path":"/news/index.html","id":"epiworldr-00-2","dir":"Changelog","previous_headings":"","what":"epiworldR 0.0-2","title":"epiworldR 0.0-2","text":"CRAN release: 2023-06-21 Added NEWS.md file track changes package. Fixed bug reported CRAN reference nullptr. Renamed arguments across Models favor consistency. Figures now show virus/tool name instead id. Fixed bug run_multiple added tests (C++). Redid autoconf Makevars using RcppArmadillo template checking OpenMP.","code":""}]